nanopb-0.4.8 (2023-11-11)
 Fix name mangling with dependent proto files (#892, #899)
 Fix initializer macros for custom callback datatype (#806)
 Use UTF-8 encoding for generated files irrespective of locale (#868)
 Add integer size overrides for fixed width types (#897)
 Add ability to specify size of generated enums (#867)
 Provide define for largest message in file (#893)
 Automatically break circular dependencies (#881)
 Remove pkg_resources import to avoid deprecation warning (#887)
 Use static_assert keyword on MSVC in C89 mode (#843)
 platformio: Allow substitutions in custom_nanopb_protos (#882)
 CMakeLists: Add missing __init__.py to generator install (#841)
 CMakeLists: Add nanopb_PYTHON_INSTDIR_OVERRIDE (#875)
 CMakeLists: Rename installation directories (#845, #907)
 FindNanopb.cmake: Fix regression bug with relative include path (#888)
 FindNanopb.cmake: Ensure generator files are updated when cached (#847)
 FindNanopb.cmake: Fix generator call on Windows (#874)
 Bazel: multiple build rule fixes and updates (#855, #891, #904, #906, #919)

nanopb-0.4.7 (2022-12-11)
 Fix comments generation for submessages (#788)
 Fix handling of spaces in arguments passed through protoc (#810)
 Fix problems with multiple files and mangle_names option (#783, #820)
 Fix generator error when using M_STRIP_PACKAGE without package name (#795)
 Fix compilation error with fixed size array and FT_POINTER (#630)
 Fix wrong format in Python Poetry project file (#811)
 Fix unnecessary generator message when using --quiet (#831)
 Fix enum_to_string with C++ (#838)
 Fix /* */ inside .proto file comment
 Workaround python-protobuf version issues (#787)
 Safeguard substraction in pb_read() with custom streams (#697)
 Always include pb_release() as function, instead of macro. (#802)
 Allow using = instead of : with generator option -s
 Allow specifying include format without special characters (#810)
 Allow including headers from inside of extern C (#814)
 Add option NANOPB_PB2_TEMP_DIR to store nanopb_pb2.py in a temporary dir (#601)
 Add compile-time error message for when PB_FIELD_32BIT is needed (#680, #827)
 Add --c-style command line option for naming style (#199, #533, #791)
 Add --protoc-opt to nanopb_generator.py (#628)
 Add ENUMTYPE convenience macros (#803)
 Add Bazel build rules (#360, #500)
 Generator: keep order of messages when possible
 Test case improvements (#792)
 PlatformIO build rule improvements (#808, #809, #819, #834, #839, #840)
 CMake build rule improvements (#822)
 CMakeLists: use protoc wrapper script by default (#769)

nanopb-0.4.6 (2022-05-30)
 Fix passing of error message from substream callback (#703)
 Fix comments going to wrong member variables (#701)
 Fix regression in 0.4.3 where generator did not find all dependencies (#720)
 Fix FindNanopb.cmake not finding options file (#659)
 Fix double-definition errors with size_union (#692)
 Fix generator error with same inner message name (#746)
 Fix infinite recursion in generator/protoc script (#762)
 Fix unicode comment handling for Python 2 (#740)
 Fix compiler warnings with PB_BUFFER_ONLY (#717)
 Fix options dependency in nanopb.mk (#666)
 Fix handling of filenames with dot in them in FindNanopb.cmake (#756)
 Add fallback_type option (#772, #773)
 Use C11 static assert mechanism by default (#761, #766)
 Use 'static_assert'  keyword for iar (#679)
 Explicitly check for pItem == NULL to satisfy Xcode analyzer (#667, #674)
 Support --proto-path as alias to -I (#749)
 Refactor name mangling to separate class, improve error messages (#735)
 Move PB_WT_PACKED definition to the header to fix compiler warnings (#671)
 FindNanopb.cmake: use --nanopb_opt for option passing by default (#752)
 FindNanopb.cmake: Add option NANOPB_GENERATE_CPP_STANDALONE (#741)
 FindNanopb.cmake: Add PROTOC_OPTIONS variable (#768, #771)
 CMakeLists: add build interface for using as a submodule (#669)
 CMakeLists: fix error with nanopb_BUILD_GENERATOR=OFF (#764)
 CMakeLists: make more uniform (#676)
 CMakeLists: Fix uninitialized PYTHON_INSTDIR (#652)
 Clean up CMake examples (#741)
 Rebuild nanopb_pb2.py and print version numbers on import failure (#733, #742)
 Use memcpy instead of iterating on buf_read/write (#751)
 Add generator support for PlatformIO (#718)
 Add clean target to generator/proto/Makefile (#681)
 Windows .bats: use standard python invocation instead of py.exe launcher (#657)
 Fix problems running tests with newer SCons version
 Improve handling of varint overflows
 Improve optimization for little-endian platforms

NOTE: During development, prereleases were published on PlatformIO registry
as versions 0.4.6 - 0.4.6.3. The version 0.4.6.4 on PlatformIO corresponds
to the real final 0.4.6 release.

nanopb-0.4.5 (2021-03-22)
 Fix invalid free() with oneof (#647, GHSA-7mv5-5mxh-qg88)
 Fix unordered field numbers inside oneof causing fields to be ignored (#617)
 Fix pb_decode() not initializing fields inside oneof (#635
 Fix compiler errors with complex oneof hierarchy and sizeof() (#610)
 Fix descriptor width calculation for 64-bit types (#644)
 Fix compiler error in generated initializer for submessage callback (#631)
 Fix duplicate union definition in generated file (#637)
 Fix test case build error on SCons 4.1.0
 Pip package: include nanopb_pb2.py (#629)
 Make generator consider dependencies recursively (#610)
 Bazel build system updates (#633)
 Add support for including comments from .proto file (#85, #645)

nanopb-0.4.4 (2020-11-25)
 Fix memory leak with oneofs and PB_ENABLE_MALLOC (#615, GHSA-85rr-4rh9-hhwh)
 Fix generator error when oneof contains a single unresolved field size (#610)
 Fix unsigned enums not working correctly inside OneOf (#611)
 Fix recursion depth exceeded error in generator (#493)
 Add '--version' option to nanopb_generator.py (#607)
 Add support for proto3 optional fields introduced in protoc 3.12 (#591)
 Add better error message when enum type is not found (#592)
 Allow specifying descriptorsize on field level also (#546)
 Allow multiple targets to be created by calling NANOPB_GENERATE_CPP() (#596)
 Conanfile: Add protobuf-nanopb library to cpp_info.libs (#605)
 Include version number in generator verbose output
 Convert documentation to markdown format (#587)
 Remove outdated transitional generator/nanopb/options.proto.
 Test case improvements
 Documentation improvements

nanopb-0.4.3 (2020-09-21)
 Fix generator error when output is in current directory (#553)
 Fix issue with unknown message sizes being referred inside oneof encoded size calculation (#569)
 Fix problem with [default=xxxx, (nanopb).proto3=true] field option combination (#558)
 Fix cross compilation with Conan build system (#568)
 Better support C++ types in generated structs (#577)
 CMake rule improvements (#554, #555, #556, #561, #564)
 Generator: fix compatibility bug with Python 3.1 and earlier
 Make Linux and Mac packages use grpcio protoc
 Make pb_decode_varint32() reject overlong varint encodings.
 Performance optimizations
 Test case improvements
 Documentation improvements

NOTE: version 0.4.3 changes layout of pb_msgdesc_t. It requires recompiling .pb.c files and
thus breaks ABI compatibility. In general, ABI compatibility is not currently maintained
between any nanopb versions.

NOTE: There was an apparent false positive virus identification by Windows Defender of the
PyInstaller 3.6 based Windows package nanopb-0.4.3-windows-x86.zip. The package was replaced
by nanopb-0.4.3-p1-windows-x86.zip with rebuilt PyInstaller 4.0, which seems to avoid the problem.
Actual nanopb code is unchanged between the packages.

nanopb-0.4.2 (2020-06-23)
 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)
 Fix clang undefined behavior sanitizer errors.
 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)

Note: Windows binary packages in 0.4.2 and later require Windows 7 or newer.

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.9 (2022-04-23)
 Fix Xcode analyzer warnings (#667, #674)
 Fix clang sanitizer warnings

Note: there are no known functional differences between 0.3.9.8 and 0.3.9.9.
The changes are merely to fix warnings introduced by new compiler versions.

nanopb-0.3.9.8 (2021-03-22)
 Fix invalid free() with oneof (#647, GHSA-7mv5-5mxh-qg88)
 Don't generate lines with trailing spaces (#622)
 Verify stream size before allocating string / bytes (#620)

nanopb-0.3.9.7 (2020-11-25)
 Fix memory leak with oneofs and PB_ENABLE_MALLOC (#615, GHSA-85rr-4rh9-hhwh)
 Fix unsigned enums not working correctly inside OneOf (#611)
 Add '--version' option to nanopb_generator.py (#607)
 SwiftPM rule updates (#567, #585)

nanopb-0.3.9.6 (2020-06-23)
 Fix buffer overflow when encoding bytes with size set to 65535 (#547, GHSA-3p39-mfxg-hrq4)
 Fix proto3 submessage improperly considered empty (#504)
 Fix ImportError when using generator/protoc with Python 3
 Add build rules for Swift package manager (#549)

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 incompatibility (#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.5 (2020-06-23)
 Fix buffer overflow when encoding bytes with size set to 65535 (#547, GHSA-3p39-mfxg-hrq4)
 Backport Python 3 and protoc 3.x fixes to test cases

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.
