bdb/status.txt
2007-01-21 00:48:22 +00:00

44 lines
2.1 KiB
Plaintext

20-Jan-2007
The library is stable. With the 0.8 release, the last known bug has been
resolved. The library now has transactions, many more environment
management functions (hash params, shm, etc), and open transactions,
cursors and databases are tracked and properly cleaned up during finalization,
or at least when env.close is called. The library is size stable (no leaks)
and is being used in a heavy production environment with great reliability.
The future:
There are numerous DB controls that are not yet in the interface, as well
as handling sequences and other DB features. There has been no call for
them yet, so they linger.
The build system is a little weak. DB can be installed in so many different
places and variety of versions, making version selection tricky. There is
a complication, in that it is not enough for the compiler chain to find the
db.h and libraries, the build needs to find the exact db.h, because symbols
are extracted from it to generate the Ruby-side defines. It would be nice to
fix the build process and to turn it into a Gem.
Numerous, more ruby-like, methods need to be added. Probably in just a .rb
file to wrap and increase the ease of use for the core methods. The methods
do not deal with variable argument lists as they are largely faithful to
the DB API. But methods like cursor#next, cursor#first, and cursor.each
are appropriate.
9-Feb-2006
Done:
All common environment, database and cursor functions are in. They are also
_fully_ unit tested and are in production under heavy use. There are a
few missing, like pget.
Limitations:
If Ruby process exits and there are any open cursors (your program did not
close them) the process will SEGV. This is due to dbc_free trying to close
the cursor(s), even though the DB may already be closed. This will be fixed
by keeping track of open cursors and automatically closing then when
db->close is called, either by calling close or during finalization. Other
than messing up your BDB environment, the SEGV is larglely harmless (but
annoying). It should never happen if your program is written correctly.