PHP Judy implements sparse dynamic arrays (aka Judy Arrays)
PHP Judy implements sparse dynamic arrays (aka Judy Arrays). This extension is based
on the Judy C library. A Judy array consumes memory only when it is populated,
yet can grow to take advantage of all available memory if desired. Judy's key benefits
are scalability, high performance, and memory efficiency.
License: PHP
| Version | Release | Download |
| 2.3.0 | 2026-02-27 | Judy-2.3.0.tgz |
| 2.2.0 | 2025-09-02 | Judy-2.2.0.tgz |
| 2.1.0 | 2025-08-25 | Judy-2.1.0.tgz |
| 2.0.0 | 2025-08-25 | Judy-2.0.0.tgz |
| 1.0.2 | 2013-11-03 | Judy-1.0.2.tgz |
| Version | Message |
| 2.3.0 |
- NEW FEATURE: Windows PECL DLL builds now published with each release (PHP 8.1-8.5, x86/x64, TS/NTS) - NEW FEATURE: PHP 8.5 support added to CI matrix - FIX: PHP 8.1+ compile fix - ZVAL_DUP replaced with ZVAL_COPY throughout - FIX: free_obj memory leak resolved (Judy array, zvals, and iterator state now properly freed) - FIX: BITSET clone bug fixed (was iterating new array instead of source) - FIX: STRING_TO_INT counter no longer overcounts on value overwrite - FIX: E_ERROR replaced with exceptions in constructor and write_dimension - FIX: foreach-by-ref now throws a proper error instead of E_ERROR; fixed emalloc leak - FIX: long->zend_long throughout; JLF() iterator bug fixed; redundant JLG lookups removed - FIX: Removed -march=native and -flto from config.m4 for portability - IMPROVEMENT: CI workflow consolidated; Windows benchmarks added to CI reporting |
| 2.2.0 |
- **BREAKING CHANGE**: Renamed Judy::next() to Judy::searchNext() to resolve Iterator interface conflicts - **NEW FEATURE**: Implemented proper Iterator interface support (rewind, valid, current, key, next methods) - **NEW FEATURE**: Added support for SPL iterators (LimitIterator, FilterIterator, etc.) - **IMPROVEMENT**: Enhanced benchmark examples with accurate memory measurements - **IMPROVEMENT**: Updated BENCHMARK.md with comprehensive design explanations and performance analysis - **IMPROVEMENT**: Added comprehensive benchmark suite with statistical analysis - **IMPROVEMENT**: Fixed iterator performance analysis and methodology - **FIX**: All tests now pass (100% success rate) - **FIX**: Improved memory measurement reliability across different environments - **FIX**: Fixed critical iterator bugs (next, rewind, valid methods) - **DOCUMENTATION**: Added O(log n) vs O(1) complexity explanations - **DOCUMENTATION**: Enhanced benchmark methodology with environment details |
| 2.1.0 |
- Performance improvements for string-keyed arrays through strict key typing (Breaking Change). - Modernized zval handling for better performance and PHP 8+ compatibility. - Fixed test suite to accomodate for strict key typing. |
| 2.0.0 |
- Added compatibility for PHP 8.0 and newer. - Dropped support for PHP versions older than 8.0 (Breaking Change). - Added a comprehensive benchmark suite (`examples/run-benchmarks.php`) to test realistic workloads. - Added a `BENCHMARK.md` file with detailed performance results and recommendations. - Added a `Dockerfile` to provide a consistent development and testing environment. - Updated `README.md` with modern installation instructions and a link to the benchmark results. |
| 1.0.2 |
- Bug fix with count/size, see https://github.com/orieg/php-judy/issues/15 - Add missing test files in package.xml |