nanopb


Protocol Buffers with small code size

Nanopb is a plain-C implementation of Google's Protocol Buffers data format. It is targeted at 32 bit microcontrollers, but is also fit for other embedded systems with tight (2-10 kB ROM, <1 kB RAM) memory constraints. Nanopb supports static memory allocation, i.e. you don't need a malloc implementation and can be sure of the memory requirements of your code.



Nanopb project has moved

Due to Google Code closing down, nanopb project is now hosted on GitHub: https://github.com/nanopb/nanopb



Status

The nanopb core is stable, well tested and supports the following features:

  • All protobuf data types
  • Required, repeated and optional fields
  • Packed arrays
  • Nested submessages
  • Default values for fields
  • Extension fields

Releases

Stable releases of the library are released approximately once a month, unless there are no new developments:

Download stable releases

The newest git master is also relatively stable. Any breaking development happens in separate branches. For testing the newest features, check out the repository:

git clone https://code.google.com/p/nanopb/

Documentation and support

Read the latest documentation online Ask questions on the discussion forum Report bugs on the issue tracker

Benchmarks

Here are some benchmarks of nanopb against other C-based protobuf libraries. Accuracy nor fairness is guaranteed, but full set of scripts to run the benchmarks are provided.

https://koti.kapsi.fi/~jpa/nanopb/benchmark/arm_code.png

Also code coverage information is available.

License

License is the zlib license. See LICENSE in the source repository.

Project Information

The project was created on Jan 5, 2012.

Labels:
ProtocolBuffers C Embedded Microcontroller Python