nanopb-0.4.2 (2020-06-xx)
 Fix buffer overflow when encoding bytes with size set to 65535 (#547, GHSA-3p39-mfxg-hrq4)
 Fix segfault with pointer fields and proto3_singular_msgs = true. (#504,#505)
 Fix Windows 10 temp file handling (#486)
 Fix macro name conflicts (ATMEGA32U4 UENUM and more) (#522)
 Fix generator error with nested messages and default values (#487)
 Fix nanopb_generator exception on enums with aliases (#535)
 Fix compile error when struct members are called X or a (#492)
 Fix sizeof(union ...) fallback not compiling with C++ (#415, #494)
 Fix "missing required field" error with submessage callback (#544)
 Fix field descriptor sizing with submsg_callback option (#545)
 Fix protoc calling on Python 2 (#503)
 Fix handling of varying NaN representations in PB_CONVERT_DOUBLE_FLOAT (#543)
 Change generator to use Python 3 by default (#441, #509)
 Binary packages updated to use Python 3 and grpcio-tools
 Add support for infinity and nan floating-point defaults (#530, #538)
 Add generator option sort_by_tag (#542)
 Add type_override option to override type defined in .proto (#497)
 Set proto2 enum fields to first value when no default is given, even if nonzero (#532,#539)
 Include protoc-gen-nanopb in path in protoc wrapper script
 Properly pass error status from protoc wrapper when calling binary protoc
 Generator: pass --include_imports when calling protoc (#494)
 Create intermediate directories when writing files to relative path (#512)
 Add current directory to include path for protoc (#499)
 Update readme to use nanopb_generator.py directly
 Regression test for proto3 incorrectly considered empty (#504)
 CMake: change package name to Nanopb for cmake 3.17 compatibility (#506)
 CMake: remove find_package(PythonInterp) (#508)
 CMake: use split --nanopb_opt only on protoc >= 3.6 (#515)
 CMake: Relax python version spec, allowing Python3. (#534)
 Swift package manager (#549)
 Rename BUILD as BUILD.bazel (#537)

nanopb-0.4.1 (2020-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.
