
Tue Jul 12
* first version
* simple calls to a few functions through a static function table

Thu Jul 14
* Perl script to get a list of functions and their parameter types
* this list is read at startup, practically all functions are callable now

Fri Jul 15
* widgets as userdata with metatable
* automatically determine class hierarchy
* methods of widgets are now callable

Sat Jul 16 08:57:00 CEST 2005
* get rid of global variables for the call function (use cclosure)
* callbacks called directly; gtk_main_loop used instead of gtk_main_iteration
* callback parameters have the correct type now
* callbacks can return values
* complete parsing of structure definitions by perl file + dump in funclist


Sun Jul 17 11:54:58 CEST 2005
* parse & dump enum
* complete parsing of structures
* read structure info and enum info into memory
* make enums available
* access to structures!


Fri Jul 22 01:25:54 CEST 2005
* integrate new hashing methods into libluagtk, debug
* generate compileable output for structure information


Sat Jul 23 11:50:45 CEST 2005
* structure information compiled in, works again
* enum information compiled in
* got rid of "funclist", all data now is compiled in.


Sun Jul 24 16:11:12 CEST 2005
* re-read of all the code, cleanup
* LONGPTR parameters can be used as input, too
* allow widget:connect() syntax
* properly works with a minimal function hash table
* G_TYPE_xxx constants in src/extra_enum
* VARARG parameters now work (only a few data types yet)
* gdk.new to create any type of structure



Thu Jul 28 05:59:52 CEST 2005
* handle some GValue conversions (boolean, integer, string)
* first attempts at including a Lua library to simplify some
  calls.


Sun Jul 31 21:40:51 CEST 2005
* override.lua functions used automatically
* use interfaces when searching for a method


Thu Aug  4 00:20:41 CEST 2005
* compile override.lua into the library to avoid a file dependency

Thu Aug  4 18:40:12 CEST 2005
* use gcc-4.0
* fix all new warnings of gcc-4 (almost all related to signedness)


Fri Aug  5 19:52:20 CEST 2005
* _structlist.c: minimize use of dynamic relocation with struct_strings,
  reduces .so size considerably (about 15 kB I guess).

Sun Aug  7 21:28:23 CEST 2005
* _structlist.c: store the size of the structures for easy allocation
* support double parameters to functions

Wed Aug 10 01:29:05 CEST 2005
* leak fixed for find_func - no strdup anymore

Wed Aug 10 23:57:57 CEST 2005
* __gc method in metatable for widgets; call g_object_unref
* g_object_ref/gtk_object_sink in make_widget


Sun Aug 14 11:50:30 CEST 2005
* improved reference counting


Tue Aug 16 18:43:10 CEST 2005
* more examples: toolbar and scrolled text view, notebook
* main.c -- a minimal wrapper to run lua files without the interactive
  cmd interpreter (therefore, without readline or ncurses).  This saves
  about 350 kB of virtual memory and 160 kB of RSS.  Probably not worth
  the effort.
* released version 0.3 to luaforge.net


Thu Aug 18 15:35:52 CEST 2005
* port to Lua 5.1


Fre Jun  2 18:58:29 CEST 2006
* License changed from GPL to LGPL


Fre Feb  2 12:17:32 CET 2007
* use Lua references to store callback info, as suggested by Thomas Harning
  Jr.  <harningt@gmail.com>
* new function to disconnect signal handlers
* removed the close() call which led to SEGV at the program end.
* free the struct callback_info on signal disconnect


Mon Feb  5 15:08:04 CET 2007
* Glade XML library added over the weekend
* split source into multiple files (over 3500 lines now)
* luaglade-0.5 inspected, used some ideas from it
* argument order for callbacks changed
* tested on win32, some bugs fixed
* script/gen-list.pl now runs separately for linux and win32 (struct padding!)


Mit Feb  7 02:18:50 CET 2007
* FTP upload in the background
* Image upload application now allows selection of file, preview, scaling and
  upload, and entry of titles and descriptions.  Saving of this is missing.


Mit Feb  7 15:55:48 CET 2007
* FTP Upload now properly works with win32, too.
* refcounting fixed; these caused random SEGV in combination with garbage
  collection.


Son Jun 17 13:45:12 CEST 2007
* Glade module update to handle Menus
* Glade example


Sam Jun 23 19:02:25 CEST 2007
* Can now write to Gtk structures (assignment)
* Calculator Demo enhanced a lot


Don Jun 28 20:00:15 CEST 2007
* overrides for callback parameters of type G_TYPE_POINTER studied;
  overriding is not useful.  Code deactivated, but left for possible
  later use.
* notebook example now runs without runtime errors (again).


Son Jul  1 01:38:29 CEST 2007
* Bugfixes
* gen-list.pl: detect typedefs that are effectively declaring a child class
  with unchanged attributes (but possibly other methods, example GdkWindow).
* examples/pixmap.lua mostly working; segfaults after resizing the window
  for a while.


