<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>LGI</title> <link rel="stylesheet" type="text/css" href="default.css" /> </head> <body> <h1>LGI</h1> <p>LGI is gobject-introspection based dynamic Lua binding to GObject based libraries. It allows using GObject-based libraries directly from Lua.</p> <p>Licensed under <a href="http://www.opensource.org/licenses/mit-license.php">MIT-style</a> license, see LICENSE file for full text.</p> <p>Home of the project is on <a href="http://github.com/pavouk/lgi">GitHub</a>.</p> <p>LGI is tested and compatible with standard Lua 5.1 and Lua 5.2 and recent LuaJIT 2 betas. Compatibility with other Lua implementations is not tested yet.</p> <p>If you need to support pre-gobject-introspection GTK (ancient GTK+ 2.x releases), use <a href="http://sourceforge.net/projects/lua-gnome/">Lua-Gnome</a>.</p> <h2>Installation:</h2> <p>In order to be able to compile native part of lgi, gobject-introspection >= 0.10.8 development package must be installed, although preferred version is >= 1.30. The development package is called <code>libgirepository1.0-dev</code> on debian-based systems (like Ubuntu) and <code>gobject-introspection-devel</code> on RedHat-based systems (like Fedora).</p> <p>Using LuaRocks:</p> <pre><code>luarocks install lgi </code></pre> <p>Alternatively, use make-based installation:</p> <pre><code>make [sudo] make install [PREFIX=<prefix>] [DESTDIR=<destdir>] </code></pre> <p>Please note that on BSD-systems you may need to use 'gmake'.</p> <h2>Usage</h2> <p>See examples in samples/ directory. Documentation is available in doc/ directory in markdown format. Process it with your favorite markdown processor if you want to read it in HTML.</p> <h2>History</h2> <h3>0.6.2 (25-Jun-2012)</h3> <p> - Avoid unexpected dependency on cairo-devel, cairo-runtime is now enough - Make set<em>resident() more robust and fix stack leak for lua5.2 case, avoid useless warning when set</em>resident() fails (to accomodate for static linking case). - Fix small memory leak (mutex) which occured once per opened lua_State using lgi.</p> <h3>0.6.1 (19-Jun-2012)</h3> <p> - objects and structs: actually implement '<em>type' property as documented - tests: Fix regression tests for less common platforms - Pango: Add a few missing overrides - cairo: Fix Context:user</em>to<em>device() family of methods. - GStreamer: Add support for transfer!=none for input objects. This is needed to avoid leaks caused by strange usage of transfer annotations of gstreamer-0.10 - GStreamer: Add more missing overrides - GStreamer: Fix and improve samples - Various fixes for usecase when lua context with loaded lgi is closed and opened again - Gtk: Add missing Gtk.Builder:connect</em>signals() override</p> <h3>0.6 (22-May-2012)</h3> <p>- Add cairo bindings, cairo sample and finish some gtk-demo parts which were requiring cairo</p> <h3>0.5.1 (not officially released)</h3> <p>- Fix a few problems on more exotic architectures (s390x, mips, ia64). - Allow passing <code>byte.buffer</code> when UTF8 string is requested.</p> <h3>0.5 (15-Apr-2012)</h3> <ul> <li>Port gtk3-demo to Lua code. Try running 'lua samples/gtk-demo/main.lua'</li> <li>Finish override set for Gtk</li> <li>Extend and document features for interfacing LGI with external libraries (exporting and importing objects and structures via lightuserdata pointers).</li> <li>Fix: a few bugs with resolving bitflags values</li> <li>Fix: a few bugs in coroutines-as-callbacks feature</li> <li>Fix: workaround for crashing bug in gobject-introspection 1.32.0</li> <li>Fix: don't try to squeeze GType into lua_Number any more; this could cause crashes on some 64bit arches.</li> </ul> <h3>0.4 (4-Jan-2012)</h3> <ul> <li>Changed handling of enums and bitflags, switched from marshaling them as numbers to prefering strings for enums and tables (sets or lists) for bitflags. Numeric values still work for Lua->C marshalling, but backward compatibility is broken in C->Lua enum and bitflags marshalling.</li> <li>Compatible with Lua 5.2 and LuaJIT</li> <li>Added standardized way for overrides to handle constructor argument table array part.</li> <li>Existing Gtk overrides reworked and improved, there is now a way to describe and create widget hierarchies in Lua-friendly way. See <code>docs/gtk.lua</code>, chapter about <code>Gtk.Container</code> for overview and samples.</li> <li>Various bugfixes and portability fixes.</li> </ul> <h3>0.3 (28-Nov-2011)</h3> <ul> <li>Project hosting moved to GitHub.</li> <li>Build system switched from <code>waf</code> to simple Makefile-based one</li> <li>Added automatic locking of thread-sensitive libraries (Gdk and Clutter). There is no need to add <code>Gdk.threads_enter()</code>, <code>Gdk.threads_leave()</code> and <code>Clutter.threads_enter()</code>, <code>Clutter.threads_leave()</code> pairs into application, lgi handles this automatically.</li> <li>Added new sample <code>samples/console.lua</code>, which implements already quite usable Lua console using Gtk widgets.</li> <li>Fixes for compatibility with older gobject-introspection 0.10.8 package</li> <li>Testsuite is not built automatically, because building it can be apparently problematic on some systems, causing installation failure even when testsuite is not needed at all.</li> <li>Remove <code>setlocale()</code> initialization, which could break Lua when used with some regional locales. The downside of this change is that marshaling file names containing non-ASCII characters on systems which define <code>G_BROKEN_FILENAMES</code> environment variable (probably only Fedora 15) does not work now.</li> </ul> <h3>0.2 (7-Nov-2011)</h3> <p>First public release</p> </body></html>