The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Changes for version 1.0000

  • THIS VERSION IS INCOMPATIBLE WITH FILES FROM ALL OTHER PRIOR VERSIONS.
    • To aid in this form of upgrades, DBM::Deep now checks the file format version to make sure that it knows how to read it.
    • db_upgrade.pl was added to utils/. This will -NOT- install onto your system. This is deliberate.
    • db_upgrade.pl will not handle developer release file formats. This is due to the fact that all developer releases in preparation for a given release share the same file version, even though the file format may change. This is deliberate.
  • Importing no longer takes place within a transaction
  • The following parameters were added:
    • data_sector_size - this determines the default size of a data sector.
  • Correctly handle opening readonly files

Changes for version 0.99_04

  • Added the missing lib/DBM/Deep.pod file to the MANIFEST
  • Fixed a poorly-designed test that was failing depending on what Clone::Any was using.
  • All "use 5.6.0;" lines are now "use 5.006_000;" to avoid warnings about unsupported vstrings in 5.9.x

Changes for version 0.99_03

  • THIS VERSION IS INCOMPATIBLE WITH FILES FROM ALL OTHER PRIOR VERSIONS.
    • The fileformat changed completely. I will be writing a converter, but it's not there right now. Do NOT expect that this module will correctly detect older versions and handle them sanely. Sanity will be there for 1.00, but we're not there yet, are we?
  • Converted to use FileHandle::Fmode to handle filehandle status checks
  • Fixed bug with deleting already-deleted items on Win32 (reported by Nigel Sandever)
  • The guts of how transactions work has been rewritten to better handle some edgecases. This required a complete rewrite of the engine.
  • Freespace management is now in place. It's not perfect, but it's there.
  • The rewrite of the engine required a rewrite of how first_key/next_key was implemented. This should result in significant speed improvements.
  • Self-reference has been removed. This means you cannot do: $db->{foo} = { x => 'y' }; $db->{bar} = $db->{foo}; I hope to be able to return this functionality by 1.00, but I cannot promise anything. To do this properly, it requires refcounting in order to correctly handle deletions and transactions. Once you move away from a simple tree, everything becomes really hard.

Changes for version 0.99_02

  • Added missing file to the MANIFEST

Changes for version 0.99_01

  • Added explicit dependency on Perl 5.6.0
    • Digest::MD5 requires 5.6.0
    • Sub::Uplevel (dep of Test::Exception) requires 5.6.0
  • Removed error()/clear_error()
    • All error-handling is done with die()
  • Broke out DBM::Deep's code into DBM::Deep::Engine
  • Tied variables can no longer be assigned to a DBM::Deep object.
    • This includes cross-file assignments.
  • Autovivification now works
    • This is a consequence of the fact that all assignments are tied.
  • set_pack() and set_digest() have been removed.
    • Instead, you will now pass the appropriate values into new()
    • A pack_size parameter has been added to make 64-bit files easier
  • Transactions now work

Modules

A pure perl multi-level hash/array DBM that supports transactions

Provides

in lib/DBM/Deep/Array.pm
in lib/DBM/Deep/Engine.pm
in lib/DBM/Deep/Engine.pm
in lib/DBM/Deep/Engine.pm
in lib/DBM/Deep/Engine.pm
in lib/DBM/Deep/Engine.pm
in lib/DBM/Deep/Engine.pm
in lib/DBM/Deep/Engine.pm
in lib/DBM/Deep/Engine.pm
in lib/DBM/Deep/File.pm
in lib/DBM/Deep/Hash.pm
in lib/DBM/Deep/Engine.pm
in lib/DBM/Deep/Engine.pm
in lib/DBM/Deep/Engine.pm