0.9.1 (r1972) [ Mostly Harmless -- FHS, .deb, guile module] =============== -Change: FHS compliant install paths; gpmi-config doesn't use gpmi_root anymore but --fstools instead -Change: Makefile.config has GPMI_ prefix for every variable to avoid collisions -Add: [modules] guile module (k-zed) -Add: [modules] install data dir of modules -Add: [bgproc] on UNIX manual split command line arguments and pass them -Add: [config] add/detect unsafe temp file creator but warn and prompt the user -Add: [config] install libgpmi.so.0.9.1 instead of libgpmi.so; link libgpmi.so.0 -Add: [config] user paths for packages and modules (~/.gpmi/* by default) -Add: [core] main Makefile has linstall rule for link-install -Add: [doc] manual page for gpmi-config -Add: [packages] gpmi_scripts provides a way to print on stdout - useful if one wants to keep stdout of the app, modules and scripts in sync (necessary for tests) -Fix: [config] crosscompilation -Fix: [config] do not exit when recursive mutex fails, only disable threading -Fix: [core] gpmi_path_get does not return the path separator -Fix: [core] memory overwrite error in path handling -Fix: [modules] speeded up cli by avoiding sleep after successful reads -Fix: various minor memory leaks -Update: [OS] general debian updates; renamed debian package libgpmi to libgpmi0 -Update: [scripts] stutter test script is updated for the new version of stutter 0.9.0 (r1805) [ Mostly Harmless -- CLI module in sync, more tolerant listgen, bugfixes ] =============== -Add: [bgproc] bgproc_close_pipe() -Add: [listgen] allow :number (used in structs) -Add: [wrapgen] allow the user to change which arguments to pass to the register function using an optional C macro -Change: [core] split gpmi_pkg_load(); gpmi_pkg_load() loads the library and calls gpmi_pkg_load_lib() which then go on with package initilization. This allows one to reload a package by knowing the library, or in other words, to clone an already loaded package without first trying to resolve its name -Fix: [config] external package makefile didn't use $(INCLUDES) sometimes -Fix: [core] const correctness in hash_cursor -Fix: [core] gpmi_pkg_misc_func allocates enough memory for the string buffer -Fix: [core] load default dependencies from file "gpmi.dep" instead of "gpmi" -Fix: [listgen] allow gpmi_keyword to be declared as extern -Fix: [listgen] listgen reports the correct line numbers and is not fooled by long chunks of nonprocessed input -Fix: [modules] cli module has been reworked to work in sync mode and it does work on windows this time 0.8.2 (r1769) [ Bistromathic -- CLI module, better paths, bugfixes ] =============== New features: -Add: [modules] CLI module (should work on *NIX). -Add: [packages] qparse -Add: improvements needed for modules with data to find their data dir -Add: [config] recursion for 'make install' in external packages groups -Add: [config] added 'make install_link' which links instead of copying -Add: [config] fingerprints in Makefile prototypes -Add: [core] GPMI_PATH_DEFAULT in gpmi_path_*() calls refer default paths -Add: [core] add ~/.gpmi/* on search paths before system paths -Add: [config] allow external packages to install in ~/.gpmi with -H (as Home) -Change: [gpmi_scripts] script path is handled as a search path General fixes: -Fix: patched various memory leaks -Fix: [config] app makefile should include Makefile.config -Fix: [modules] stutter: updated for api changes; doesn't run on windows -Fix: [config] improved findig script intrepreter libraries -Fix: [packages] gpmi_scripts had double free bugs in event handling -Change: [config] unique name space for external packages is assambled using the original NAMESPACE in Makefile.am, INST_PATH and FILE_NAME. This means NAMESPACE is not mandatory anymore. Listgen fixes: -Fix: [listgen] allow FAKETYPE in comments -Fix: [listgen] allow = in comments -Fix: [listgen] allow function name to be wrapped in () in typedef -Fix: [listgen] ID * is a pointer, whatever ID was (fixes the typedef void bug) -Fix: [listgen] typedeffed enum acts as int for both its name and its typedeffed name -Fix: [listgen] typedefed unions are allowed Windows port fixes: -Del: Removal of DLL stuff -Del: [config] removed hardwired pthread references from os scripts -Change: split windlc in mingw and cygwin -Add: when compiling libgpmi.dll, output the import lib 0.8.1 (r1569) [ Bistromathic -- Thread safety ] =============== New features: -Add: [core] Thread safety -Add: [config] option tables to convert on/off options into -D* cflags; gpmi_threads and gpmi_malloc_cache options -Add: [packages] the filter package from gpmi_extensions/trunk/strings (for bgproc) -Add: [listgen] support inline functions in the .h file - must be prefixed by nowrap to make it very clear that it's not for scripts OS-specific/porting: -Add: [OS] Added RPM spec file and instructions for symlinking workaround. -Add: [core] added MSVC support for variadic macros (slow!). This should work for all compilers and all targets, but we limited it to MSVC for now. GCC has much faster alternatives. (tnx a lot glx for this great piece of code!!!) -Add: [core] gpmi_install_root() -Add: [core] GPMI_PATH_SEP_STR and GPMI_PATH_SEP_CHAR. Now path separator for windows is ';' and ':' for other OS. -Add: [core] use the registry on windows, use a macro with strdup on non-windows to set up the paths -Fix: [OS] debian package: don't depend on awk (it's implicit), add doc/ -Fix: [config] make GPMI compile for Darwin target; darwin uses .dylib, not .so -Fix: [config] python is now detected on default cygwin install -Windows installer (.msi): - Fixed wrong files sources (now directly use gpmi compiled files) - Added pthreadGC2.dll - Added registry key and PATH - Added the possibility for the user to choose the install dir (NOTE: a non privileged user can't write in default install dir) - If the user is privileged, the installer will perform a "per machine" install, a "per user" install otherwise - Added a Makefile to strip binaries, and build the msi General/core: -API change: [core] gpmi_error_stack_enable doesn't exist anymore (it was a global var). Use gpmi_err_stack_enable() and gpmi_err_stack_disable(). -API change: [core] a package register callback provides a pointer to the original proc besides the wrapper proc -API change: [listgen] /* of type */ is a must for gpmi_keywords now. Type is defined automaticly, so no type faking is needed for enums/keywords -Add: [doc] bugreporting HOWTO -Add: [config] install doc/ -Add: [core] path wrappers (the former paths package and some extras) -Fix: [tests] make test fails with a warning when any of the tests are failed (but a fail doesn't prevent other tests to be done) -Fix: allow group-Makefiles to be overriden via Makefile.am -Fix: [listgen] pass trough char and uchar as valid types -Fix: [config] statdep uses the right system-wide path for all :s packages -Fix: [core] no more gpmi_current_module -Fix: [config] do not leave empty generated/package.list when listgen fails - just compiling twice won't help a buggy .h -Fix: [wrapgen] do not generate code that would free a keyword array twice (interfering packages; thanx TrueLight:) 0.8.0 (r1435) [ Bistromathic -- The final cleanup release ] =============== -Add: [config] --cflags and --ldflags work for --pkg in gpmi-config -Add: [config] --host and --target works well for cross-compiling; win32cross.sh removed -Add: [config] a translation table to convert shortcuts in command line arguments (like --prefix or --target) to real variable names -Add: [config] dependency calculation in gpmi-config -Add: [config] statdep gpmi-config -Add: [core] add a non-vararg-macro solution for gpmi_event (GCC only) and a macro version that works even on MSVC (slow!) -Add: [doc] bugreporting HOWTO -Fix: [config] Wrapgen/Listgen now works correctly for cross-compiling (use host version, install both) -Fix: [config] allow external package to put their CFLAGS stuff in front of all other CFLAGS flags of the system. This allows -I- to be added by the user without breaking important GPMI parts -Fix: [config] bugs in ghli detection script -Fix: [config] make GPMI compile for Darwin target -Fix: [config] python is now detected on default cygwin install -Fix: [core] do not use negative keyword types, not even internally -Fix: dl-compat is now an external package on which we depen, added a checker to see if dl-compat is installed -Change: [config] accept copy as link and throw a warning (windows doesn't have a real symlink). -Cleanup: [core] enum cleanup: don't pass around integers where we should use enums -Del: [core] remove default debug function - we have a fallback defined in debug.h -Rename: renamed windl to windlc 0.7.2 (r1308) [ Weeding Weeds -- General cleanups, wrapgen cleanup ] =============== -Change: [packages] API change in gpmi_scripts in timers (you most probably need to update your scripts, sorry) -Change: [config] don't double-compile .static.o files -Change: [wrapgen] made wrapper generators to use str_buff -> we generate only one file per generator -Change: [wrapgen] generated filename cleanup: functions.c, events.c and enums.c; events.c; package.c contains the init part. Separation of USR and GEN layers. -Cleanup: extern cleanup -Add: EMULATOR is read from the env to allow 'wine' to execute the windows binaries -Add: [config] Added Makefile.dirs and cleaned up prefix/root problems: $root, $sroot and $prefix cleanup -Add: [config] --mod and --app in gpmi-config (similar to --pkg) -Add: [config] external Makefiles use $(BINDIR) instead of ../ -Add: [config] in gpmi-config, after --pkg or --mod, --bin-dir mydir will set $BINDIR to mydir in the generated makefile -Add: [core] check for multiple linking of a static package -Add: [core] each package has a name space char * in dynamic mode. This should be the only one symbol that presents in all packages under the same name. -Add: [core] os_dep has a call to determine the dl handle for the global namespace; static packages have sane library handles now -Add: [listgen] generate $$$Enums section in the .list file; wrapgen generates keyword initialization section using this. -Add: [listgen] nowrap can be applied on enums as well -Add: [modules] example module has verbose error reporting when fails to open example package -Add: [packages] bgproc package for CLI module (thanx to glx for the windows port) (not yet working) -Add: [packages] gpmi_scripts can pass the package structure to a module while registering commands if the module requests this -Add: [packages] gpmi_scripts reprots a full error stack when it fails to load a package with PkgLoad -Add: add 'make strip' support -Add: add --os to gpmi-config, so external programs can check which OS there was used to compile GPMI -Add: made the 2 TCL depending tests for TCL, Ruby and LUA. If you don't have either, it fails graceful -Add: added new type: uchar (for unsigned char) -Fix: [config] -static.o should not depend on dlls (glx) -Fix: [config] make depend doesn't run makedepend directly but calls gpmi-config --dep -Fix: [core] use INSTALL_ROOT for the default paths instead of the hardwired one (thanx to iSteve for finding the bug) -Fix: [modules] GHLI: report runtime errors -Fix: [modules] do not delete Makefile.dll if it was not generated -Fix: [modules] exmaple module should not try to unload example package if load failed (thanx Fujitsu) -Fix: [modules] ghli module doesn't depend on baseunits anymore, ghli unit loading shortcut is implemented -Fix: [wrapgen] do not use strdup() in wrappers where NULL strings is allowed -Fix: detect both linux as windows executables -Fix: don't detect PHP if only the libs are there, but the headers not -Fix: make all our packages and modules print pointers the same way -Fix: make all the examples and tests work, even if GPMI isn't installed system-wide -Fix: make gpmi compile under dl-compat perfectly -Fix: make test.awk ignore \r -Fix: test on RunData, not on RunTick, in the RunData macro ;) 0.7.1 (r1092) [ Weeding Weeds -- Cleanups and Windows ] =============== - Add: [scripts] Stutter as new script-module (k-zed) - Add: [scripts] timer_del - Add: [win32] Many windows fixes and updates (much tnx to glx) - Add: [core] Add generation of Makefile and Makefile.am for groups - Add: [core] Let everything report an error to the error-stack - API CHANGE: [core] reg_cmd now gets the current package as argument - Fix: [core] Removed all debug (printf) calls - Fix: [core] Many memleaks, buffer overflow and bugs - Fix: [core] Cleaned up all compiler warnings - Fix: [core] Keywords can now be cleaned up - Fix: [core] Removed gpmi_current_package - Fix: [config] A bit better cross-compile support - Fix: [core] Destroy error-stack on uninit - Fix: [scripts] GHLI fixes and updates (much more stable now) - Fix: [scripts] Ruby updates - Fix: [scripts] Python now works on all platforms / versions - Fix: [core] Static linking works (also unloading) 0.7.0 (r917) [ Weeding Weeds -- New major release, many bugfixes and improvements ] ============== - Add: [packages] Added Perl support - Add: [core] basic OSX support (tnx to Bjarni!) - Add: [core] Error-backtrace - Add: [docs] Started SGML documentation - Add: [core] New handling of global event handler - Add: [packages] Script languages can now handle a pointer (in string format) - Fix: [win32] Better win32 support (fixes all around the scope) - Fix: [core] Loading of deps is now correct - Fix: [core] Keywords made everything crash in some situations - Fix: [core] Better static mode support (both windows as linux) - Fix: [listgen] Many fixes and improvements for listgen - Fix: [packages] GHLI now compiles (and works) - Fix: [packages] PHP module compiles correctly for both PHP4 as PHP5 - Fix: [core] Named 'packages' 'gpmi_pkg', where possible - Fix: [core] Added 'mrproper' to several Makefiles - Fix: [core] Many small bugfixes and improvements not worthy to be named here - Codechange: [core] Switched to __VA_ARGS__ for better compatibility 0.6.1 (r766) [ Stuffed Shirt -- several minor bugfixes and major listgen improvements ] ============== - Add: [config] gpmi-config can do --wrapgen and --listgen - Add: [listgen] .list file is auto-generated if doesn't exist - Add: [listgen] debug output depends on verbosity level and is sent to stderr - Add: [listgen] dynamic and const prefixes - Add: [listgen] added command line argument parsing for -v - Move: [listgen] macros needed in package's .h file are moved in trunk/gpmi/gpmi_package.h - Update: [listgen] Makefiles compile listgen - Rename: [listgen] listgen to listgen1 so file names won't collide with dir names - Update: [config] gpmi-config doesn't generate package.list anymore (listgen will) - Add: [config] master makefile of external packages can generate the package.list file from .h - Fix: [listgen] listgen now accepts (and ignores) structs (either typedefed or not) - Fix: [listgen] listgen generates "ptr" instead of undefined keyword references - Fix: [listgen] listgen respects prefixes when deciding wether a keyword is defined or not - Fix: [listgen] listgen can handle any amount of '*'s in pointers (any depth of indirection) - Fix: [listgen] listgen allows function() with empty parameters - Fix: [config] copy listgen in the bin dir on install (thanx k-zed) - Add: [config] core package makefiles have the same behaviour about package.list as externals - Fix: [core] use RTLD_NOW instead of RTLD_LAZY: the .dep system should preload everything and it is better for debugging. Maybe it should be optional (not compile-time) - Fix: [packages] gpmi_scripts depends on timer - Fix: [packages] gpmi_scripts had an unstable call to its command register function in dynamic mode - Update: [doc] updated roadmap and added a detail for 0.7.0 (awk support is removed - sorry, no time, maybe for 0.8.0) - Fix: [packages] gpmi_scripts can call its cmd reg function in static mode as well - Add: [core] include protection for libs-dynamic.h and libs-static.h - Fix: [core] fixed critical bug: unloading a library didn't delete the freed(!) library pointer from the linked list of libraries and also caused a cyclic list which made a few routines to run infinite loops when searching gpmi_libraries - Fix: [core] allow / in package names in dep files -- we need some sort of protection here! - Add: [core] error.c to help reporting more detailed error messages; loading a library tries to report more details on error - Add: [packages] gpmi_scripts allow the user to generate script filenames (gpmi_scripts_asm_scriptname). [optional] 0.6.0 (r730) [ Stuffed Shirt -- Windows support, new language (ghli pas), fixes/cleanups ] ============== - Change: [Core] hash2 branched - it has better makefiles now - Add: [Config] if ./local.conf presents, it is included. It overwrites default settings but does not overwrite --include files. (I use this file to disable -O2 on slow computers) - Add: [Config] unix-ppc config script - Add: [Config] windows confing creates the right makefile.conf - Add: [Config] a flag for cross-compiling which makes all compile test to return ok if a file is produced - Add: [Module] added ghli module - Fix: [Core] gpmi_uninit doesn't segfault - Fix: [Core] made some definitions "external" so windows is happy now - Fix: [Modules] Tcl: implemented the proper (and safe) way to protect parameters - Fix: [Packages] do not segfault if PkgLoad can't find the package - Fix: [Wrapgen] cleaned up some more warnings 0.5.5 (r608) [ Stuffed Shirt -- API changes, new language (Ruby), memleaks cleaned ] ============== - Change: [Core] Renamed module loader/unloader to gpmi_mod_load() and gpmi_mod_unload(). - Change: [Core] Renamed gpmi_libdep() to gpmi_libdep_load() - Add: [Config] Added 'gpmi-config' - Add: [Config] The include-files of the packages are installed to the right dir - Add: [Config] 'gpmi-config' can create framework for external packages (still in progress) - Add: [Ruby Module] Added support for Ruby - Add: [Core] Added OS/debian to create binary .deb - Add: [Core] Added basic support for windows. Not working yet! (WIP) - Fix: [1215062] Script-modules get their params now in an array instead of one string - Fix: [Config] Many improvements to the config - Fix: [Core] gpmi_init() now allows setting the base-dirs when building staticly - Fix: [Core] Libdep also unloads his packages when the package itself is unloaded - Fix: [Core] Many memleaks fixes and bad code cleanups. - Fix: [Examples] Added uninit in all examples where they supposed to be - Fix: [Script Module] Unload packages that are loaded via the scripts - Fix: [PHP Module] Working PHP4 support - Fix: [Python Module] Python no longer crashes on 32-bit systems - Fix: [Python Module] Now also works with Python 2.3 - Fix: [Package] Some cleanups - Fix: [Makefile] Makefile.dep doesn't depends on system-includes anymore 0.5.4 (r484) [ Stuffed Shirt -- Static linking, more configure stuff, doc cleanup ] ============== - Add: [Core] Core and packages can now be staticly linked - Add: [Example] Added a test-example for static-linking - Add: [Wrapgen] Wrapgen dumps all files in generated/ - Add: [Core] Added a package to add/insert/delete searchpaths from a string - Fix: [Config] LUA-detection now works - Fix: [Config] Config works on FreeBSD - Fix: [Config] Use $(MAKE) over make - Fix: [Config] Many more fixes in the config and Makefiles - Fix: [Core] Some packages didn't return 0 in PKG_FUNC(init) - Fix: [Core] Changes #include "gpmi_core_file.h" to #include - Update: [Docs] Updated some more files to work with Doxygen (many to go) - Change: [Policy] Policy change: all GPMI related files of external packages go to gpmi/ 0.5.3 (r372) [ Stuffed Shirt -- Configure system, doc cleanup, search paths ] ============== - Add: [packages] hash package and keywords package - Add: [config] new config system with defaults, menuconfig and autodetect - Add: [config] new install.sh for the new config system - Fix: [core] added asserts for sanity checking all around the core - Add: [core] library search paths work. Separate directory paths using ':'. (script path is not (yet?) covered) - Fix: [core] dependency loader respects package versions (removes an XXX) - Add: [doc] added thematic index htmls - Update: [doc] general doc restrcture and cleanup - Codechange: Updated the code-layout everywhere, added const-correctness where possible, fixed some silly bugs and glitches, added documentation where possible, fixed missing include-headers and wrong #include-lines. - Fix: [1215158] example applications makefiles are fixed so examples can be compiled before installation 0.5.2 (r300) [ Stuffed Shirt -- New script languages ] ============== - Add: [LUA Module] Added LUA as new supported script-language - Add: [Python Module] Added Python as new supported script-language - Add: [Script Modules] Finished unbinding - Fix: [Script Modules] Many bug fixes in code-package and in TCL and PHP modules - Fix: [Script Modules] When there is no event bind, script-modules no longer crash - Fix: [Script Modules] Scripts didn't support events with 'uint' as type - Fix: [Packages] 'i' and 'I' are now signed, not unsigned. - Fix: [1205527] Glitches in Wrapgen generated code (and defines) (keyword related) - Fix: [1205543] Events < 0 are ignored - Fix: Packages aren't loaded twice - Fix: Fixed unfree'd memory problems all over - Fix: Fixed glitches in the bind-system (causing segfaults and other funny stuff) 0.5.1 (r263) [ Stuffed Shirt -- Minor Fixes ] ============== - Fix: [1205030] multiple call of init routine in a package - Fix: [1205028] Fixed minor bug: unit didn't have a type-character. - Fix: [1205028] Now any undefined type will cause a warning on stderr and type-character '#'. - Fix: [Script Modules] Several security issues and glitches (mostly in PHP) - Fix: [TCL Module] TCL now compiles with -ltcl by default - Add: [PHP Module] Added PHP regression to the test-kit - Add: [Wrapgen] file name prefixing for generated files. Either set the defaultprefix in wrapgen/config.h or use -D in the makefile - Update: Updated the docs a bit 0.5.0 (r238) [ Stuffed Shirt -- Initial release ] ============== - Initial release (alpha)