As some of you know, I've been working on
Presto and, as the underlying engine,
DBM::Deep. Tonight, I've released DBM::Deep 0.99_01. This is, as far as I know, the only Pureperl module that supports ACID transactions. (At least, I'm claiming that it supports ACID transactions. I would love failing tests that prove me wrong.) I will be releasing Presto 0.02 by this weekend to take advantage of the transactions.
I'm looking for people who're willing to really bang on this module quite thoroughly. I need lots and lots of failing tests.
Caveats:
- Currently, this will only support 15 concurrent transactions. When 1.00 is released, the goal is to support an unlimited number of concurrent transactions.
- A freespace manager is planned for 0.99_02. Transactions take a lot of filespace that is (currently) never recovered. So, plan on running optimize() frequently.
- It's not blazingly fast. Yet. Correctness first, speed later. It will be much faster by 1.00.
To answer a few questions I know I'll be asked:
- No, I haven't run any benchmarks against anything. That's for after correctness has been established.
- Yes, it's better than Pixie because DBM::Deep is Perl data structures persisted to disk. No "magic cookies".
- Yes, I understand that tie() is a 15% penalty off the top. This is also what tie() was meant for.
- Yes, I understand that there's a lot of things DBM::Deep 0.99_01 is doing that could be done better, such as how CLEAR() is done. That's why it's not 1.00 yet.
If you find a bug, please open something against RT. Please please provide a failing test. If you don't provide a failing test and I can't figure out how to test it, it won't get fixed. Also, if you would like, please join the DBM::Deep mailing list and come visit us in #dbm-deep on irc.perl.org
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?