aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r--CHANGELOG.md562
1 files changed, 562 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..7ff4a4a
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,562 @@
+# Change Log
+
+## [0.6.2-pre]
+
+- CMake: avoid assuming location of build dir during configuration.
+- Use untyped integer constants in place of enums for public interface flags to
+ allow for safe bit masking operations (PR #248).
+- Added experimental support for generating `compile_commands.json` via
+ `CMakeList.txt` for use with clangd.
+- Remove `fallthrough` macro for improved portability (#247, #252).
+- Added `parse_float/double_compare`, `parse_float/double_is_equal` to
+ portable library, and added `parse_float/double_isnan` to mirror isinf.
+ This should help with GCC 32-bit double precision conversion issue.
+- Add Github Actions builds to replace stale Travis CI build. This also
+ includes source code fixes for some build variants. Although
+ Windows build is included it only covers recent 64-bit Windows. More
+ work is need for older Windows variants. (#250).
+- Increase maximum allowed schema file size from 64 KiB to 1 MB (#256).
+- Fix seg fault in json parser while adding null characters to a too
+ short input string for a fixed length char array struct field (#257).
+
+## [0.6.1]
+
+- Add `flatcc_builder_alloc` and `flatcc_builder_free` to handle situations
+ where standard allocation has been redefined via macros so `free` is no longer
+ safe to use. These are similar to the existing `aligned_alloc/free` functions.
+- Fix a potential, but never seen, low level race condition in the builder when
+ writing a union field because the builder might reallocate between type
+ field and value field. Affects `flacc_common_builder.h` but not `builder.c`.
+- Fix GCC 8.3 reversal on `__alignas_is_defined` for -std=c++11, affecting
+ pstdalign.h (#130).
+- Make C++ test optional via build flag and disable for pre GCC-4.7 (#134).
+- Avoid conflicts with table or struct fields named `identifier` (#99, #135)
+ by not generating `<table-name>_identifier` for the table (or structs) file
+ identifier, instead `<table-name>_file_identifier` is generated and the old
+ form is generated for backwards compatibility when there is no conflict.
+- DEPRECATED: `<table-name>_identifier` should now be
+ `<table-name>_file_identifer`.
+- `FLATCC_ASSERT` and `FLATCC_NO_ASSERT` provided for custom runtime assert
+ handling (#139).
+- Add guards in case bswap macroes are already defined and use POSIX compliant
+ Linux detection (#129).
+- Fix precision loss of floating point default values in generated code (#140).
+- Fix anon union pedantic warning in internal builder struct (PR #143).
+- Remove warnings triggered by -Wsign-conversion.
+- BREAKING: some functions taking a string or buffer argument, and a separate
+ size argument, have changed the size type from `int` to `size_t` in an effort
+ to standardize and to remove sign conversion warnings.
+- Fixed size arrays renamed to fixed length arrays for consistency with Googles
+ project.
+- Support `aligned_alloc` for MingW (#155).
+- Disable config flag `FLATCC_ASCENDING_ENUM` now that Googles flatc compiler
+ also has support for reordered enums.
+- Fix cli options so common files can be generated without schema files
+ (PR #156).
+- Make build.sh work for non-bash shells (PR #159).
+- Fix parsing json struct as roort (#157).
+- Add support for optional scalar values (#162).
+- Fix enum out of range (#176).
+- Add stdalign support for TCC compiler (#174).
+- Add RPC data to bfbs binary schema (#181).
+- Fix support for printing JSON enum vectors (#182).
+- Silence GCC 11 identation warning (#183).
+- Fix type of code field on json test (#184).
+- Add `end_loc` to parser state of root json parsers (#186).
+- BREAKING: Add per table `<name>_file_extension` and fixed wrong per table
+ `<name>_file_identifier` assignment when multiple files are included due to
+ macro expansion conflict. Extensions are now specified without extra dot
+ prefix unless specified explicitly in the schema file. The default extension
+ is now 'bin' instead of '.bin' (#187).
+- Fix buffer overrun when parser reports error on large symbols (#188).
+- BREAKING: Print --version to stdout, not stderr.
+- Fix schema parser returning on success on some failure modes (#193).
+- Fix larger integer literal types in JSON parser and printer (#194).
+- Add pattributes.h to portable library and replace GCC fallthrough comments
+ with fallthough attribute to also silence clang warnings (#203).
+- Remove misguided include guards from `portable/pdiagnostic_push/pop.h` and fix
+ related and expected warnings in other code. NOTE: End user code might be
+ affected because warnigs were disabled more broadly than intended. Also note
+ that warnings will still be disabled after pop if the compiler does not
+ support push/pop diagnostics (#205).
+- Fix verifier crash on malicious string length input (#221).
+- Fix potential crash parsing unterminated JSON (#223).
+- Allow 0 (and other unknown values) as schema default value for enums with
+ `bit_flags` attribute.
+- Disable -pedantic flag for GCC >= 8, it just keeps breaking perfectly valid
+ code (#227).
+
+## [0.6.0]
+
+- BREAKING: if there are multiple table fields with a key attribute, the
+ default key is now the field with the smaller id rather than the first
+ listed in case these differ (which is not often the case).
+- The attribute `primary_key` has been added to choose a specific keyed
+ field as the default key field for finding and sorting instead of the
+ field with the smallest id.
+- Add mutable types: `mutable_table_t`, `mutable_union_t`, `mutable_union_vec_t`
+ and casts: `mutable_union_cast`, `mutable_union_vec_cast`.
+- Disallow key attribute on deprecated fields.
+- Add 'sorted' attribute for scalar, string, table and struct vectors.
+ Tables and structs must have a key field defined.
+- Add recursive table and union `_sort` operation in `_reader.h` for
+ types that contain a sorted vector, either directly or indirectly.
+ NOTE: shared vectors in a DAG will be sorted multiple times.
+- Allow attributes to be declared multiple times, including known attributes.
+- Allow table and struct field names to be reserved names such as 'namespace'
+ or 'table'. This can be disabled in `config/config.h`.
+ Separately do the same for enum member. This change was motivated by
+ JSON fields that can have names such as "table" or "namespace".
+- Use `FLATCC_INSTALL_LIB` for install targets in addition to ordinary builds
+ (#109).
+- Add missing case break in flatcc compiler - no impact on behavior (#110).
+- Make `flatbuffers_not_found` and `flatbuffers_end` constant values both
+ because it is more correct, and to silence warnings on some systems.
+- Fix flatcc endless loop with our of order field id's (#112).
+- Add support for fixed length arrays as struct member fields, including
+ fixed length char arrays. NOTE: bfbs schema uses byte arrays instead of
+ char arrays since Googles flatc tool does not have char arrays.
+- Fix `aligned_free` when used with `FLATCC_USE_GENERIC_ALIGNED_ALLOC` (#118).
+- Fix potential buffer overrun when parsing JSON containing surrogate pairs
+ with a resulting UTF-8 code point of length 4 (bug introduced in 0.5.3).
+- BREAKING: empty structs are no longer supported. They were fully supported
+ and Googles flatc compiler also no longer support them.
+- Fix incorrect sprintf arg when printing NaN with the grisu3 algorithm (#119).
+- Fix gcc 9 regression on `-fallthrough` comment syntax (#120).
+- Silence false positive gcc 9 warning on strncpy truncation
+ (-Wstringop-truncation) (#120).
+- Silence false positive gcc 9 warning on printf null string
+ (-Wno-format-overflow) (#120).
+- Silence GCC `-Wstrict-prototypes` warnings that incorrectly complain about
+ function definitions with empty instead of void arguments. Only for runtime
+ source (#122).
+
+## [0.5.3]
+- BREAKING: 0.5.3 changes behavour of builder create calls so arguments
+ are always ordered by field id when id attributes are being used, for
+ example `MyGame_Example_Monster_create()` in `monster_test_fbs` (#81).
+- Fix `refmap_clear` so that the refmap is always ready for reuse.
+- Remove C++ from CMake toolchain when not building tests (#94).
+- Add missing `_get` suffix in `flatbuffers_common_reader.h` needed when
+ used with flatcc -g option (#96).
+- Remove stray break statement that prevented generation of search
+ methods for scalar table fields with the key attribute set (#97).
+- Fix return value when creating a struct field fails which is unlikely
+ to happen, and hence has low impact (#98).
+- Fix file identifier string to type hash cast as implicit cast was not safe on
+ all platforms.
+- Fix reallocation bug when cloning vectors of non-scalar content (#102).
+- JSON parser: combine valid UTF-16 surrogate pairs such as "\uD834\uDD1E"
+ (U+1D11E) into single 4 byte UTF-8 sequence as per spec. Unmatched half
+ pairs are intentionally decoded into invalid UTF-8 as before.
+- Fix sorting tables by scalar keys. Sorting by integer key could lead to
+ undefined behavior (#104).
+- Add `FLATCC_INSTALL_LIB` configuration to CMake to change the
+ default <project>/lib path, for example `cmake -DFLATCC_INSTALL_LIB=lib64`.
+- Fix return code in `flatcc_parse_file` library function.
+
+## [0.5.2]
+
+- Handle union vectors in binary schema generation (.bfbs).
+- Handle mixed union types in binary schema (.bfbs).
+- Fix .bfbs bug failing to export fields of string type correctly.
+- Fix how vectors are printed in samples/reflection project.
+- Add support for KeyValue attributes in binary schema (.bfbs).
+- Added `__tmp` suffix to macro variables in `flatbuffers_common_reader.h`
+ to avoid potential name conflicts (#82).
+- Added `_get` suffix to all table and struct read accessors in
+ addition to existing accesors (`Monster_name()` vs `Monster_name_get()`
+ (#82).
+- Added `-g` option flatcc commandline to only generate read accessors
+ with the `_get` suffix in order to avoid potential name conficts (#82).
+- Fix stdalign.h not available in MSVC C++ in any known version.
+- Added test case for building flatcc project with C++ compiler (#79, #80).
+- Fix `flatbuffers_int8_vec_t` type which was incorrrectly unsigned.
+- Added table, union, vector clone, and union vector operations. Table
+ fields now also have a `_pick` method taking a source table of same
+ type as argument which is roughly a combined get, clone and add
+ operation for a single field. `_pick` will pick a field even if it is
+ a default value and it will succedd as a no-operation if the source is
+ absent. `_clone` discards deprecated fields. Unknown union types are
+ also discarded along with unions of type NONE, even if present in
+ source. Warning: `_clone` will expand DAGs.
+- Added `_get_ptr` reader method on scalar struct and table member
+ fields which returns the equivalent of a single field struct `_get`
+ method. This is used to clone scalar values without endian
+ conversion. NOTE: scalars do not have assertions on `required`
+ attribute, so be careful with null return values. For structs it
+ is valid to apply `_get_ptr` to a null container struct such that
+ navigation can be done without additional checks.
+- Added `_push_clone` synonym for scalar and struct vector `_push_copy`.
+- Add `include/flatcc/flatcc_refmap_h` and `src/runtime/refmap.c` to
+ runtime library. The runtime library now depends of refmap.c but has
+ very low overhead when not expeclity enabled for use with cloning.
+- Add `flatbuffers_type_hash_from_string` to avoid gcc-8 strncpy warning
+ (#86).
+- Add long form flatcc options --common, --common-reader, --common-builder,
+ --reader, --builder, --verifier.
+- Remove flatcc deprecated option for schema namespace.
+- Add scripts/flatcc-doc.sh to help document generated code.
+- Remove unnecessary memory.h includes (#92)
+
+## [0.5.1]
+
+- Fix parent namespace lookup in the schema parser when the namespace
+ prefix is omitted.
+- Fix buffer overrun in JSON printer when exhausting flush buffer (#70).
+- More consistent name generation across verifier and json parsers
+ allowing for namespace wrapped parse/verify/print table functions.
+- Fix unhelpful error on precision loss from float/double conversion
+ in schema and JSON parser.
+- Align `monster_test.fbs` Monster table more closely with Googles flatc
+ version after they diverged a bit. (Subtables may differ).
+- Some C++ compatiblity fixes so `include/{support/flatcc}` headers can
+ be included into C++ without `extern "C"`.
+- Fix missing null ptr check in fall-back `aligned_free`.
+- Enable `posix_memalign` as a default build option on recent GNU
+ systems because -std=c11 blocks automatic detection. This avoids
+ using a less efficient fallback implementation.
+- Add portable/include wrappers so build systems can add include paths
+ to ensure that <stdint.h>, <stdbool.h> etc. is available. Flatcc does
+ not currently rely on these.
+- Replace `flatcc/portable/pdiagnostic_push/pop.h` includes in generated
+ code with `flatcc/flatcc_pro/epilogue.h` and add `__cplusplus extern
+ "C"` guards in those. This removes explicit references to the portable
+ headers in generated code and improves C++ compatibility (#72).
+- Change inconsistent `const void *` to `const char *` in JSON buffer
+ argument to generated `_as_root` parsers (#73).
+- Simplify use of json printers by auto-flushing and terminating buffers
+ when a root object has been printed (#74).
+- BREAKING: in extension of the changes in 0.5.0 for unions and union
+ vectors, the low-level methods and structs now consistently use the
+ terminology { type, value } for union types and values rather than {
+ type, member } or { types, members }. The binary builder interface
+ remains unchanged.
+- Silence (unjustified) uninitialized gcc warnings (#75).
+- Fix C++14 missing `__alignas_is_defined`.
+- Remove newlib stdalign conflict (#77).
+- Add `flatcc_json_printer_total`.
+- Add `flatcc_builder_table_add_union_vector`.
+
+## [0.5.0]
+- New schema type aliases: int8, uint8, int16, uint16, int32, uint32,
+ int64, uint64, float32, float64.
+- Low-level: access multiple user frames in builder via handles.
+- Support for `_is_known_type` and `_is_known_value` on union and enum
+ types.
+- More casts for C++ compatiblity (#59).
+- Fix regressions in verifier fix in 0.4.3 that might report out of
+ bounds in rare cases (#60).
+- Silence gcc 7.x warnings about implicit fallthrough (#61).
+- Fix rare special in JSON parser causing spurious unknown symbol.
+- Reading and writing union vectors. The C++ interface also supports
+ these types, but other languages likely won't for a while.
+- New `_union(t)` method for accessing a union fields type and member
+ table in a single call. The method also supports union vectors to
+ retrieve the type vector and member vector as a single object.
+- BREAKING: In generated builder code for union references of the form
+ `<union-name>_union_ref_t` the union members and the hidden `_member`
+ field has been replaced with a single `member` field. Union
+ constructors work as before: `Any_union_ref_t uref =
+ Any_as_weapon(weapon_ref)` Otherwise use `.type` and `.member` fields
+ directly. This change was necessary to support the builder API's new
+ union vectors without hitting strict aliasing rules, for example as
+ argument to `flatcc_builder_union_vector_push`. Expected impact: low
+ or none. The physical struct layout remains unchanged.
+- BREAKING: `flatbuffers_generic_table_[vec_]t` has been renamed to
+ `flatbuffers_generic_[vec_]t`.
+- BREAKING: The verifiers runtime library interface has changed argument
+ order from `align, size` to `size, align` in order to be consistent
+ with the builders interface so generated code must match library
+ version. No impact on user code calling generated verifier functions.
+- BREAKING: generated json table parser now calls `table_end` and
+ returns the reference in a new `pref` argument. Generated json struct
+ parsers now renamed with an `_inline` suffix and the orignal name now
+ parses a non-inline struct similar to the table parsers. No impact to
+ user code that only calls the generated root parser.
+- Fix off-by-one indexing in `flatbuffers_generic_vec_at`. Impact
+ low since it was hardly relevant before union vectors were introduced
+ in this release.
+- Add document on security considerations (#63).
+- Add support for base64 and base64url attributes in JSON printing and
+ parsing of [ubyte] table fields.
+- Added `flatcc_builder_aligned_free` and `flatcc_builder_aligned_alloc`
+ to ensure `aligned_free` implementation matches allocation compiled
+ into the runtime library. Note that alignment and size arguments are
+ ordered opposite to most runtime library calls for consistency with
+ the C11 `aligned_alloc` prototype.
+- Support for struct and string types in unions.
+- Add missing `_create` method on table union member fields.
+- Add `_clone` and `_clone_as_[typed_]root[_with_size]` methods on structs.
+ `_clone` was already supported on structs inlined in table fields.
+- Fix harmless but space consuming overalignment of union types.
+- Add `flatbuffers_union_type_t` with `flatbuffers_union_type_vec` operations.
+- Fix scoping bug on union types in JSON parser: symbolic names of the form
+ `MyUnion.MyUnionMember` were not accepted on a union type field but
+ `MyNamespace.MyUnion.MyMember` and `MyMember` was supported. This has been
+ fixed so all forms are valid. Plain enums did not have this issue.
+- Place type identifiers early in generated `_reader.h` file to avoid
+ circular reference issue with nested buffers when nested buffer type
+ is placed after referencing table in schema.
+- Fix verify bug on struct buffers - and in test case - not affecting
+ ordinary buffers with table as root.
+
+## [0.4.3]
+- Fix issue with initbuild.sh for custom builds (#43)
+- Add casts to aid clean C++ builds (#47)
+- Add missing const specifier in generated `buffer_start` methods - removes C++
+ warnings (#48)
+- Update external/hash, removed buggy Sorted Robin Hood Hash that wasn't
+ faster anyway - no impact on flatcc.
+- Fix JSON parsing bug where some names are prefixes of others (#50).
+- A Table of Contents in documentation :-)
+- Move repetitive generated JSON string parsing into library.
+- Add tests for JSON runtime compiled with different flags such as
+ permitting unquoted keys.
+- Fix building nested buffers when the parent buffer has not yet emitted
+ any data (#51).
+- Fix building nested buffers using the _nest() call (#52).
+- Add `FLATCC_TRACE_VERIFY` as build option.
+- Allow more costumization of allocation functions (#55).
+- Avoid dependency on PORTABLE_H include guard which is too common (#55).
+- (possibly breaking) Fix duplicate field check in flatcc_builder_table_add call.
+- Fix incorrect infinity result in grisu3 parser and double to float
+ overflow handling in parse_float in portable library (affects JSON
+ of abnormal numeric values).
+- Fix return value handling of parse_float, parse_double in JSON parser.
+- Fix verifier vector alignment check - affects vectors with element size 8+.
+- Fix missing static in generated enum and union functions in JSON
+ printer (#57).
+
+## [0.4.2]
+- Fix SIGNIFICANT bug miscalculating the number of builder frames in
+ use. Nesting 8 levels would cause memory corruption (#41).
+- Fix minor memory leak in flatcc compiler.
+- Reduce collisions in builders vtable hash.
+- Remove broken dependency on `<mm_malloc.h>` for some GCC versions in
+ `paligned_alloc.h` (#40).
+- Allow C++ files to include `pstdalign.h` and `paligned_alloc.h` (#39).
+
+## [0.4.1]
+- Test for `posix_memalign` on GCC platforms and fix fallback
+ `aligned_alloc`.
+- Fix JSON parser handling of empty objects and tables.
+- Fix JSON parser - some fields would not be accepted as valid (#17).
+- Fix rare uncompilable doc comment in schema (#21).
+- Avoid crash on certain table parser error cases (#30).
+- Add support for scan similar to find in reader API, but for O(N)
+ unsorted search, or search by a secondary key, and in sub-ranges.
+- Optionally, and by default, allow scan by any field (#29), not just keys.
+- More compact code generation for reader (hiding scan methods).
+- Use __flatbuffers_utype_t for union type in reader instead of uint8_t.
+- Add unaligned write to punaligned for completeness.
+- Promote use of `flatcc_builder_finalize_aligned_buffer` in doc and
+ samples over `flatcc_builder_finalize_buffer`.
+- Add scope counter to pstatic_assert.h to avoid line number conflicts.
+- Fix compiler error/warning for negative enums in generated JSON parser (#35).
+- Fix potential compiler error/warnings for large enum/defaults in
+ generated reader/builder (#35).
+- Fix tab character in C++ style comments (#34)
+- Fix incorrect api usage in binary schema builder (#32)
+- Support hex constants in fbs schema (flatc also supports these now) (#33).
+
+
+## [0.4.0]
+- Fix Windows detection in flatcc/support/elapsed.h used by benchmark.
+- Fix #8 surplus integer literal suffix in portable byteswap fallback.
+- Fix `pstatic_assert.h` missing fallback case.
+- Fix #9 return values from allocation can be zero without being an error.
+- Fix #11 by avoiding dependency on -lm (libmath) by providing a cleaner
+ over/underflow function in `include/flatcc/portable/pparsefp.h`.
+- Fix #12 infinite loop during flatbuffer build operations caused by
+ rare vtable dedupe hash table collision chains.
+- Added `include/flatcc/support/cdump.h` tool for encoding buffers in C.
+- JSON code generators no longer use non-portable PRIszu print
+ modifiers. Fixes issue on IBM XLC AIX.
+- Deprecated support for PRIsz? print modifiers in
+ `include/flatcc/portable/pinttypes.h`, they would require much more
+ work to be portable.
+- Fix and clean up `__STDC__` version checks in portable library.
+- Improve IBM XLC support in `pstdalign.h`.
+- Always include `pstdalign.h` in `flatcc_flatbuffers.h` because some
+ C11 compilers fail to provide `stdalign.h`.
+- Buffer verifier used to mostly, but not always, verify buffer
+ alignment relative to buffer start. With size prefixed buffers it is
+ necessary to verify relative to the allocated buffer, which is also
+ safer and more consistent, but adds requirements to aligned allocation.
+- `monster_test` and `flatc_compat` test now uses aligned alloc.
+- Add `aligned_alloc` and `aligned_free` to `pstdalign.h`.
+- `flatcc_builder_finalize_aligned_buffer` now requires `aligned_free`
+ to be fully portable and no longer use unaligned malloc as fallback,
+ but still works with `free` on most platforms (not Windows).
+
+- BREAKING: Size prefixed buffers added requires a minor change
+ to the low-level flatcc builder library with a flag argument to create
+ and start buffer calls. This should not affect user code.
+
+
+Changes related to big endian support which do not affect little endian
+platforms with little endian wire format.
+
+- Support for big endian platforms, tested on IBM AIX Power PC.
+- Support for big endian encoded flatbuffers on both little and big
+ endian host platforms via `FLATBUFFERS_PROTOCOL_IS_LE/BE` in
+ `include/flatcc/flatcc_types.h`. Use `flatbuffers_is_native_pe()` to
+ see if the host native endian format matches the buffer protocol.
+ NOTE: file identifier at buffer offset 4 is always byteswapped.
+
+In more detail:
+
+- Fix vtable conversion to protocol endian format. This keeps cached
+ vtables entirely in native format and reduces hash collisions and only
+ converts when emitting the vtable to a buffer location.
+- Fix structs created with parameter list resulting in double endian
+ conversion back to native.
+- Fix string swap used in sort due to endian sensitive diff math.
+- Disable direct vector access test case when running on non-native
+ endian platform.
+- Update JSON printer test to handle `FLATBUFFERS_PROTOCOL_IS_BE`.
+- Fix emit test case. Incorrect assumption on acceptable null pointer
+ breaks with null pointer conversion. Also add binary check when
+ `FLATBUFFERS_PROTOCOL_IS_BE`.
+- Add binary test case to `json_test` when `FLATBUFFERS_PROTOCOL_IS_BE`.
+- Fix endian sensitive voffset access in json printer.
+- Update `flatc_compat` to reverse acceptance of 'golden' little endian
+ reference buffer when `FLATBUFFERS_PROTOCOL_IS_BE`.
+
+## [0.3.5a]
+- Fix regression introduced in 0.3.5 that caused double memory free on
+ input file buffer. See issue #7.
+
+## [0.3.5]
+
+- Allow flatcc cli options anywhere in the argument list.
+- Add --outfile option similar to --stdout, but to a file.
+- Add --depfile and --deptarget options for build dependencies.
+- Allow some test cases to accept arguments to avoid hardcoded paths.
+- Deprecate --schema-namespace=no option to disable namespace prefixes
+ in binary schema as Google flatbuffers now also includes namespaces
+ according to https://github.com/google/flatbuffers/pull/4025
+
+## [0.3.4]
+
+- Add `FLATCC_RTONLY` and `FLATCC_INSTALL` build options.
+- Fix issue4: when building a buffer and the first thing created is an
+ empty table, the builder wrongly assumed allocation failure. Affects
+ runtime library.
+- `scripts/setup.sh` now also links to debug libraries useful for bug
+ reporting.
+- Add ULL suffix to large printed constants in generated code which
+ would otherwise required --std=c99 to silence warnings.
+
+## [0.3.3]
+
+- BREAKING: `verify_as_root` no longer takes an identifier argument, use
+ `verify_as_root_with_identifier`. `myschema_verifier.h` now
+ includes `myschema_reader.h` to access identifier.
+ identifer argument, and variants for type identifiers;.
+- Added scripts/setup.sh to quickly get started on small user projects.
+- Support `namespace ;` for reverting to global namespace in schema.
+- Enable block comments now that they are supported in flatc.
+- Parse and validate new `rpc_service` schema syntax, but with no
+ support for code generation.
+- Add type hash support (`create/verify_as_typed_root` etc.) to
+ optionally store and verify file identifiers based on hashed fully
+ qualified type names.
+- Fix potential issue with detection of valid file identifiers in
+ buffer.
+- Moved `include/support` into `include/flatcc/support`, renamed
+ `include/support/readfile.h` function `read_file` to `readfile`.
+- Make `FLATCC_TEST` build option skip building samples and test
+ files, as opposed to just skip running the tests.
+- `vec_at`, `vec_find`, etc. now use index type `size_t` instead of
+ `flatbuffers_uoffset_t`.
+- Removed `size_t` conversion warnings on Win64.
+
+## [0.3.2]
+
+- Move compiler warning handling from generated headers to portable
+ library.
+- Clean up warnings and errors for older gcc, clang and MSVC compilers.
+- CI builds.
+- Fix and improve portable version of `static_assert`.
+- Add integer parsing to portable library.
+
+## [0.3.1]
+
+- Add support for MSVC on Windows.
+- Allow FlatBuffer enums to be used in switch statements without warnings.
+- Remove warnings for 32-bit builds.
+- Fix runtime detection of endianness and add support for more
+ platforms with compile time detection of endianness.
+- Fix scope bug where global namespace symbols from included schema
+ would be invisible in parent schema.
+- Add missing `static` for generated union verifiers.
+- Fix bug in json printer unicode escape and hash table bug in
+ compiler.
+- Fix json parser under allocation bug.
+- Fix `emit_test` early dealloc bug.
+
+## [0.3.0]
+
+- Rename examples folder to samples folder.
+- Add samples/monster example.
+- BREAKING: added missing `_vec` infix on some operations related to
+ building vectors. For example `Weapon_push` -> `Weapon_vec_push`.
+- BREAKING: vector and string start functions no longer takes a
+ count/len argument as it proved tedious and not very useful.
+ The return value is now 0 on success rather than a buffer pointer.
+ Use `_extend` call after start when the length argument is non-zero.
+
+## [0.2.1]
+
+- Disallow unquoted symbolic list in JSON parser by default for Google
+ flatc compatibility.
+- Remove PRIVATE flags from CMake build files to support older CMake
+ versions.
+- Simplify switching between ninja and make build tools.
+- Fix incorrectly named unaligned read macros - impacts non-x86 targets.
+- Mirror grisu3 headers in portable library to avoid dependency on
+ `external/grisu3`.
+- Use correct grisu3 header for parsing, improving json parsing times.
+- Move `include/portable` to `include/flatcc/portable` to simplify
+ runtime distribution and to prevent potential name and versioning
+ conflicts.
+- Fix `is_union` in bfbs2json.c example.
+
+## [0.2.0]
+
+- BREAKING: flatcc verify functions now return a distinct error code.
+ This breaks existing code. Before non-zero was success, now `flatcc_verify_ok` == 0.
+ The error code can be converted to a string using `flatcc_verify_error_string(ret)`.
+- BREAKING, minor: Remove user state from builder interface - now
+ providing a user stack instead.
+- Fix verification of nested flatbuffers.
+- Fix certain header fields that was not endian encoded in builder.
+- MAJOR: Generate json printer and parser.
+- Added high performance integer printinger to portable library
+ and fast floating point priting to runtime library (grisu3) for JSON.
+- Comparison agains default value now prints float to generated source
+ with full precision ("%.17g").
+- MAJOR: read-only generated files no longer attempt to be independent
+ of files in the flatcc include dir. Instead they will use one
+ well-defined source of information for flatbuffer types and endian detection.
+- Always depend `portable/pendian.h` and `portable/pendian_detect.h`.
+ (The `include/portable` dir can be copied under `include/flatcc` if so desired).
+- Updates to set of include files in include/flatcc.
+- Upgrade to pstdint.h 0.1.15 to fix 64-bit printf issue on OS-X.
+- Support for portable unaligned reads.
+- Hide symbols that leak into namespace via parent include.
+- Suppress unused function and variable warnings for GCC (in addition to clang).
+
+## [0.1.1]
+
+- Rename libflatccbuilder.a to libflatccrt.a (flatcc runtime).
+- Add suffix to all generated files (`monster_test.h -> monster_test_reader.h`)
+- Add buffer verifiers (`monster_test_verifier.h).
+- Assert on error in flatcc builder by default.
+- Fix -I include path regression in `flatcc` command.
+
+## [0.1.0]
+
+- Initial public release.