Mon Jul  2 22:21:56 CEST 2007
* use full hash for function hash.  This avoids the problem of finding
  parameters for the wrong function.  Can happen when trying to call a
  deprecated function which exists, but is not in the function hash.
  Example: gtk_entry_set_position vs. gtk_editable_set_position.


Sam Jul 14 14:06:30 CEST 2007
* Updated doc/README.hash
* implement the usage of a minimal perfect hash function (from cmph).
  This makes the library about 3 KiB smaller; older hash is still available.


Son Jul 15 21:48:12 CEST 2007
* debugging, bugfixes, some refactoring
* require "gtk" instead of require "gtk2"
* demo for http_co download (examples/request.lua)
* release 0.5


Son Jul 29 12:53:27 CEST 2007
* simple testing framework in tests/run-test.sh


Mon Jul 30 20:27:47 CEST 2007
* better garbage collection of objects; call g_free() or an appropriate
  free function.


Son Aug 19 20:12:27 CEST 2007
* for latest changes, see the CVS history.  This file will probably not be
  updated anymore.


Fre Okt  5 17:46:13 CEST 2007
* gen-list.pl rewritten in Lua.  Compiles again, but enum/flags handling
  is not yet working.


Mit Okt 10 18:42:34 CEST 2007
* enum/flags handling now working somehow
* most examples working again


Fre Okt 12 00:27:04 CEST 2007
* all examples working again, including pixmap, weather forecast and cms-admin.
* force GtkFileChooserWidget to be available.
* improvement to lib/glade.lua - correct handling of can_default/has_default
* extensive refactoring and code cleanup
* complete CVS commit


Mit Okt 17 10:15:17 CEST 2007
* Added proper attribution and license information for cmph
* some minor improvements of the fch code


Sam Okt 20 23:42:40 CEST 2007
* Aliases for widgets, i.e. can have multiple structures at the same memory
  location.


Die Okt 23 16:20:39 CEST 2007
* various code cleanup and improvements; unchanged features.


Mit Okt 24 20:33:37 CEST 2007
* Bugfix for channels/watches
* widgets, aliases, emptyattr now stored in the environment of gtk
* reuse metatable of widgets and metatables


Don Nov  8 23:27:31 CET 2007
* memory leak fixed - refcounting improved


Sam Nov 10 22:15:36 CET 2007
* documentation of the library using luadoc is progressing.  It required a
  major update to luadoc.
* start of a website to use for lua-gtk.luaforge.net.  Generate using the
  HTML template mechanism of luadoc and the new script/generate.lua.

Son Nov 11 20:55:59 CET 2007
* fiddling with the mingw build - doesn't quite work, some linker problem.
* upload of a minimalist homepage to lua-gtk.luaforge.net, including the
  reference generated by luadoc (at least the part that already exists).


Mit Nov 14 18:23:32 CET 2007
* ENUM values can be negative
* automatically extract #defines from gtkstock.h
* include GtkFileChooserDialog widget


Fre Nov 16 17:01:20 CET 2007
* refactoring in data.c, widget.c
* widget_type for dynamic registration of handlers (now just for refcounting)
* keep a reference to the widget in struct callback_info
* types.c:ffi2lua_struct_ptr - no special case handling
* all channel specific code now in channel.c
* overrides for g_idle_add and g_timeout_add


Son Nov 18 10:43:02 CET 2007
* keep track of Gtk/Gdk objects on the stack, free at return from _callback
* bugfix of luagtk_dump_struct; now recurses.
* bugfix: missing inc_ref_count for new aliases.
* watches: allow coroutines to sleep for a specified time (in ms)
* bugfix: in override.c:l_g_object_set_property


Mon Nov 19 18:00:01 CET 2007
* Support for struct** parameters (as output only)
* ffi2lua_struct_ptr: when derived from GObject (not GtkObject), autodetect
  type
* gtk_tree_view_get_selection: correctly handle refcounting (via override)


Mit Nov 21 16:21:46 CET 2007
* GtkBuilder now finds object types properly.


Son Nov 25 00:37:25 CET 2007
* don't create entries in gtk.widgets or gtk.widget_aliases for stack objects;
  remove struct stack_obj_list and related code.
* fix segfault in _callback on amd64
* fix segfault in weather demo (gtk_text_view_get_buffer refcounting fix)
* automatically generate list of G_TYPE_XXX constants, remove extra_enums.txt
* support string and integer entries in the enum table
* call gtk_init in library init code, so gtk.init() is not required anymore


Son Nov 25 23:36:34 CET 2007
* support signal connection on all GObject derived objects, not just GtkObject
  derived ones
* callbacks from Gtk to Lua now accept almost any parameter type
* fixed a bug that happens when a Lua proxy object is automatically removed,
  but the GC function not called before the Gtk object is accessed again.


Fri Nov 30 12:27:37 CET 2007
* widget.c:_is_on_stack: use volatile
* widget.c:_is_on_stack: works for AMD64 too, now.
* use lua_pushliteral where possible instead of lua_pushstring
* Bugfix in _callback: use G_VALUE_NOCOPY_CONTENTS flag to G_VALUE_COLLECT;
  else the object parameters would have to be freed again.
