<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
        xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns="http://purl.org/rss/1.0/"
        xmlns:dc="http://purl.org/dc/elements/1.1/">

    <channel rdf:about="https://pecl.php.net">
        <link>https://pecl.php.net</link>
        <dc:creator>php-webmaster@lists.php.net</dc:creator>
        <dc:publisher>php-webmaster@lists.php.net</dc:publisher>
        <dc:language>en-us</dc:language>
        <items>
            <rdf:Seq>

                                    <rdf:li rdf:resource="https://pecl.php.net/package-changelog.php?package=yac&amp;amp;release=2.3.2"/>
                                    <rdf:li rdf:resource="https://pecl.php.net/package-changelog.php?package=Judy&amp;amp;release=2.5.2"/>
                                    <rdf:li rdf:resource="https://pecl.php.net/package-changelog.php?package=yaconf&amp;amp;release=1.2.0"/>
                                    <rdf:li rdf:resource="https://pecl.php.net/package-changelog.php?package=Judy&amp;amp;release=2.5.1"/>
                                    <rdf:li rdf:resource="https://pecl.php.net/package-changelog.php?package=Judy&amp;amp;release=2.5.0"/>
                                    <rdf:li rdf:resource="https://pecl.php.net/package-changelog.php?package=Judy&amp;amp;release=2.4.2"/>
                                    <rdf:li rdf:resource="https://pecl.php.net/package-changelog.php?package=Judy&amp;amp;release=2.4.1"/>
                                    <rdf:li rdf:resource="https://pecl.php.net/package-changelog.php?package=zstd&amp;amp;release=0.18.0"/>
                                    <rdf:li rdf:resource="https://pecl.php.net/package-changelog.php?package=brotli&amp;amp;release=0.21.0"/>
                                    <rdf:li rdf:resource="https://pecl.php.net/package-changelog.php?package=taint&amp;amp;release=3.0.0"/>
                
            </rdf:Seq>
        </items>

        <title>PECL: Latest releases</title>
        <description>The latest releases in PECL.</description>
    </channel>

            <item rdf:about="https://pecl.php.net/package-changelog.php?package=yac&amp;release=2.3.2">
            <title>yac 2.3.2</title>
            <link>https://pecl.php.net/package-changelog.php?package=yac&amp;amp;release=2.3.2</link>
            <description>
                - PHP 8.2, 8.3, 8.4, 8.5 and 8.6 support
- Added ARMv8 hardware CRC32C support
- Fixed dead SSE4.2 CRC32 detection, modernized config.m4
- Retry on CAS failures in set()
- Treat decode/decompression failures as silent cache misses
- Fixed delete() returning true for non-existent keys
- Added PIE (PHP Installer for Extensions) support            </description>
            <dc:date>2026-08-18T08:15:15-05:00</dc:date>
        </item>
            <item rdf:about="https://pecl.php.net/package-changelog.php?package=Judy&amp;release=2.5.2">
            <title>Judy 2.5.2</title>
            <link>https://pecl.php.net/package-changelog.php?package=Judy&amp;amp;release=2.5.2</link>
            <description>
                - PERF: mergeWith() no longer re-descends from the root for a key its own
  cursor is already standing on. The slot-to-zval conversion is shared with the
  descending read path so the two cannot drift, and the cursor&#039;s slot is reused
  only where it genuinely holds the value: directly on the integer-keyed and
  trie types, and on *_HASH / *_ADAPTIVE only when the payload is mirrored
  (an optimizeIteration instance of STRING_TO_INT_HASH, or long-keyed
  STRING_TO_INT_ADAPTIVE). Behaviour-preserving: the three new .phpt files pass
  against the pre-change build too. **No performance number is claimed** — the
  redundant descend is gone, but no benchmark accompanies the change and none
  should be inferred pending a run on an idle host. baselines/latest.json and
  BENCHMARK.md figures are untouched.
- DOC: API.md now documents that toArray() coerces integer-looking string keys
  on string-keyed types (&quot;42&quot; comes back as int 42, while &quot;07&quot; and &quot; 42&quot; stay
  strings) and that feeding such a key back as an offset throws. The warning
  reached the stub and AGENTS.md in 2.5.1 but not API.md, which is the reference
  composer.json advertises.
