Multiple Lua States


Rings is a library which provides a way to create new Lua states from within Lua. It also offers a simple way to communicate between the creator (master) and the created (slave) states.

Rings is free software and uses the same license as Lua 5.x (MIT).


Rings version 1.3.0 is now available for download.


Rings can be installed using LuaRocks by simply typing:

luarocks install rings

Rings can also be downloaded in source code from its Github page.


Version 1.3.0 [30/Jan/2013]
  • Support for Lua 5.2
Version 1.2.3 [20/Oct/2009]
  • Fixing an old reference to "arg" instead of {...} - Reported by MFarm
Version 1.2.2 [30/Jun/2008]
  • Fixed a stack handling issue (bug report and patch by Shmuel Zeigerman)
Version 1.2.1 [8/May/2008]
  • Fixed bug #2074 (old bugtracker) - Rings uses the deprecated function luaL_openlib (patch by Ignacio Burgueño)
Version 1.2 [18/Feb/2008]
  • rings.new now takes an optional environment to be used by remotedostring. If the environment is nil, it defaults to _M or _G.
  • Fixed a bug with interaction of rings and coroutines, rings was assuming a 1:1 mapping between lua_States and rings master and slave states, which is not true when coroutines/threads are involved. (bug found by Ignacio Burgueño)
Version 1.1 [11/Jun/2007]
Adapted to work with Lua 5.1.
Version 1.0 [10/Mar/2006]
First public version, works with Lua 5.0.


Rings was designed by Roberto Ierusalimschy and Tomás Guisasola as part of the Kepler Project. The implementation was coded by Tomás Guisasola.

Rings development was sponsored by Fábrica Digital.

Valid XHTML 1.0!