Planned for 2.0 - make all functions reentrant - add more threading models: o fork() o Linux clone() o posix_spawn() o others ? - implement abstract locking mechanism. Then we can provide: o Linux futex() locking o semaphores - implement hashing functionality Planned for 1.8 - Error-handling system with two purposes: 1. combine all errno/strerror(), hstrerror(), etc methods 2. posibility for adding new error strings - res_pool: use stripes of memories each with blocksize elements, instead of one large memory chunk. This should avoid allocation problems and increase scalability - hash: reimplement some parts - logger: reimplement error logging (use debug trace stack instead) Changes between 1.6 and 1.7 (released 27-02-2006) - missing API doc update - deprecated enter_critical_section()/leave_critical_section() using GCC attribute - macros added in typedef.h: o ATTRIBUTE_WEAK_ALIAS o ATTRIBUTE_DEPRECATED - puri: o rename puri_free() -> puri_destroy() - plugin: o psi_plugin_get() now takes a const char* as argument o a NULL plugin is returned with NULL as parameter for psi_plugin_get() - signal: o psi_signal_init() now returns an int instead of a pointer o set default POSIX signal handling in __PSIutil() - thread: o removed several inlines o psi_thread_init() now returns an int instead of a pointer o psi_thread_exit() now takes a psi_thread_t* struct as argument o psi_thread_cancel() returns whatever pthread_cancel() returns o psi_mutex_init() now returns an int instead of a pointer - res_pool: o added some error checking functions - element allocator function is now return an int for checking purposes o removed inline declarations - debug_trace: o this new structure has been added in order to have proper debugging available. o in a long term, all output from the library will be written into this stack Changes between 1.5 and 1.6 (released 10-11-2005) - remove #include in typedef.h - for now - adjusted res_pool o memory allocation is now performed via a callback function o in a later version, a destructor might be added also - due to a bug in logger, file-based loggin has been disabled entirely - plugin moved from PSIroads (now: locked variant) - fixed: COPYING updated - fixed: base64 symbols were not exported - improved setup.sh - OpenSSL is no longer a requirement for PSIutil - passwd.c has been removed. Berkeley DB is no longer required - hash table implementation added (hash.[ch]), including a string hash function - a prime number generator has been added (prime-gen.c). This file generates a primetable getter (prime.[ch]) - all occurrences of stdbool have been removed. Included by typedef.h instead Changes between 1.4 and 1.5 (released 26-09-2005) - multiple stream logging: user can choose, which log stream is written - added -ffast-math flag for compilation - pthread stuff merged from PSIroads (which was formerly PSInet): o added typedef.h containing basic definitions o psi_thread.[ch] files added containing thread handler / pthread-wrapper - added likely(cond) and unlikely(cond) macros in typedef.h: o implemented as __builtin_expect(cond, 0|1) o These macros are useful for branch-prediction algorithms (i.e., P4 supports it). The usage is as follows: if (likely(c)) ... o Non-GCC compilers will plainly ignore this macro. - added ELF de/constructor attribute to [de]PSIutil(). This function will be called, once the library is initalized. Currently, it only executes 'log_ctx = init_log_ctx(LOG_FILE_T, NULL, stdout)', which obsoletes any manual calling. Also, log_ctx is now declared as static variable. - new PSI URI syntax implemented - moved PSI URI parser and assembler from PSIroads (puri.[ch]) - changed author email host to project-psi.org - moved psi_[dont]_free() into psi_thread.[ch] - dropped callBack in favour of a much simpler implementation, which is called 'psi_event' - dropped queue implementation - typedef.h now includes ansidecl.h and defines missing GCC attribute macros in the same scheme, i.e. ATTRIBUTE_PACKED - generic resource pool management added (res_pool.[ch]) - asynchronous signalling implemented (signal.[ch]) - Doxygen documentation written Changes between 1.3.1 and 1.4 (released 14-01-2005) - removed dual mutex API - removed XML.[ch]. It did never work and was used nowhere. - merged sort functions from PhysicsFS - merged linked string list functions from PhysicsFS (ls_list) - implemented 'export' keyword to all relevant functions. This keyword is defined as __attribute__((visibility("default"))), while all functions were compiled with the -fvisibility=hidden compiler flag - MacOS X portability work: o passwd now depends on Berkeley DB 4.2 - stricter compiler requirements: code-base now compiles with CFLAGS set to: '-std=c89 -Dinline=__inline__ -pedantic -DNO_C99_INITIALIZERS'. - increased buffer sizes in console.h to 8192 char/inputline and 256 arguments - Version bumped to 1.4 (was forgotten since 1.2) - 'export' keyword renamed to PSIEXPORT (for C++ compatibility) Changes between 1.3 and 1.3.1 (released ??-09-2004) - console (1/2): cons_del_command() function added to console. With this function allows dynamic console management is possible. - console (2/2): 'help ' added: displays detailled description for a command if specified. - makefactory portable.h removed: This may yield to portability problems. However, it could be added later again. - codebase now compiles with '-std=c89 -Dinline=' which forces the ISO C89 C standard to be used. - removal of several 'inline' API calls (not all, though) - passwd (1/4): password storage now uses the Berkeley DB - passwd (2/4): all passwords are base64 encoded - passwd (3/4): psi_generate_passwd() call added: it generates a digested base64 password from the raw password string. - passwd (4/4): psi_user_read() call added: it queries the username from stdin, similar to psi_passwd_read() - portability: stdint.h is no more used. instead, inttypes.h is included to support '[u]int[N]_t' types. - lots of bugfixes were made - callback destructor finished Changes between 1.2 and 1.3 (released 25-08-2004) - code_compiler added: this piece of code compiles data from sourcecode and links it into a library. Thus, plugins can be dynamically loaded into a program. Especially in conjunction with networking, this could enable manyfold possibilities. Security issues were _NOT_ yet regarded, so use with caution! - callback (1/2): new API call registerCallBackFunc_wrapper() added. it behaves like registerCallBack_once(), with the difference that it doesn't remove the wrapper and callback after execution. A wrapper is a function in the callback, which calls the actual callback functions by itself. This feature enables powerful return value check. - callback (1/2): executeCallBack_simple() was removed along with all time_fact/sleep_cnt appearances. - passwd (1/2): simple password management added using OpenSSL - passwd (2/2): base64_encode call added - console (1/3): the executed command now takes 3 instead of 2 parameters: a context pointer (void*), an argv (char**) and argc (uint). This causes an API change in cons_add_command(). - console (2/3): now you can pass a PSI_SHELLEXP_T type as parameter, which can be expand automatically wildcards (i.e. "*.c" or "[a-x]?_inc.h") or '~'. - console (3/3): cons_read() call added: command line is parsed by character. Keys, such as tab and KEY_UP can be interpreted properly. Changes between 1.1 and 1.2 (released 10-05-2004) - several bugfixes - all files are now C89 conform - they all compile under gcc 2.95 - tested under debian Changes between 1.0a and 1.1 (released 29-02-2004) - generic shell/console added (PSIutil/console) - simple authentication/authorization facility for function calls PSIutil/authCall - logging facility added (PSIutil/logger). quite untested