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.