- DOC: BENCHMARK.md records why php-code-coverage and Infection were examined
  and rejected as Judy fits.            </description>
            <dc:date>2026-08-18T04:57:37-05:00</dc:date>
        </item>
            <item rdf:about="https://pecl.php.net/package-changelog.php?package=yaconf&amp;release=1.2.0">
            <title>yaconf 1.2.0</title>
            <link>https://pecl.php.net/package-changelog.php?package=yaconf&amp;amp;release=1.2.0</link>
            <description>
                - Added sub-directory support: INI files in sub-directories are loaded recursively (up to 16 levels) and namespaced by the directory name (&#039;sub/x.ini&#039; as &#039;sub.x&#039;)
- Added hot-reload tracking of sub-directories
- Optimized config storage with compact block (two-phase compaction)
- Added PHP PIE support
- A name conflict between an INI file and a same-named directory now raises a warning: the directory wins and the file is skipped
- Fixed memory leaks when a dot-notation key overrides a scalar value
- Fixed memory leak on foreach-by-ref over compact block tables with PHP 7.0
- Changed Yaconf::__debug_info() to report the stored value&#039;s address            </description>
            <dc:date>2026-08-18T04:42:21-05:00</dc:date>
        </item>
            <item rdf:about="https://pecl.php.net/package-changelog.php?package=Judy&amp;release=2.5.1">
            <title>Judy 2.5.1</title>
            <link>https://pecl.php.net/package-changelog.php?package=Judy&amp;amp;release=2.5.1</link>
            <description>
                - FIX: string keys containing an embedded NUL byte are now rejected with an
  exception on all six string-keyed types, instead of being silently truncated
  at the NUL. Previously STRING_TO_INT and STRING_TO_MIXED truncated the key, so
  &quot;ab\0cd&quot; and &quot;ab&quot; collided and one value was destroyed with no signal; the
  four *_HASH/*_ADAPTIVE types already rejected such keys on write but still
  truncated them on every ordered and range operation (first/last/searchNext/
  prev/slice/deleteRange and the bounds of keys/values/toArray/size), because
  all six seek through the same JudySL key index. JudySL keys are NUL-terminated
  by construction, so rejecting is the only correct behaviour. High-byte keys
  (0x80-0xFF) are unaffected and remain binary-safe, including 0xFF prefix-carry
  arithmetic. See MIGRATION_2.5.0.md.            </description>
            <dc:date>2026-08-18T03:55:11-05:00</dc:date>
        </item>
            <item rdf:about="https://pecl.php.net/package-changelog.php?package=Judy&amp;release=2.5.0">
            <title>Judy 2.5.0</title>
            <link>https://pecl.php.net/package-changelog.php?package=Judy&amp;amp;release=2.5.0</link>
            <description>
                - BC BREAK: a negative integer offset now stores that key instead of appending.
  Integer keys are unsigned machine words, so $j[-1] = $v addresses the maximum
  index and reads back as -1. Previously every key in [PHP_INT_MIN, -1] was
  discarded and the value appended at the next free index, so isset($j[-1]) was
  false immediately after the write. See MIGRATION_2.5.0.md.
- BC BREAK: $j[] = $v now throws when the maximum index is occupied, instead of
  wrapping onto index 0 and overwriting it.
- FIX: $j[] = $v no longer loses a value after a negative-offset write left the
  append watermark stale
- FIX: map()/filter() preserve negative keys instead of relocating them
- SECURITY: fix use-after-free write on *_TO_MIXED overwrite/unset when a stored
  value&#039;s destructor re-enters and mutates the same array (write-before-dtor /
  delete-before-free)
- SECURITY: fix type confusion (UB) in getAll()/next()/rewind() for adaptive
  types, which queried a JudyHS operation against the JudyL (SSO) store
- FIX: add get_gc handler so reference cycles through MIXED values are collectable
  (previously leaked until request shutdown)
- FIX: STRING_TO_*_ADAPTIVE counter no longer double-counts when the value 0 is
  re-stored (size/count/equals/averageValues were affected)
- FIX: $j[] = append after clone/fromArray/putAll no longer overwrites index 0
- FIX: first()/last()/searchNext()/prev() now work on adaptive types
- FIX: fromArray()/putAll() reject non-integer keys on integer-keyed types instead
  of inserting at the string&#039;s hash
- FIX: __unserialize() on a populated object frees prior contents (no leak)
- FIX: forEach()/filter()/map() callbacks may re-enter without corrupting iteration
- FIX: equals() on INT_TO_PACKED no longer risks an infinite loop
- FIX: allocation failure (JERR) during write/unset is reported as failure, not success
- FIX: bulk operations stop on the first thrown key instead of continuing with a
  pending exception; clone/slice no longer leak zvals or diverge on OOM paths
- FEATURE: keys(), values() and toArray() take an inclusive [$start, $end] key
  range, where null leaves that side unbounded. All key types; string-keyed types
  require string bounds and compare them lexicographically. A bounded read is one
  traversal writing straight into the PHP array — prefer it to slice($lo,
  $hi)-&gt;keys(), which copies a whole sub-array first.
- FEATURE: size($start, $end) counts that same range, including on the six
  string-keyed types, without materialising anything. Previously it accepted
  string bounds, ignored them, and returned the whole-array count. Its parameters
  were renamed $index_start/$index_end -&gt; $start/$end to match the other range
  methods, which breaks named-argument callers only; its defaults moved from
  (0, -1) to (null, null). populationCount() is unchanged and stays
  integer-keyed-only — it answers from libJudy&#039;s O(1) population cache, which the
  string-keyed stores lack. See MIGRATION_2.5.0.md.
- FEATURE: new Judy($type, optimizeIteration: true) mirrors payloads into the key
  index for 24-47% faster ordered reads, at a write-path and memory cost. Opt-in,
  per-instance, off by default, and honoured only by STRING_TO_INT_HASH and
  STRING_TO_INT_ADAPTIVE; isIterationOptimized() reports what took effect.
- FEATURE: Judy instances are now legible to debuggers — var_dump()/print_r()
  show type, count, memory usage, first/last key and a bounded element preview
  (judy.debug_preview_size). Ships lldb/gdb pretty-printers for the extension&#039;s
  own structs under scripts/.
- FEATURE: set operations (intersect/diff/xor) now supported for STRING_TO_INT_ADAPTIVE
- BUILD: extension compiles warning-free; CI now fails on any new compiler warning
- BUILD: minimum PHP raised to 8.1 (PHP 8.0 is no longer tested in CI)            </description>
            <dc:date>2026-08-17T23:48:34-05:00</dc:date>
        </item>
            <item rdf:about="https://pecl.php.net/package-changelog.php?package=Judy&amp;release=2.4.2">
            <title>Judy 2.4.2</title>
            <link>https://pecl.php.net/package-changelog.php?package=Judy&amp;amp;release=2.4.2</link>
            <description>
                - SECURITY: fix use-after-free write on *_TO_MIXED overwrite/unset when a stored
  value&#039;s destructor re-enters and mutates the same array (write-before-dtor /
  delete-before-free)
- SECURITY: fix type confusion (UB) in getAll()/next()/rewind() for adaptive
  types, which queried a JudyHS operation against the JudyL (SSO) store
- FIX: add get_gc handler so reference cycles through MIXED values are collectable
  (previously leaked until request shutdown)
- FIX: STRING_TO_*_ADAPTIVE counter no longer double-counts when the value 0 is
  re-stored (size/count/equals/averageValues were affected)
- FIX: $j[] = append after clone/fromArray/putAll no longer overwrites index 0
- FIX: first()/last()/searchNext()/prev() now work on adaptive types
- FIX: fromArray()/putAll() reject non-integer keys on integer-keyed types instead
  of inserting at the string&#039;s hash
- FIX: __unserialize() on a populated object frees prior contents (no leak)
- FIX: forEach()/filter()/map() callbacks may re-enter without corrupting iteration
- FIX: equals() on INT_TO_PACKED no longer risks an infinite loop
- FIX: allocation failure (JERR) during write/unset is reported as failure, not success
- FIX: bulk operations stop on the first thrown key instead of continuing with a
  pending exception; clone/slice no longer leak zvals or diverge on OOM paths
- FEATURE: set operations (intersect/diff/xor) now supported for STRING_TO_INT_ADAPTIVE
- BUILD: extension compiles warning-free; CI now fails on any new compiler warning
- BUILD: minimum PHP raised to 8.1 (PHP 8.0 is no longer tested in CI)            </description>
            <dc:date>2026-08-14T16:58:37-05:00</dc:date>
        </item>
            <item rdf:about="https://pecl.php.net/package-changelog.php?package=Judy&amp;release=2.4.1">
            <title>Judy 2.4.1</title>
            <link>https://pecl.php.net/package-changelog.php?package=Judy&amp;amp;release=2.4.1</link>
            <description>
                - FIX: PHP 8.6 build -- XtOffsetOf() alias removed in PHP 8.6.0alpha2; use
  standard C offsetof() instead (thanks Remi Collet, PR #65)            </description>
            <dc:date>2026-08-14T05:10:54-05:00</dc:date>
        </item>
            <item rdf:about="https://pecl.php.net/package-changelog.php?package=zstd&amp;release=0.18.0">
            <title>zstd 0.18.0</title>
            <link>https://pecl.php.net/package-changelog.php?package=zstd&amp;amp;release=0.18.0</link>
            <description>
                - add: built-in list of uncompressible MIME types for transparent output compression
- add: negation tokens (!) in zstd.output_compression_exclude_types to compress a MIME type even though it is in the built-in list            </description>
            <dc:date>2026-08-14T00:10:18-05:00</dc:date>
        </item>
            <item rdf:about="https://pecl.php.net/package-changelog.php?package=brotli&amp;release=0.21.0">
            <title>brotli 0.21.0</title>
            <link>https://pecl.php.net/package-changelog.php?package=brotli&amp;amp;release=0.21.0</link>
            <description>
                - add: built-in MIME type exclusion list for transparent output compression
- add: negation tokens (!) in brotli.output_compression_exclude_types
- add: phpinfo() improvements (bundled/external library, APCu serializer status)
- fix: memory leak when BrotliEncoderCompressStream() fails on PHP 7.4+
- fix: compiler warnings            </description>
            <dc:date>2026-08-14T00:06:52-05:00</dc:date>
        </item>
            <item rdf:about="https://pecl.php.net/package-changelog.php?package=taint&amp;release=3.0.0">
            <title>taint 3.0.0</title>
            <link>https://pecl.php.net/package-changelog.php?package=taint&amp;amp;release=3.0.0</link>
            <description>
                - Support PHP 8.0 up to 8.5
- Dropped PHP 7 support (use taint 2.1.x for PHP 7.x)
- Propagate the taint mark through the frameless call fast paths (PHP 8.4+)
- Extended sink coverage (see README for the full list)            </description>
            <dc:date>2026-08-10T08:03:35-05:00</dc:date>
        </item>
    
</rdf:RDF>
