- Remove unused code.
- Add support for wheels.
- Remove mmap read only dbm subclass. This functionality has not been available in a public interface since b265e60c5f4c0b1e8e9e4343f5f2300b5e017bf0 (1.5 years ago) so it’s now removed.
- Added non mmap based dbm loader for platforms that do not support mmap (jython).
- Atomic renames on windows during db compaction.
0.4.0 is a backwards incompatible release with 0.3.1. Data files created with 0.3.1 will not work with 0.4.0. The reasons for switching to 0.4.0 include:
- Data format switched from ASCII to binary file format, this resulted in a nice performance boost.
- Index and data file consolidated to a single file, resulting in improved write performance.
- Checksums are written for all entries. Checksums can be verified for every __getitem__ call (off by default).
- Python 3 support (officially python 3.3.x).
- Windows support.
- The data file and the index file are kept in a separate directory. To load the the db you specify the directory name instead of the data filename.
- Non-mmapped read only version is used when the db is opened with r.
- Write performance improvements.
- DB can be opened with r, c, w, and n.
- Add a memory mapped read only implementation for reading from the DB (if your entire data file can be mmapped this provides a huge performance boost for reads).
- Benchmark scripts rewritten to provide more useful information.
- New sync() method to ensure data is written to disk.
- sync() is called during compaction and on close().
- Add a DBMLoadError exception for catching semidbm loading errors.