Changes for version 5.23.0 - 2026-09-02
- [ARCHITECTURE & ID SIMPLIFICATION] Pure 64-bit Binary Engine & Deprecation of 8-Byte ASCII IDs:
- Deprecated 8-byte ASCII IDs (a8) across binary index structures in favor of pure 64-bit Big-Endian unsigned integer packing (Q>*), guaranteeing O(1) binary slicing with fixed 8-byte record strides.
- Simplified bin_encode() and bin_decode() by removing fragile \0 byte auto-detection and string unpacking heuristics.
- Removed legacy id_type schema attribute across all modules and test suites; standard relational tables strictly enforce positive integer numeric IDs.
- [STORAGE & PER-TABLE SIMPLE MODE] Hybrid Multi-Model Architecture with use_simple => 1:
- Introduced per-table use_simple => 1 attribute allowing key-value tables with arbitrary string keys up to 255 bytes (UUIDs, session tokens, emails, slugs, etc.) alongside standard relational tables.
- Preserved canonical physical table path ($dbase_dir/tables/$table.db) for use_simple tables in standard database mode.
- Selective schema sanitization: tables with use_simple => 1 strip indexing, columnar, and caching definitions (blocks, match_block, search_block, facet_block, sort_block, record_index, use_cache, cache_ttl) to achieve zero index/cache I/O overhead while preserving behavioral features (keep_deleted, force, no_transact, no_backup, use_menu, log_owner).
- Enabled keep_deleted => 1 archiving (.del) on use_simple tables.
- [RDBM & INTEGRITY] Foreign Key and Cross-Table Isolation:
- Prohibited standard relational tables from binding foreign keys (RDBM) to use_simple tables in rdbm_target() and _resolve_field_value().
- [TESTS & VERIFICATION] Dedicated Test Coverage:
- Added comprehensive test suite t/amberdb_table_use_simple.t verifying arbitrary string keys, schema sanitization, zero index file creation, keep_deleted archiving, and RDBM isolation.
- Cleaned up legacy id_type occurrences across all 41 test files and concurrency stress tests (xt/amberdb_concurrency_stress.t).
- [DISTRIBUTION & METADATA] Decoupled Internal Module Versions and CPAN no_index:
- Stripped redundant $VERSION definitions from 15 internal/engine-only modules (Base, Cache, Transact, Index, Index::Facet, Index::Junk, Locale::Currency, Locale::Lang::*) to streamline release maintenance.
- Retained explicit $VERSION in public, standalone modules (AmberDB, AmberDB::Array, AmberDB::Date, AmberDB::Locale, AmberDB::String, AmberDB::Tools).
- Added comprehensive META_MERGE no_index configuration in Makefile.PL covering internal directories, namespaces, and packages.
- [DATA STRUCTURES & UTILITIES] Non-Destructive hash_diff in AmberDB::Array:
- Implemented hash_diff($hash1, $hash2) in AmberDB::Array with safe shallow copying, ensuring input hash structures are never mutated.
- Removed legacy internal _hash_diff from AmberDB::Tools and switched to $adb->hash_diff directly.
- Added unit test coverage for hash_diff in t/amberdb_array.t.
Modules
High-performance embedded NoSQL database engine for Perl
Array, matrix manipulation, and set operations utility
Core serialization, schema resolution, binary packing, file locking, and low-level I/O base class
Native .db and .inx RAM-Disk (tmpfs) unified cache and persistent staging buffer engine
Date manipulation, chronological ID generation, range calculation, and formatting utility
Inverted search, exact field match, binary sort, and URL slug rewrite indexing engine
Multilingual text processing, collation, number/currency formatting, and search normalization engine
ISO 4217 Currency Definition and Symbol Dictionary
String manipulation, HTML conversion, content detection, and sanitization utility
Database maintenance, CLI reindexing, and bulk conversion toolset
ACID-compliant transactions with Strict Two-Phase Locking (Strict 2PL) and undo journaling engine