nanopb-0.4.1 (2019-02-02)
 Fix invalid free() after failed realloc() (GHSA-gcx3-7m76-287p)
 Avoid overflows in allocation for packed fields.
 Verify stream size before allocating string / bytes.
 Add workaround for avr-libc realloc() bug (#475)
 Fix bug with field numbers >255 (#407)
 Fix compilation error on platforms without uint8_t (#485)
 Fix warnings on Python3.8 (#399, #467)
 Make fixed_count option work when combined with FT_POINTER.
 Add missing #define for submsg callbacks, add regression test (#472)
 Fix ImportError when using generator/protoc with Python 3
 Remove accidental debug code in generator
 Reduce stack usage (#484)
 Remove PB_FIELDINFO_WIDTH option (#473)
 Add nanopb-specific package name option (#422)
 Add testcase for Any type (#163)
 Add exclude option also from .proto/.options
 Set default include path in the grpc_tools protoc wrapper.
 Add workaround for python-protobuf 3.6.1 bug (#478)
 Detect invalid wire type when decoding fields.
 Improved fuzz testing

nanopb-0.4.0 (2019-12-20)
 New field descriptor format.
 Make nanopb_generator automatically compile .proto files (#462)
 Allow installing as Python package from pip (#460)
 Use protoc from grpcio-tools Python package if available (#463)
 Change proto3 message types to be optional (#308, #452)
 Add pb_decode_ex(), pb_encode_ex() functions.
 Automatically rebuild nanopb_pb2.py
 Use plugin.proto that comes with python-protobuf (#234)

 Allow specifying a per-message callback. (#175)
 Improve callback handling inside oneofs. (#175)

 Introduce new compile time flag: PB_VALIDATE_UTF8 (#437)
 Add TypenameMangling.M_PACKAGE_INITIALS (#394)
 Introduce new compile time flag: PB_ENCODE_ARRAYS_UNPACKED (#427)
 Add default_has option (#423)
 Add option for including extra files from .pb.h
 Add generator option to error out on unmatched options (#458)
 Generator: Allow comma separated options in plugin mode (#343)
 Allow comma-separated option parsing to handle `#include` (#450)
 Remove timestamp from generated files by default, add -t to keep it.
 Make --no-strip-path default (#326)
 Fix .options file case sensitivity on Windows.
 Fix generator error with mangle_names option (#380)
 Take int_size setting into account in calculating message sizes (#373)
 .gitignore: don't ignore generator-bin files (#419)
 Cleanup .pb.h header format

 Make tests run on AVR and STM32
 Add PB_CONVERT_DOUBLE_FLOAT setting to convert doubles on AVR.
 Store field descriptor constants in flash on AVR (#464)
 Added "f" suffix to const float declarations. (#453)
 Fix clang-tidy warnings about using signed integers in binary bitwise operations (#451)
 Add C++ message descriptors helper (#384)
 Implement conan recipe (#378)
 CMake: Split nanopb_out command (#454)
 CMake: install created shared library(dll) in windows to the binary folder (#447)

nanopb-0.3.9.5 (2020-02-02)
 Fix invalid free() after failed realloc() (GHSA-gcx3-7m76-287p)
 Add workaround for avr-libc realloc() bug (#475)
 Fix empty submessages getting encoded in proto3 mode (#395)
 Avoid overflows in allocation for packed fields.

nanopb-0.3.9.4 (2019-10-13)
 Fix undefined behavior with bool fields (#434)
 Fix enum min/max defines when values are not in order (#405)
 Fix network_server socket example with zero-length strings (#421)
 Don't call stream read callback with count=0 (#421)
 Add compile time flag PB_ENCODE_ARRAYS_UNPACKED (#427)

nanopb-0.3.9.3 (2019-03-08)
 NOTE: nanopb-0.3.9.3.tar.gz before 2019-03-21 was accidentally from 0.4 branch (#388)
 Fix fixed size and callback repeated fields inside proto3 submessages (#376, #382, #386)
 Fix incorrect PB_STATIC_ASSERT for bytes inside oneof (#363)
 Fix generator error with mangle_names option (#380)
 Generator: Allow comma separated options in plugin mode (#343)

nanopb-0.3.9.2 (2018-11-10)
 Erroneous free() when using callbacks combined with PB_ENABLE_MALLOC (#346)
 Fix possible null-pointer dereference in decode_callback_field (#342)
 Fix FindNanopb.cmake on Windows (#335)
 Fix large generator memory usage with oneof fields (#338)
 Fix error in splint test (#359)
 Allow cmake to build as a shared library (#352, #353)
 Add --no-strip-path command line option (#326)
 Option for flattening nested protobuf names (#333)
 Documentation fixes (#329, #350, #358)
 Better error messages (#351)

nanopb-0.3.9.1 (2018-04-14)
 Fix handling of special characters in string/bytes default values (issue #322)
 Fix encoding of negative numbers with PB_WITHOUT_64BIT (#285)
 Fix _zero initializer for enums that don't begin at 0. (#295)
 Multiple CMake fixes (#296, #299, #304, #312, #320)
 Fix compiler warnings (#305)
 Fix scons rules for Python 3
 Add check for large extension field number (issue #306)
 Updated included descriptor.proto version (#314)
 Resolve oneof sizes symbolically when needed (#311)
 Add fixed_count option (#260)
 Add some verbose prints in generator (issue #238)
 Add test/example of using 'map' type. (#289)

nanopb-0.3.9 (2017-09-23)
 Fix bugs in proto3 encoding of submessages (#256)
 Fix message size calculation for arrays of size 1 (#253)
 Fix segfault with FT_CALLBACK inside FT_POINTER (#259)
 Properly detect truncated tags in corrupted messages (#277)
 Make pb_decode_varint32 overflow checks exact (#258)
 Add option to build without 64-bit support (#86)
 Add options to define source and header file extensions (#264)
 Add pb_en/decode_nullterminated() (part of #278)
 Add pb_decode_delimited_noinit (#284)
 CMake: add dependency for .options file (#265)
 CMake: change use of relative paths (#250,#271,#273)
 Better error message for missing max_size option (#281)
 Travis-CI build fixes (#283)
 Add Bazel build system file (#266)

nanopb-0.3.8 (2017-03-05)
 Fix problems with multiple oneofs in same message (#229)
 Zero-valued extension fields were mistakenly ignored by encoder (#242)
 Multiple fixes related to proto3 mode (#242, #245, #247, #249)
 Fix potential unaligned access (#226, #227)
 Fix documentation for protoc --plugin argument (#239)
 Extend inline / fixed length bytes array support (#244)
 Add new option max_length for strings (#107)
 Make string substream API more robust (#230)
 Make pb_decode_varint32 public API (#231)
 Allow overriding proto3 mode (#228)
 Add optional enum->string mapping function (#223)
 Add transitional options.proto file (#241)
 Add better error message on Python library version imcompatibility (#240)
 Include version number in PlatformIO library.json (#222)
 CMake build script changes (#236, #237)
 Change download links to https
 Improvements to test cases.

nanopb-0.3.7 (2016-10-30)
 Add support for proto3-style singular fields (#182, #206, #216)
 Updated binary package protoc to version 3.1.0
 Add FT_INLINE allocation of bytes fields (#211)
 Include package name in include guard (#207)
 Fix missing warning with large bytes fields (issue #220)
 Added CMake project (#208)
 Add bazel BUILD file for nanopb (#209)
 Added an AUTHORS file (#211)
 Documentation updates
 Improvements to test cases.

nanopb-0.3.6 (2016-06-19)
 Protect against corrupted _count fields in pb_release (#205)
 Fix error in STATIC_ASSERT with multiple files (#203)
 Add -D option to specify output directory (#193)
 Generate MIN/MAX/ARRAYSIZE defines for enums (#194)
 Generate comments about uncalculable message sizes (#195)
 Documentation updates (#196, #201)
 Improvements to test cases.

nanopb-0.3.5 (2016-02-13)
 NOTE: If you are using pb_syshdr.h, you will need to add uint_least8_t
 definition. See docs/migration.rst for details.

 Fix generator crash with Enum inside Oneof (#188)
 Fix some generator regressions related to .options file path (#172)
 Add support for platforms without uint8_t (#191)
 Allow const parameter to pb_istream_from_buffer (#152)
 Ignore null pointers in pb_release() (#183)
 Add support for anonymous unions (#184)
 Add Python3 support to the generator (#169)
 Add code generator insertion points to generated files (#178)
 Improvements to CMake script (#181)
 Improvements to test cases.

nanopb-0.3.4 (2015-09-26)
 Fix handling of unsigned 8- and 16-bit enums (issue 164)
 Fix generator on systems where python = python3. (issue 155)
 Fix compiler warning on GCC 5.x (issue 171)
 Make the generator better handle imported .protos (issue 165)
 Add packed_enum option to generator.
 Add syntax= line to .proto files (issue 167)
 Add PlatformIO registry manifest file. (pr 156)

nanopb-0.3.3 (2015-04-10)
 Fix missing files in Linux binary package (issue 146)
 Fix generator bug when oneof is first field in a message. (issue 142)
 Fix generator error when long_names:false is combined with Oneofs. (issue 147)
 Fix oneof submessage initialization bug. (issue 149)
 Fix problem with plugin options on Python 2.7.2 and older. (issue 153)
 Fix crash when callback is inside oneof field. (issue 148)
 Switch to .tar.gz format for Mac OS X packages. (issue 154)
 Always define enum long names so that cross-file references work. (issue 118)
 Add msgid generator option. (issue 151)
 Improve comment support in .options files. (issue 145)
 Updates for the CMake rule file, add cmake example.
 Better error messages for syntax errors in .options file

nanopb-0.3.2 (2015-01-24)
 Fix memory leaks with PB_ENABLE_MALLOC with some submessage hierarchies (issue 138)
 Implement support for oneofs (C unions). (issues 131, 141)
 Add int_size option for generator (issue 139)
 Add compilation option to disable struct packing. (issue 136)
 Change PB_RETURN_ERROR() macro to avoid compiler warnings (issue 140)
 Fix build problems with protoc 3.0.0
 Add support for POINTER type in extensions
 Initialize also extension fields to defaults in pb_decode().
 Detect too large varint values when decoding.

nanopb-0.3.1 (2014-09-11)
 Fix security issue due to size_t overflows. (issue 132)
 Fix memory leak with duplicated fields and PB_ENABLE_MALLOC
 Fix crash if pb_release() is called twice.
 Fix cyclic message support (issue 130)
 Fix error in generated initializers for repeated pointer fields.
 Improve tests (issues 113, 126)

nanopb-0.3.0 (2014-08-26)
 NOTE: See docs/migration.html or online at
 http://koti.kapsi.fi/~jpa/nanopb/docs/migration.html
 for changes in this version. Most importantly, you need to add
 pb_common.c to the list of files to compile.

 Separated field iterator logic to pb_common.c (issue 128)
 Change the _count fields to use pb_size_t datatype (issue 82)
 Added PB_ prefix to macro names (issue 106)
 Added #if version guard to generated files (issue 129)
 Added migration document

nanopb-0.2.9.4 (2020-02-02)
 Fix invalid free() after failed realloc() (GHSA-gcx3-7m76-287p)
 Add workaround for avr-libc realloc() bug (#475)

nanopb-0.2.9.3 (2016-06-19)
 Protect against corrupted _count fields in pb_release (#205)

nanopb-0.2.9.2 (2015-01-24)
 Fix memory leaks with PB_ENABLE_MALLOC with some submessage hierarchies (issue 138)
 Fix compilation error with generated initializers for repeated pointer fields

nanopb-0.2.9.1 (2014-09-11)
 Fix security issue due to size_t overflows. (issue 132)
 Fix memory leak with duplicated fields and PB_ENABLE_MALLOC
 Fix crash if pb_release() is called twice.

nanopb-0.2.9 (2014-08-09)
 NOTE: If you are using the -e option with the generator, you have
 to prepend . to the argument to get the same behaviour as before.

 Do not automatically add a dot with generator -e option. (issue 122)
 Fix problem with .options file and extension fields. (issue 125)
 Don't use SIZE_MAX macro, as it is not in C89. (issue 120)
 Generate #defines for initializing message structures. (issue 79)
 Add skip_message option to generator. (issue 121)
 Add PB_PACKED_STRUCT support for Keil MDK-ARM toolchain (issue 119)
 Give better messages about the .options file path. (issue 124)
 Improved tests

nanopb-0.2.8 (2014-05-20)
 Fix security issue with PB_ENABLE_MALLOC. (issue 117)
 Add option to not add timestamps to .pb.h and .pb.c preambles. (issue 115)
 Documentation updates
 Improved tests

nanopb-0.2.7 (2014-04-07)
 Fix bug with default values for extension fields (issue 111)
 Fix some MISRA-C warnings (issue 91)
 Implemented optional malloc() support (issue 80)
 Changed pointer-type bytes field datatype
 Add a "found" field to pb_extension_t (issue 112)
 Add convenience function pb_get_encoded_size() (issue 16)

nanopb-0.2.6 (2014-02-15)
 Fix generator error with bytes callback fields (issue 99)
 Fix warnings about large integer constants (issue 102)
 Add comments to where STATIC_ASSERT is used (issue 96)
 Add warning about unknown field names on .options (issue 105)
 Move descriptor.proto to google/protobuf subdirectory (issue 104)
 Improved tests

nanopb-0.2.5 (2014-01-01)
 Fix a bug with encoding negative values in int32 fields (issue 97)
 Create binary packages of the generator + dependencies (issue 47)
 Add support for pointer-type fields to the encoder (part of issue 80)
 Fixed path in FindNanopb.cmake (issue 94)
 Improved tests

nanopb-0.2.4 (2013-11-07)
 Remove the deprecated NANOPB_INTERNALS functions from public API.
 Document the security model.
 Check array and bytes max sizes when encoding (issue 90)
 Add #defines for maximum encoded message size (issue 89)
 Add #define tags for extension fields (issue 93)
 Fix MISRA C violations (issue 91)
 Clean up pb_field_t definition with typedefs.

nanopb-0.2.3 (2013-09-18)
 Improve compatibility by removing ternary operator from initializations (issue 88)
 Fix build error on Visual C++ (issue 84, patch by Markus Schwarzenberg)
 Don't stop on unsupported extension fields (issue 83)
 Add an example pb_syshdr.h file for non-C99 compilers
 Reorganize tests and examples into subfolders (issue 63)
 Switch from Makefiles to scons for building the tests
 Make the tests buildable on Windows

nanopb-0.2.2 (2013-08-18)
 Add support for extension fields (issue 17)
 Fix unknown fields in empty message (issue 78)
 Include the field tags in the generated .pb.h file.
 Add pb_decode_delimited and pb_encode_delimited wrapper functions (issue 74)
 Add a section in top of pb.h for changing compilation settings (issue 76)
 Documentation improvements (issues 12, 77 and others)
 Improved tests

nanopb-0.2.1 (2013-04-14)
 NOTE: The default callback function signature has changed.
       If you don't want to update your code, define PB_OLD_CALLBACK_STYLE.
 
 Change the callback function to use void** (issue 69)
 Add support for defining the nanopb options in a separate file (issue 12)
 Add support for packed structs in IAR and MSVC (in addition to GCC) (issue 66)
 Implement error message support for the encoder side (issue 7)
 Handle unterminated strings when encoding (issue 68)
 Fix bug with empty strings in repeated string callbacks (issue 73)
 Fix regression in 0.2.0 with optional callback fields (issue 70)
 Fix bugs with empty message types (issues 64, 65)
 Fix some compiler warnings on clang (issue 67)
 Some portability improvements (issues 60, 62)
 Various new generator options
 Improved tests

nanopb-0.2.0 (2013-03-02)
 NOTE: This release requires you to regenerate all .pb.c
       files. Files generated by older versions will not
       compile anymore.

 Reformat generated .pb.c files using macros (issue 58)
 Rename PB_HTYPE_ARRAY -> PB_HTYPE_REPEATED
 Separate PB_HTYPE to PB_ATYPE and PB_HTYPE
 Move STATIC_ASSERTs to .pb.c file
 Added CMake file (by Pavel Ilin)
 Add option to give file extension to generator (by Michael Haberler)
 Documentation updates

nanopb-0.1.9 (2013-02-13)
 Fixed error message bugs (issues 52, 56)
 Sanitize #ifndef filename (issue 50)
 Performance improvements
 Add compile-time option PB_BUFFER_ONLY
 Add Java package name to nanopb.proto
 Check for sizeof(double) == 8 (issue 54)
 Added generator option to ignore some fields. (issue 51)
 Added generator option to make message structs packed. (issue 49)
 Add more test cases.

nanopb-0.1.8 (2012-12-13)
 Fix bugs in the enum short names introduced in 0.1.7 (issues 42, 43)
 Fix STATIC_ASSERT macro when using multiple .proto files. (issue 41)
 Fix missing initialization of istream.errmsg
 Make tests/Makefile work for non-gcc compilers (issue 40)

nanopb-0.1.7 (2012-11-11)
 Remove "skip" mode from pb_istream_t callbacks. Example implementation had a bug. (issue 37)
 Add option to use shorter names for enum values (issue 38)
 Improve options support in generator (issues 12, 30)
 Add nanopb version number to generated files (issue 36)
 Add extern "C" to generated headers (issue 35)
 Add names for structs to allow forward declaration (issue 39)
 Add buffer size check in example (issue 34)
 Fix build warnings on MS compilers (issue 33)

nanopb-0.1.6 (2012-09-02)
 Reorganize the field decoder interface (issue 2)
 Improve performance in submessage decoding (issue 28)
 Implement error messages in the decoder side (issue 7)
 Extended testcases (alltypes test is now complete).
 Fix some compiler warnings (issues 25, 26, 27, 32).

nanopb-0.1.5 (2012-08-04)
 Fix bug in decoder with packed arrays (issue 23).
 Extended testcases.
 Fix some compiler warnings.

nanopb-0.1.4 (2012-07-05)
 Add compile-time options for easy-to-use >255 field support.
 Improve the detection of missing required fields.
 Added example on how to handle union messages.
 Fix generator error with .proto without messages.
 Fix problems that stopped the code from compiling with some compilers.
 Fix some compiler warnings.

nanopb-0.1.3 (2012-06-12)
 Refactor the field encoder interface.
 Improve generator error messages (issue 5)
 Add descriptor.proto into the #include exclusion list
 Fix some compiler warnings.

nanopb-0.1.2 (2012-02-15)
 Make the generator to generate include for other .proto files (issue 4).
 Fixed generator not working on Windows (issue 3)

nanopb-0.1.1 (2012-01-14)
 Fixed bug in encoder with 'bytes' fields (issue 1).
 Fixed a bug in the generator that caused a compiler error on sfixed32 and sfixed64 fields.
 Extended testcases.

nanopb-0.1.0 (2012-01-06)
 First stable release.
