Back to directory

pb-jelly

A protobuf code-generation framework for Rust, built at Dropbox for its storage and sync systems, offering Rust-specific extensions and zero-copy deserialization that general-purpose protobuf libraries do not provide.

pb-jelly

pb-jelly is a protobuf code-generation framework for Rust, originally written at Dropbox to move large volumes of bytes through its storage system without the extra copies that came from serializing structs to protobuf messages and then serializing again in an RPC layer. Taking control of code generation and integrating it directly with Dropbox's RPC stack removed those redundant copies.

It generates Rust-oriented protobuf extensions, such as boxing a field or giving it a custom type, generates a separate crate per module with an auto-generated Cargo.toml, supports Serde though not in a way compliant with the JSON protobuf specification, and can automatically box fields to handle recursive message definitions. Zero-copy deserialization is available for bytes fields through a lazy wrapper enabled by a proto extension.

It supports both proto2 and proto3 syntax and is used in several of Dropbox's systems, including its Sync Engine and Magic Pocket storage system. It is written in Rust under the Apache-2.0 license.

More in Libraries

See all 292
  • OpenDecision

    deepanwadhwa.github.io

    An open-source Python package that answers typed questions about application state or documents using a local natural-language-inference model, returning structured choice, score, yes/no or evidence-relation values instead of free text.

  • TradeCanvas

    bonguynvan.github.io

    A zero-dependency canvas charting engine for building TradingView-style trading charts in JavaScript, with 66 technical indicators, 24 drawing tools, 17 chart types, and real-time streaming.

  • 3d retro graphics

    3d-retro.com

    A free, CC0-licensed library of copy-paste retro 3D and demoscene graphics effects, such as plasma, raytracing, and voxel terrain, runnable as WebGL 1 or plain 2D canvas.