feat: add the igbinary extension - #108
Conversation
Appwrite is moving its Redis cache payloads from JSON to igbinary through utopia-php/cache 5.1's Igbinary codec, which needs the extension in the image. igbinary 3.2.17RC1 is the first tag that builds on PHP 8.5 and no final 3.2.17 exists yet, so the commit is inlined in the build stage instead of catalogued for the weekly updater, which only understands x.y.z pins. Move it into the catalog once igbinary tags a final release. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
| - gd | ||
| - hash | ||
| - iconv | ||
| - igbinary |
There was a problem hiding this comment.
Module Test Mirrors Configuration
Adding igbinary to the php -m output list only confirms that the Dockerfile enabled the module; it does not exercise serialization or deserialization. This violates the repository directive to test observable behavior instead of mirroring source configuration and could allow a loaded but nonfunctional extension to pass. This requirement must be satisfied before merging, for example with a command test that round-trips a representative value through igbinary_serialize() and igbinary_unserialize().
Context Used: Call out and harshly judge implementation-coupled tests. We don't mirror source code, configuration, or version pins in assertions. We test observable behavior; use linters for syntax and schema checks. (source)
Prompt To Fix With AI
This is a comment left during a code review.
Path: tests.yaml
Line: 47
Comment:
**Module Test Mirrors Configuration**
Adding `igbinary` to the `php -m` output list only confirms that the Dockerfile enabled the module; it does not exercise serialization or deserialization. This violates the repository directive to test observable behavior instead of mirroring source configuration and could allow a loaded but nonfunctional extension to pass. This requirement must be satisfied before merging, for example with a command test that round-trips a representative value through `igbinary_serialize()` and `igbinary_unserialize()`.
**Context Used:** Call out and harshly judge implementation-coupled tests. We don't mirror source code, configuration, or version pins in assertions. We test observable behavior; use linters for syntax and schema checks. ([source](https://app.greptile.com/review/custom-context?memory=instruction-0))
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
|
CI confirms the pin: the image built on amd64 and arm64, and the structure test's |
Summary
igbinaryin the production image, alongside the other extensions.x.y.zpins and throws on anything else, so the commit is inlined in the build stage with a comment rather than declared asPHP_IGBINARY_VERSION/PHP_IGBINARY_COMMIT. Once igbinary tags a final release it should move into the catalog like the others.igbinaryto the module list intests.yamland a changelog entry under 2.1.0.Why
Appwrite is switching its Redis cache payloads from JSON to igbinary through the new
Igbinarycodec inutopia-php/cache5.1.0. On a page of 50 documents igbinary stores about a quarter of the bytes and loads 2.4x faster through Redis. The Appwrite PR depends on this landing and being released as 2.1.0.Testing
composer verifypasses (156 tests).🤖 Generated with Claude Code