nostrdb

an unfairly fast embedded nostr database backed by lmdb
git clone git://jb55.com/nostrdb
Log | Files | Refs | Submodules | README | LICENSE

CHANGELOG.md (30534B)


      1 # Change Log
      2 
      3 ## [0.6.2-pre]
      4 
      5 - CMake: avoid assuming location of build dir during configuration.
      6 - Use untyped integer constants in place of enums for public interface flags to
      7   allow for safe bit masking operations (PR #248).
      8 - Added experimental support for generating `compile_commands.json` via
      9   `CMakeList.txt` for use with clangd.
     10 - Remove `fallthrough` macro for improved portability (#247, #252).
     11 - Added `parse_float/double_compare`, `parse_float/double_is_equal` to
     12   portable library, and added `parse_float/double_isnan` to mirror isinf.
     13   This should help with GCC 32-bit double precision conversion issue.
     14 - Add Github Actions builds to replace stale Travis CI build. This also
     15   includes source code fixes for some build variants. Although
     16   Windows build is included it only covers recent 64-bit Windows. More
     17   work is need for older Windows variants. (#250).
     18 - Increase maximum allowed schema file size from 64 KiB to 1 MB (#256).
     19 - Fix seg fault in json parser while adding null characters to a too
     20   short input string for a fixed length char array struct field (#257).
     21 - Fix regression where empty namespace in schema does not reset root scope
     22   correctly in parser (#265).
     23 - Fix lexer checks that breaks with UTF-8, notably UTF-8 schema comments (#267).
     24 - Add sanitizer flag for clang debug and related warnings (input from several
     25   PRs incl. #237).
     26 - Fix missing runtime check for building too large tables (#235).
     27 - Fix alignment of large objects created outside root buffer (#127).
     28 - Pad top level buffer end to largest object in buffer
     29 
     30 ## [0.6.1]
     31 
     32 - Add `flatcc_builder_alloc` and `flatcc_builder_free` to handle situations
     33   where standard allocation has been redefined via macros so `free` is no longer
     34   safe to use. These are similar to the existing `aligned_alloc/free` functions.
     35 - Fix a potential, but never seen, low level race condition in the builder when
     36   writing a union field because the builder might reallocate between type
     37   field and value field. Affects `flacc_common_builder.h` but not `builder.c`.
     38 - Fix GCC 8.3 reversal on `__alignas_is_defined` for -std=c++11, affecting
     39   pstdalign.h (#130).
     40 - Make C++ test optional via build flag and disable for pre GCC-4.7 (#134).
     41 - Avoid conflicts with table or struct fields named `identifier` (#99, #135)
     42   by not generating `<table-name>_identifier` for the table (or structs) file
     43   identifier, instead `<table-name>_file_identifier` is generated and the old
     44   form is generated for backwards compatibility when there is no conflict.
     45 - DEPRECATED: `<table-name>_identifier` should now be
     46   `<table-name>_file_identifer`.
     47 - `FLATCC_ASSERT` and `FLATCC_NO_ASSERT` provided for custom runtime assert
     48   handling (#139).
     49 - Add guards in case bswap macroes are already defined and use POSIX compliant
     50   Linux detection (#129).
     51 - Fix precision loss of floating point default values in generated code (#140).
     52 - Fix anon union pedantic warning in internal builder struct (PR #143).
     53 - Remove warnings triggered by -Wsign-conversion.
     54 - BREAKING: some functions taking a string or buffer argument, and a separate
     55   size argument, have changed the size type from `int` to `size_t` in an effort
     56   to standardize and to remove sign conversion warnings.
     57 - Fixed size arrays renamed to fixed length arrays for consistency with Googles
     58   project.
     59 - Support `aligned_alloc` for MingW (#155).
     60 - Disable config flag `FLATCC_ASCENDING_ENUM` now that Googles flatc compiler
     61   also has support for reordered enums.
     62 - Fix cli options so common files can be generated without schema files
     63   (PR #156).
     64 - Make build.sh work for non-bash shells (PR #159).
     65 - Fix parsing json struct as roort (#157).
     66 - Add support for optional scalar values (#162).
     67 - Fix enum out of range (#176).
     68 - Add stdalign support for TCC compiler (#174).
     69 - Add RPC data to bfbs binary schema (#181).
     70 - Fix support for printing JSON enum vectors (#182).
     71 - Silence GCC 11 identation warning (#183).
     72 - Fix type of code field on json test (#184).
     73 - Add `end_loc` to parser state of root json parsers (#186).
     74 - BREAKING: Add per table `<name>_file_extension` and fixed wrong per table
     75   `<name>_file_identifier` assignment when multiple files are included due to
     76   macro expansion conflict. Extensions are now specified without extra dot
     77   prefix unless specified explicitly in the schema file. The default extension
     78   is now 'bin' instead of '.bin' (#187).
     79 - Fix buffer overrun when parser reports error on large symbols (#188).
     80 - BREAKING: Print --version to stdout, not stderr.
     81 - Fix schema parser returning on success on some failure modes (#193).
     82 - Fix larger integer literal types in JSON parser and printer (#194).
     83 - Add pattributes.h to portable library and replace GCC fallthrough comments
     84   with fallthough attribute to also silence clang warnings (#203).
     85 - Remove misguided include guards from `portable/pdiagnostic_push/pop.h` and fix
     86   related and expected warnings in other code. NOTE: End user code might be
     87   affected because warnigs were disabled more broadly than intended. Also note
     88   that warnings will still be disabled after pop if the compiler does not
     89   support push/pop diagnostics (#205).
     90 - Fix verifier crash on malicious string length input (#221).
     91 - Fix potential crash parsing unterminated JSON (#223).
     92 - Allow 0 (and other unknown values) as schema default value for enums with
     93   `bit_flags` attribute.
     94 - Disable -pedantic flag for GCC >= 8, it just keeps breaking perfectly valid
     95   code (#227).
     96 
     97 ## [0.6.0]
     98 
     99 - BREAKING: if there are multiple table fields with a key attribute, the
    100   default key is now the field with the smaller id rather than the first
    101   listed in case these differ (which is not often the case).
    102 - The attribute `primary_key` has been added to choose a specific keyed
    103   field as the default key field for finding and sorting instead of the
    104   field with the smallest id.
    105 - Add mutable types: `mutable_table_t`, `mutable_union_t`, `mutable_union_vec_t`
    106   and casts: `mutable_union_cast`, `mutable_union_vec_cast`.
    107 - Disallow key attribute on deprecated fields.
    108 - Add 'sorted' attribute for scalar, string, table and struct vectors.
    109   Tables and structs must have a key field defined.
    110 - Add recursive table and union `_sort` operation in `_reader.h` for
    111   types that contain a sorted vector, either directly or indirectly.
    112   NOTE: shared vectors in a DAG will be sorted multiple times.
    113 - Allow attributes to be declared multiple times, including known attributes.
    114 - Allow table and struct field names to be reserved names such as 'namespace'
    115   or 'table'. This can be disabled in `config/config.h`.
    116   Separately do the same for enum member. This change was motivated by
    117   JSON fields that can have names such as "table" or "namespace".
    118 - Use `FLATCC_INSTALL_LIB` for install targets in addition to ordinary builds
    119   (#109).
    120 - Add missing case break in flatcc compiler - no impact on behavior (#110).
    121 - Make `flatbuffers_not_found` and `flatbuffers_end` constant values both
    122   because it is more correct, and to silence warnings on some systems.
    123 - Fix flatcc endless loop with our of order field id's (#112).
    124 - Add support for fixed length arrays as struct member fields, including
    125   fixed length char arrays. NOTE: bfbs schema uses byte arrays instead of
    126   char arrays since Googles flatc tool does not have char arrays.
    127 - Fix `aligned_free` when used with `FLATCC_USE_GENERIC_ALIGNED_ALLOC` (#118).
    128 - Fix potential buffer overrun when parsing JSON containing surrogate pairs
    129   with a resulting UTF-8 code point of length 4 (bug introduced in 0.5.3).
    130 - BREAKING: empty structs are no longer supported. They were fully supported
    131   and Googles flatc compiler also no longer support them.
    132 - Fix incorrect sprintf arg when printing NaN with the grisu3 algorithm (#119).
    133 - Fix gcc 9 regression on `-fallthrough` comment syntax (#120).
    134 - Silence false positive gcc 9 warning on strncpy truncation
    135   (-Wstringop-truncation) (#120).
    136 - Silence false positive gcc 9 warning on printf null string
    137   (-Wno-format-overflow) (#120).
    138 - Silence GCC `-Wstrict-prototypes` warnings that incorrectly complain about
    139   function definitions with empty instead of void arguments. Only for runtime
    140   source (#122).
    141 
    142 ## [0.5.3]
    143 - BREAKING: 0.5.3 changes behavour of builder create calls so arguments
    144   are always ordered by field id when id attributes are being used, for
    145   example `MyGame_Example_Monster_create()` in `monster_test_fbs` (#81).
    146 - Fix `refmap_clear` so that the refmap is always ready for reuse.
    147 - Remove C++ from CMake toolchain when not building tests (#94).
    148 - Add missing `_get` suffix in `flatbuffers_common_reader.h` needed when
    149   used with flatcc -g option (#96).
    150 - Remove stray break statement that prevented generation of search
    151   methods for scalar table fields with the key attribute set (#97).
    152 - Fix return value when creating a struct field fails which is unlikely
    153   to happen, and hence has low impact (#98).
    154 - Fix file identifier string to type hash cast as implicit cast was not safe on
    155   all platforms.
    156 - Fix reallocation bug when cloning vectors of non-scalar content (#102).
    157 - JSON parser: combine valid UTF-16 surrogate pairs such as "\uD834\uDD1E"
    158   (U+1D11E) into single 4 byte UTF-8 sequence as per spec. Unmatched half
    159   pairs are intentionally decoded into invalid UTF-8 as before.
    160 - Fix sorting tables by scalar keys. Sorting by integer key could lead to
    161   undefined behavior (#104).
    162 - Add `FLATCC_INSTALL_LIB` configuration to CMake to change the
    163   default <project>/lib path, for example `cmake -DFLATCC_INSTALL_LIB=lib64`.
    164 - Fix return code in `flatcc_parse_file` library function.
    165 
    166 ## [0.5.2]
    167 
    168 - Handle union vectors in binary schema generation (.bfbs).
    169 - Handle mixed union types in binary schema (.bfbs).
    170 - Fix .bfbs bug failing to export fields of string type correctly.
    171 - Fix how vectors are printed in samples/reflection project.
    172 - Add support for KeyValue attributes in binary schema (.bfbs).
    173 - Added `__tmp` suffix to macro variables in `flatbuffers_common_reader.h`
    174   to avoid potential name conflicts (#82).
    175 - Added `_get` suffix to all table and struct read accessors in
    176   addition to existing accesors (`Monster_name()` vs `Monster_name_get()`
    177   (#82).
    178 - Added `-g` option flatcc commandline to only generate read accessors
    179   with the `_get` suffix in order to avoid potential name conficts (#82).
    180 - Fix stdalign.h not available in MSVC C++ in any known version.
    181 - Added test case for building flatcc project with C++ compiler (#79, #80).
    182 - Fix `flatbuffers_int8_vec_t` type which was incorrrectly unsigned.
    183 - Added table, union, vector clone, and union vector operations. Table
    184   fields now also have a `_pick` method taking a source table of same
    185   type as argument which is roughly a combined get, clone and add
    186   operation for a single field. `_pick` will pick a field even if it is
    187   a default value and it will succedd as a no-operation if the source is
    188   absent. `_clone` discards deprecated fields. Unknown union types are
    189   also discarded along with unions of type NONE, even if present in
    190   source.  Warning: `_clone` will expand DAGs.
    191 - Added `_get_ptr` reader method on scalar struct and table member
    192   fields which returns the equivalent of a single field struct `_get`
    193   method. This is used to clone scalar values without endian
    194   conversion. NOTE: scalars do not have assertions on `required`
    195   attribute, so be careful with null return values. For structs it
    196   is valid to apply `_get_ptr` to a null container struct such that
    197   navigation can be done without additional checks.
    198 - Added `_push_clone` synonym for scalar and struct vector `_push_copy`.
    199 - Add `include/flatcc/flatcc_refmap_h` and `src/runtime/refmap.c` to
    200   runtime library. The runtime library now depends of refmap.c but has
    201   very low overhead when not expeclity enabled for use with cloning.
    202 - Add `flatbuffers_type_hash_from_string` to avoid gcc-8 strncpy warning
    203   (#86).
    204 - Add long form flatcc options --common, --common-reader, --common-builder,
    205   --reader, --builder, --verifier.
    206 - Remove flatcc deprecated option for schema namespace.
    207 - Add scripts/flatcc-doc.sh to help document generated code.
    208 - Remove unnecessary memory.h includes (#92)
    209 
    210 ## [0.5.1]
    211 
    212 - Fix parent namespace lookup in the schema parser when the namespace
    213   prefix is omitted.
    214 - Fix buffer overrun in JSON printer when exhausting flush buffer (#70).
    215 - More consistent name generation across verifier and json parsers
    216   allowing for namespace wrapped parse/verify/print table functions.
    217 - Fix unhelpful error on precision loss from float/double conversion
    218   in schema and JSON parser.
    219 - Align `monster_test.fbs` Monster table more closely with Googles flatc
    220   version after they diverged a bit. (Subtables may differ).
    221 - Some C++ compatiblity fixes so `include/{support/flatcc}` headers can
    222   be included into C++ without `extern "C"`.
    223 - Fix missing null ptr check in fall-back `aligned_free`.
    224 - Enable `posix_memalign` as a default build option on recent GNU
    225   systems because -std=c11 blocks automatic detection. This avoids
    226   using a less efficient fallback implementation.
    227 - Add portable/include wrappers so build systems can add include paths
    228   to ensure that <stdint.h>, <stdbool.h> etc. is available. Flatcc does
    229   not currently rely on these.
    230 - Replace `flatcc/portable/pdiagnostic_push/pop.h` includes in generated
    231   code with `flatcc/flatcc_pro/epilogue.h` and add `__cplusplus extern
    232   "C"` guards in those. This removes explicit references to the portable
    233   headers in generated code and improves C++ compatibility (#72).
    234 - Change inconsistent `const void *` to `const char *` in JSON buffer
    235   argument to generated `_as_root` parsers (#73).
    236 - Simplify use of json printers by auto-flushing and terminating buffers
    237   when a root object has been printed (#74).
    238 - BREAKING: in extension of the changes in 0.5.0 for unions and union
    239   vectors, the low-level methods and structs now consistently use the
    240   terminology { type, value } for union types and values rather than {
    241   type, member } or { types, members }. The binary builder interface
    242   remains unchanged.
    243 - Silence (unjustified) uninitialized gcc warnings (#75).
    244 - Fix C++14 missing `__alignas_is_defined`.
    245 - Remove newlib stdalign conflict (#77).
    246 - Add `flatcc_json_printer_total`.
    247 - Add `flatcc_builder_table_add_union_vector`.
    248 
    249 ## [0.5.0]
    250 - New schema type aliases: int8, uint8, int16, uint16, int32, uint32,
    251   int64, uint64, float32, float64.
    252 - Low-level: access multiple user frames in builder via handles.
    253 - Support for `_is_known_type` and `_is_known_value` on union and enum
    254   types.
    255 - More casts for C++ compatiblity (#59).
    256 - Fix regressions in verifier fix in 0.4.3 that might report out of
    257   bounds in rare cases (#60).
    258 - Silence gcc 7.x warnings about implicit fallthrough (#61).
    259 - Fix rare special in JSON parser causing spurious unknown symbol.
    260 - Reading and writing union vectors. The C++ interface also supports
    261   these types, but other languages likely won't for a while.
    262 - New `_union(t)` method for accessing a union fields type and member
    263   table in a single call. The method also supports union vectors to
    264   retrieve the type vector and member vector as a single object.
    265 - BREAKING: In generated builder code for union references of the form
    266   `<union-name>_union_ref_t` the union members and the hidden `_member`
    267   field has been replaced with a single `member` field. Union
    268   constructors work as before: `Any_union_ref_t uref =
    269   Any_as_weapon(weapon_ref)` Otherwise use `.type` and `.member` fields
    270   directly. This change was necessary to support the builder API's new
    271   union vectors without hitting strict aliasing rules, for example as
    272   argument to `flatcc_builder_union_vector_push`. Expected impact: low
    273   or none. The physical struct layout remains unchanged.
    274 - BREAKING: `flatbuffers_generic_table_[vec_]t` has been renamed to
    275   `flatbuffers_generic_[vec_]t`.
    276 - BREAKING: The verifiers runtime library interface has changed argument
    277   order from `align, size` to `size, align` in order to be consistent
    278   with the builders interface so generated code must match library
    279   version. No impact on user code calling generated verifier functions.
    280 - BREAKING: generated json table parser now calls `table_end` and
    281   returns the reference in a new `pref` argument. Generated json struct
    282   parsers now renamed with an `_inline` suffix and the orignal name now
    283   parses a non-inline struct similar to the table parsers. No impact to
    284   user code that only calls the generated root parser.
    285 - Fix off-by-one indexing in `flatbuffers_generic_vec_at`. Impact
    286   low since it was hardly relevant before union vectors were introduced
    287   in this release.
    288 - Add document on security considerations (#63).
    289 - Add support for base64 and base64url attributes in JSON printing and
    290   parsing of [ubyte] table fields.
    291 - Added `flatcc_builder_aligned_free` and `flatcc_builder_aligned_alloc`
    292   to ensure `aligned_free` implementation matches allocation compiled
    293   into the runtime library. Note that alignment and size arguments are
    294   ordered opposite to most runtime library calls for consistency with
    295   the C11 `aligned_alloc` prototype.
    296 - Support for struct and string types in unions.
    297 - Add missing `_create` method on table union member fields.
    298 - Add `_clone` and `_clone_as_[typed_]root[_with_size]` methods on structs.
    299   `_clone` was already supported on structs inlined in table fields.
    300 - Fix harmless but space consuming overalignment of union types.
    301 - Add `flatbuffers_union_type_t` with `flatbuffers_union_type_vec` operations.
    302 - Fix scoping bug on union types in JSON parser: symbolic names of the form
    303   `MyUnion.MyUnionMember` were not accepted on a union type field but
    304   `MyNamespace.MyUnion.MyMember` and `MyMember` was supported. This has been
    305   fixed so all forms are valid. Plain enums did not have this issue.
    306 - Place type identifiers early in generated `_reader.h` file to avoid
    307   circular reference issue with nested buffers when nested buffer type
    308   is placed after referencing table in schema.
    309 - Fix verify bug on struct buffers - and in test case - not affecting
    310   ordinary buffers with table as root.
    311 
    312 ## [0.4.3]
    313 - Fix issue with initbuild.sh for custom builds (#43)
    314 - Add casts to aid clean C++ builds (#47)
    315 - Add missing const specifier in generated `buffer_start` methods - removes C++
    316   warnings (#48)
    317 - Update external/hash, removed buggy Sorted Robin Hood Hash that wasn't
    318   faster anyway - no impact on flatcc.
    319 - Fix JSON parsing bug where some names are prefixes of others (#50).
    320 - A Table of Contents in documentation :-)
    321 - Move repetitive generated JSON string parsing into library.
    322 - Add tests for JSON runtime compiled with different flags such as
    323   permitting unquoted keys.
    324 - Fix building nested buffers when the parent buffer has not yet emitted
    325   any data (#51).
    326 - Fix building nested buffers using the _nest() call (#52).
    327 - Add `FLATCC_TRACE_VERIFY` as build option.
    328 - Allow more costumization of allocation functions (#55).
    329 - Avoid dependency on PORTABLE_H include guard which is too common (#55).
    330 - (possibly breaking) Fix duplicate field check in flatcc_builder_table_add call.
    331 - Fix incorrect infinity result in grisu3 parser and double to float
    332   overflow handling in parse_float in portable library (affects JSON
    333   of abnormal numeric values).
    334 - Fix return value handling of parse_float, parse_double in JSON parser.
    335 - Fix verifier vector alignment check - affects vectors with element size 8+.
    336 - Fix missing static in generated enum and union functions in JSON
    337   printer (#57).
    338 
    339 ## [0.4.2]
    340 - Fix SIGNIFICANT bug miscalculating the number of builder frames in
    341   use. Nesting 8 levels would cause memory corruption (#41).
    342 - Fix minor memory leak in flatcc compiler.
    343 - Reduce collisions in builders vtable hash.
    344 - Remove broken dependency on `<mm_malloc.h>` for some GCC versions in
    345   `paligned_alloc.h` (#40).
    346 - Allow C++ files to include `pstdalign.h` and `paligned_alloc.h` (#39).
    347 
    348 ## [0.4.1]
    349 - Test for `posix_memalign` on GCC platforms and fix fallback
    350   `aligned_alloc`.
    351 - Fix JSON parser handling of empty objects and tables.
    352 - Fix JSON parser - some fields would not be accepted as valid (#17).
    353 - Fix rare uncompilable doc comment in schema (#21).
    354 - Avoid crash on certain table parser error cases (#30).
    355 - Add support for scan similar to find in reader API, but for O(N)
    356   unsorted search, or search by a secondary key, and in sub-ranges.
    357 - Optionally, and by default, allow scan by any field (#29), not just keys.
    358 - More compact code generation for reader (hiding scan methods).
    359 - Use __flatbuffers_utype_t for union type in reader instead of uint8_t.
    360 - Add unaligned write to punaligned for completeness.
    361 - Promote use of `flatcc_builder_finalize_aligned_buffer` in doc and
    362   samples over `flatcc_builder_finalize_buffer`.
    363 - Add scope counter to pstatic_assert.h to avoid line number conflicts.
    364 - Fix compiler error/warning for negative enums in generated JSON parser (#35).
    365 - Fix potential compiler error/warnings for large enum/defaults in
    366   generated reader/builder (#35).
    367 - Fix tab character in C++ style comments (#34)
    368 - Fix incorrect api usage in binary schema builder (#32)
    369 - Support hex constants in fbs schema (flatc also supports these now) (#33).
    370 
    371 
    372 ## [0.4.0]
    373 - Fix Windows detection in flatcc/support/elapsed.h used by benchmark.
    374 - Fix #8 surplus integer literal suffix in portable byteswap fallback.
    375 - Fix `pstatic_assert.h` missing fallback case.
    376 - Fix #9 return values from allocation can be zero without being an error.
    377 - Fix #11 by avoiding dependency on -lm (libmath) by providing a cleaner
    378   over/underflow function in `include/flatcc/portable/pparsefp.h`.
    379 - Fix #12 infinite loop during flatbuffer build operations caused by
    380   rare vtable dedupe hash table collision chains.
    381 - Added `include/flatcc/support/cdump.h` tool for encoding buffers in C.
    382 - JSON code generators no longer use non-portable PRIszu print
    383   modifiers. Fixes issue on IBM XLC AIX.
    384 - Deprecated support for PRIsz? print modifiers in
    385   `include/flatcc/portable/pinttypes.h`, they would require much more
    386   work to be portable.
    387 - Fix and clean up `__STDC__` version checks in portable library.
    388 - Improve IBM XLC support in `pstdalign.h`.
    389 - Always include `pstdalign.h` in `flatcc_flatbuffers.h` because some
    390   C11 compilers fail to provide `stdalign.h`.
    391 - Buffer verifier used to mostly, but not always, verify buffer
    392   alignment relative to buffer start. With size prefixed buffers it is
    393   necessary to verify relative to the allocated buffer, which is also
    394   safer and more consistent, but adds requirements to aligned allocation.
    395 - `monster_test` and `flatc_compat` test now uses aligned alloc.
    396 - Add `aligned_alloc` and `aligned_free` to `pstdalign.h`.
    397 - `flatcc_builder_finalize_aligned_buffer` now requires `aligned_free`
    398   to be fully portable and no longer use unaligned malloc as fallback,
    399   but still works with `free` on most platforms (not Windows).
    400 
    401 - BREAKING: Size prefixed buffers added requires a minor change
    402   to the low-level flatcc builder library with a flag argument to create
    403   and start buffer calls. This should not affect user code.
    404 
    405 
    406 Changes related to big endian support which do not affect little endian
    407 platforms with little endian wire format.
    408 
    409 - Support for big endian platforms, tested on IBM AIX Power PC.
    410 - Support for big endian encoded flatbuffers on both little and big
    411   endian host platforms via `FLATBUFFERS_PROTOCOL_IS_LE/BE` in
    412   `include/flatcc/flatcc_types.h`. Use `flatbuffers_is_native_pe()` to
    413   see if the host native endian format matches the buffer protocol.
    414   NOTE: file identifier at buffer offset 4 is always byteswapped.
    415 
    416 In more detail:
    417 
    418 - Fix vtable conversion to protocol endian format. This keeps cached
    419   vtables entirely in native format and reduces hash collisions and only
    420   converts when emitting the vtable to a buffer location.
    421 - Fix structs created with parameter list resulting in double endian
    422   conversion back to native.
    423 - Fix string swap used in sort due to endian sensitive diff math.
    424 - Disable direct vector access test case when running on non-native
    425   endian platform.
    426 - Update JSON printer test to handle `FLATBUFFERS_PROTOCOL_IS_BE`.
    427 - Fix emit test case. Incorrect assumption on acceptable null pointer
    428   breaks with null pointer conversion. Also add binary check when
    429   `FLATBUFFERS_PROTOCOL_IS_BE`.
    430 - Add binary test case to `json_test` when `FLATBUFFERS_PROTOCOL_IS_BE`.
    431 - Fix endian sensitive voffset access in json printer.
    432 - Update `flatc_compat` to reverse acceptance of 'golden' little endian
    433   reference buffer when `FLATBUFFERS_PROTOCOL_IS_BE`.
    434 
    435 ## [0.3.5a]
    436 - Fix regression introduced in 0.3.5 that caused double memory free on
    437   input file buffer. See issue #7.
    438 
    439 ## [0.3.5]
    440 
    441 - Allow flatcc cli options anywhere in the argument list.
    442 - Add --outfile option similar to --stdout, but to a file.
    443 - Add --depfile and --deptarget options for build dependencies.
    444 - Allow some test cases to accept arguments to avoid hardcoded paths.
    445 - Deprecate --schema-namespace=no option to disable namespace prefixes
    446   in binary schema as Google flatbuffers now also includes namespaces
    447   according to https://github.com/google/flatbuffers/pull/4025
    448 
    449 ## [0.3.4]
    450 
    451 - Add `FLATCC_RTONLY` and `FLATCC_INSTALL` build options.
    452 - Fix issue4: when building a buffer and the first thing created is an
    453   empty table, the builder wrongly assumed allocation failure. Affects
    454   runtime library.
    455 - `scripts/setup.sh` now also links to debug libraries useful for bug
    456   reporting.
    457 - Add ULL suffix to large printed constants in generated code which
    458   would otherwise required --std=c99 to silence warnings.
    459 
    460 ## [0.3.3]
    461 
    462 - BREAKING: `verify_as_root` no longer takes an identifier argument, use
    463   `verify_as_root_with_identifier`. `myschema_verifier.h` now
    464   includes `myschema_reader.h` to access identifier.
    465   identifer argument, and variants for type identifiers;.
    466 - Added scripts/setup.sh to quickly get started on small user projects.
    467 - Support `namespace ;` for reverting to global namespace in schema.
    468 - Enable block comments now that they are supported in flatc.
    469 - Parse and validate new `rpc_service` schema syntax, but with no
    470   support for code generation.
    471 - Add type hash support (`create/verify_as_typed_root` etc.) to
    472   optionally store and verify file identifiers based on hashed fully
    473   qualified type names.
    474 - Fix potential issue with detection of valid file identifiers in
    475   buffer.
    476 - Moved `include/support` into `include/flatcc/support`, renamed
    477   `include/support/readfile.h` function `read_file` to `readfile`.
    478 - Make `FLATCC_TEST` build option skip building samples and test
    479   files, as opposed to just skip running the tests.
    480 - `vec_at`, `vec_find`, etc. now use index type `size_t` instead of
    481   `flatbuffers_uoffset_t`.
    482 - Removed `size_t` conversion warnings on Win64.
    483 
    484 ## [0.3.2]
    485 
    486 - Move compiler warning handling from generated headers to portable
    487   library.
    488 - Clean up warnings and errors for older gcc, clang and MSVC compilers.
    489 - CI builds.
    490 - Fix and improve portable version of `static_assert`.
    491 - Add integer parsing to portable library.
    492 
    493 ## [0.3.1]
    494 
    495 - Add support for MSVC on Windows.
    496 - Allow FlatBuffer enums to be used in switch statements without warnings.
    497 - Remove warnings for 32-bit builds.
    498 - Fix runtime detection of endianness and add support for more
    499   platforms with compile time detection of endianness.
    500 - Fix scope bug where global namespace symbols from included schema
    501   would be invisible in parent schema.
    502 - Add missing `static` for generated union verifiers.
    503 - Fix bug in json printer unicode escape and hash table bug in
    504   compiler.
    505 - Fix json parser under allocation bug.
    506 - Fix `emit_test` early dealloc bug.
    507 
    508 ## [0.3.0]
    509 
    510 - Rename examples folder to samples folder.
    511 - Add samples/monster example.
    512 - BREAKING: added missing `_vec` infix on some operations related to
    513   building vectors. For example `Weapon_push` -> `Weapon_vec_push`.
    514 - BREAKING: vector and string start functions no longer takes a
    515   count/len argument as it proved tedious and not very useful.
    516   The return value is now 0 on success rather than a buffer pointer.
    517   Use `_extend` call after start when the length argument is non-zero.
    518 
    519 ## [0.2.1]
    520 
    521 - Disallow unquoted symbolic list in JSON parser by default for Google
    522   flatc compatibility.
    523 - Remove PRIVATE flags from CMake build files to support older CMake
    524   versions.
    525 - Simplify switching between ninja and make build tools.
    526 - Fix incorrectly named unaligned read macros - impacts non-x86 targets.
    527 - Mirror grisu3 headers in portable library to avoid dependency on
    528   `external/grisu3`.
    529 - Use correct grisu3 header for parsing, improving json parsing times.
    530 - Move `include/portable` to `include/flatcc/portable` to simplify
    531   runtime distribution and to prevent potential name and versioning
    532   conflicts.
    533 - Fix `is_union` in bfbs2json.c example.
    534 
    535 ## [0.2.0]
    536 
    537 - BREAKING: flatcc verify functions now return a distinct error code.
    538   This breaks existing code. Before non-zero was success, now `flatcc_verify_ok` == 0.
    539   The error code can be converted to a string using `flatcc_verify_error_string(ret)`.
    540 - BREAKING, minor: Remove user state from builder interface - now
    541   providing a user stack instead.
    542 - Fix verification of nested flatbuffers.
    543 - Fix certain header fields that was not endian encoded in builder.
    544 - MAJOR: Generate json printer and parser.
    545 - Added high performance integer printinger to portable library
    546   and fast floating point priting to runtime library (grisu3) for JSON.
    547 - Comparison agains default value now prints float to generated source
    548   with full precision ("%.17g").
    549 - MAJOR: read-only generated files no longer attempt to be independent
    550   of files in the flatcc include dir. Instead they will use one
    551   well-defined source of information for flatbuffer types and endian detection.
    552 - Always depend `portable/pendian.h` and `portable/pendian_detect.h`.
    553   (The `include/portable` dir can be copied under `include/flatcc` if so desired).
    554 - Updates to set of include files in include/flatcc.
    555 - Upgrade to pstdint.h 0.1.15 to fix 64-bit printf issue on OS-X.
    556 - Support for portable unaligned reads.
    557 - Hide symbols that leak into namespace via parent include.
    558 - Suppress unused function and variable warnings for GCC (in addition to clang).
    559 
    560 ## [0.1.1]
    561 
    562 - Rename libflatccbuilder.a to libflatccrt.a (flatcc runtime).
    563 - Add suffix to all generated files (`monster_test.h -> monster_test_reader.h`)
    564 - Add buffer verifiers (`monster_test_verifier.h).
    565 - Assert on error in flatcc builder by default.
    566 - Fix -I include path regression in `flatcc` command.
    567 
    568 ## [0.1.0]
    569 
    570 - Initial public release.