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.
