rybakit/msgpack

A pure PHP implementation of the MessagePack binary serialization format

Library
Composer
vv0.10.0
408stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
41/100Fair
Development Activity12
Maintenance20
Community52
Maturity60
Momentum20

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
78/100Good
Architecture82
Code Quality84
Innovation66
Learning Curve80

rybakit/msgpack is a pure PHP library implementing the MessagePack serialization format, a compact binary alternative to JSON that produces smaller payloads and faster parsing. It is fully compliant with the latest MessagePack specification and requires no PHP extensions, working anywhere PHP runs.

Beyond basic packing and unpacking, the library supports streaming unpacking of buffered data, configurable handling of unsigned 64-bit integers, custom type transformers for serializing objects, and application-specific extension types including the standard Timestamp extension. It pairs a clean object API with thoughtful options for tuning both correctness and performance.

What You Get

  • A Packer and BufferUnpacker for encoding and decoding MessagePack binary data
  • Streaming unpacking that consumes data incrementally from a growing buffer
  • Configurable packing and unpacking options for integers, floats, strings, and binary
  • Custom type transformers and extension support, including the standard Timestamp extension

Common Use Cases

  • Serializing data for compact network transport between services
  • Caching structured PHP data in a smaller, faster-to-parse binary form
  • Communicating with systems and databases that speak the MessagePack protocol
  • Encoding messages for queues where payload size and speed matter

Under The Hood

Architecture - The library centers on two engines: Packer.php encodes PHP values to MessagePack bytes and BufferUnpacker.php decodes them, with a lightweight MessagePack.php facade for one-shot pack/unpack; PackOptions.php and UnpackOptions.php expose bitmask option objects, while Type/, TypeTransformer/, and Extension/ provide the pluggable custom-type and extension (e.g. Timestamp) machinery, and Exception/ defines the error hierarchy. Tech Stack - Pure PHP (98% of the codebase) with no runtime dependencies or C extensions, distributed via Composer as rybakit/msgpack, using Shell scripts only for CI/benchmark tooling. Code Quality - The project is mature and well engineered, with a fuzzed and coverage-tracked QA test suite, clear separation of concerns via the CanPack/CanBePacked interfaces, and idiomatic PHP; recent commit activity is modest but the codebase is stable. API Design - The public API is small and ergonomic: instantiate a Packer or BufferUnpacker, call pack()/unpack(), and opt into behavior via readable option constants and transformer registration, all documented in a thorough README with runnable examples.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search