July 2012 to January 2013
Development in trunk
Solved a number of issues with MacOS 10.7 build. The main problem was a bug in System V semaphores code, which shows itself in MT programs when signal comes during semaphore-related system call. I had to add new way of working with shared mutexes: using file locks for it.
Started android port. Now we have a native fbclient build for android. The main problem with engine is that android does not support both shared posix sync objects (mutexes and conditional vars) nor system V semaphores. Shared mutexes implementation for android is ready - it's file locks from Mac. To implement shared events I plan to use posix semaphores, but this code is not ready.
- Fixed a number of related issues that caused problems when attaching/detaching/shutting-down 2.5.2 server. This solved a number of deadlocks, races, AVs and one 'invalid lock id (0)' bug in both 2.5 and trunk code.
- Last month I work on modification of our new API in trunk. The BLR-oriented API in messages to be replaced with interface-oriented one. This should make use of API much easier for one who want/need to use our API directly, without odbc/ado/delphi/etc drivers. Currently yvalve, remote client (when working with old servers) and engine seem to be fine - build completes OK, incluing build of messages and employee databases. SRP (users auth & management) plugins are rewritten to use modified API. What remains to do is network server and complex test of the whole system.
Progress with Firebird 3.0 Alpha
From my side the folllowing major steps remain:
- Complete with mentioned API modification - after it Dmitry is going to commit bi-directional cursors. (yes, cursor becomes separate from statement object)
- One more API change - add separate object IArray, in which all operations with arrays will be done.
- Improvement of config code - add 'include' statement to be able to include config files, it's very important for plugins deployment. (this point is not as critical as 1 & 2, but highly desired)
- Write samples and doc for new API - at least one of this for alpha1.