* channel.c: access GIOChannel.ref_count properly
* lib/strict.lua: nil assignments handled
* widget.c: bugfix for objects on the stack: increase refcount
* widget.c: bugfix - always use g_object_ref_sink, ignore is_new
* lib/watches.lua: fix mixed sleeping and waiting on channels


Sam Dez  1 23:55:41 CET 2007
* Bugfix: entry in widget_aliases automatically removed, but GC function not
  called yet - this case is now handled correctly.
* Bugfix: widget.c: malloc_handler now actually used where appropriate.


Son Dez  2 22:29:02 CET 2007
* luagtk_get_widget: the confusing manage_mem arg replaced by flags.

Mon Dez  3 21:18:55 CET 2007
* bugfix in luagtk_newindex: failed (e.g. via segfault) when trying to write
  to a previously unknown structure element, and maybe in other cases, too.
* new function g_object_get_class_name() to access w->class_name


Son Dez  9 21:28:29 CET 2007
* support char** arguments, which return newly allocated strings.
* support PangoAttrList refcounting.
* Makefile: use $H instead of @ as suggested by Enrico Tassi


Die Dez 11 12:22:08 CET 2007
* gtk.done(): now prevents unloading of dynamically loaded libraries, thereby
  improving valgrind stack traces.
* calculator demo: show error messages in a separate text field
* allocate struct call_info with g_slice_alloc instead of g_malloc
* struct widget now has struct_nr instead of class_name; this is smaller on
  64 bit architectures, and provides additional information, esp. the
  structure size, required for g_slice_free.
* gtk.get_refcount returns the refcounting method (wiget type) as string
* gtk.done removed, its functionality now happens automatically using atexit
* use g_slice_alloc0 (not g_malloc) for manually allocated objects in gtk.new
* automatically call gtk_init
* automatically call g_mem_profile using atexit
* better stack traces with valgrind (no unloading of the dynamic library)
* refcounting fix
* make gtk.init idempotent
* scripts for running valgrind


Mon Dez 17 00:54:03 CET 2007
* gtk_*_get_* functions are assumed not to increase the refcount of the
  existing object they return.  Compensate by increasing the refcount.
* debug function registering and some debug functions moved to debug.c


Don Dez 20 01:02:11 CET 2007
* virtual functions in interfaces can now be assigned to, and thus overridden.


2007-12-20
* some refactoring
* more function comments

2008-01-09
* mingw build works again

2008-01-16
* GtkTreeIter free works for Gtk version < 2.10.12
* memory management fixes
* gtk.init renamed to gtk.set_debug_flags and improved
* support void* return type from Gtk functions, treat as widget
* support union* type (same as struct*)

2008-02-10
* keysyms from gtk/gdk/gdkkeysyms.h added

2008-02-13
* Build system improved with configure script (not autoconf)
* Gtk < 2.12 supported without build time changes

# v0.8 released

2008-02-20
* test program to verify ffi function in addition to the vararg test
* support "unsigned char" data type
* 64bit fix for int*, unsigned int*, long unsigned int*

2008-02-22
* support for libgtkhtml
* new example for GtkFileChooserDialog, another for HtmlView
* Example with toggle buttons in tree; pixbuf column for the prev. tree ex.

2008-02-23
* new example for GtkRadioButtons

2008-02-28
* sorted list of type names: consider number of indirections.
* sorted type list only contains type_idx, i.e. 2 bytes per entry; previously
  contained the name offset, too, but this is stored in the type entry anyway.
* find_struct now needs the number of indirections, and returns the correct
  type.
* call return values now finds the correct type (with one level of indirections
  less)

2008-02-29
* cross compilation for various architectures.  described in doc/INSTALL
* fix missing types e.g. GdkVisualType*
* include atk-enum-types.h
* fixed regressions except tests/023-cairo.lua
* fixed dump_struct to recurse properly

2008-03-03
* fixed regressions except tests/023-cairo.lua
* flag to disable runtime linking, to disable cmph; configure improvements
* improvement for cross compiling and general build improvements
* update to win32 build instructions, other doc updates
* improved encoding of enum values - simpler, more space efficient
* funclist.lua: sort output and pad return type
* get-defines.lua merged into parse-xml.lua
* ATK enums available
* parse-xml.lua split into various parts.  encoding for structures and
  functions changed.  statistics displayed after generation of data.
* stricter type checking for output parameters
* dynamic (runtime) linking improved
* GdkColor for Gtk <= 2.8.8 fixed
* hash values can be stored with less bytes - space savings
* hash-fch.c: hash_search improved
* GSList automatic free
* ffi2lua fix for enum**, lua2ffi fix for enum

2008-03-14
* support the bdz algorithm of cmph version wads07, which is still unreleased.
Library sizes: simple hash: 275 kB, fch: 252 kB, bdz: 252 kB.  bdz builds
faster, needs a little bit less data but a bit more core.


