322322
323323## Status
324324
325- Release 0.6.2 (in development) is primarily a bug fix release, refer
326- to CHANGELOG for details. A long standing bug has been fixed where
327- where objects created before a call to _ create_as_root would not be
328- properly aligned, and buffer end is now also padded to largest object
329- seen within the buffer.
330- Note that for clang debug builds, -fsanitize=undefined has been
331- added and this may require dependent source code to also use
332- that flag to avoid missing linker symbols. The feature can be disabled
333- in CMakeLists.txt.
334-
335- Release 0.6.1 contains primarily bug fixes and numerous contributions
336- from the community to handle platform edge cases. Additionally,
337- pendantic GCC warnings are disabled, relying instead on clang, since GCC
338- is too aggressive, breaks builds frequently and works against
339- portability. An existing C++ test case ensures that C code also works
340- with common C++ compilers, but it can break some environments, so there
341- is now a flag to disable that test without disabling all tests. Support
342- for Optional Scalar Values in the FlatBuffer format has been added.
343- There is also improved support for abstracting memory allocation on
344- various platforms. ` <table>_identifier ` has been deprecated in favor
345- ` <table>_file_identifier ` in generated code due to ` identifier ` easily
346- leading to name conflicts. ` file_extension ` constant in generated code
347- is now without prefixed dot (.).
348-
349- Release 0.6.0 introduces a "primary" attribute to be used together with
350- a key attribute to chose default key for finding and sorting. If primary
351- is absent, the key with the lowest id becomes primary. Tables and
352- vectors can now be sorted recursively on primary keys. BREAKING:
353- previously the first listed, not the lowest id, would be the primary
354- key. Also introduces fixed length scalar arrays in struct fields (struct
355- and enum elements are not supported). Structs support fixed length array
356- fields, including char arrays. Empty structs never fully worked and are
357- no longer supported, they are also no longer supported by flatc.
358- NOTE: char arrays are not currently part of Googles flatc compiler -
359- int8 arrays may be used instead. BREAKING: empty structs are no longer
360- supported - they are also not valid in Googles flatc compiler. See
361- CHANGELOG for additional changes. DEPRECATED: low-level ` cast_to/from `
362- from functions in ` flatcc_accessors.h ` will be removed in favor of
363- ` read/write_from/to ` because the cast interface breaks float conversion
364- on some uncommon platforms. This should not affect normal use but
365- remains valid in this release.
325+ Release 0.6.2 (in development) is primarily a bug fix release, refer to
326+ CHANGELOG for details. A long standing bug has been fixed where where objects
327+ created before a call to _ create_as_root would not be properly aligned, and
328+ buffer end is now also padded to largest object seen within the buffer. Note
329+ that for clang debug builds, -fsanitize=undefined has been added and this may
330+ require dependent source code to also use that flag to avoid missing linker
331+ symbols. The feature can be disabled in CMakeLists.txt. CMake has been bumped to
332+ version 3.16 which is the latest version where Appveyor will build MVSC 2015.
333+
334+ Release 0.6.1 contains primarily bug fixes and numerous contributions from the
335+ community to handle platform edge cases. Additionally, pendantic GCC warnings
336+ are disabled, relying instead on clang, since GCC is too aggressive, breaks
337+ builds frequently and works against portability. An existing C++ test case
338+ ensures that C code also works with common C++ compilers, but it can break some
339+ environments, so there is now a flag to disable that test without disabling
340+ all tests. Support for Optional Scalar Values in the FlatBuffer format has
341+ been added. There is also improved support for abstracting memory allocation
342+ on various platforms. ` <table>_identifier ` has been deprecated in favor
343+ ` <table>_file_identifier ` in generated code due to ` identifier ` easily leading
344+ to name conflicts. ` file_extension ` constant in generated code is now without
345+ prefixed dot (.).
346+
347+ Release 0.6.0 introduces a "primary" attribute to be used together with a key
348+ attribute to chose default key for finding and sorting. If primary is absent,
349+ the key with the lowest id becomes primary. Tables and vectors can now be sorted
350+ recursively on primary keys. BREAKING: previously the first listed, not the
351+ lowest id, would be the primary key. Also introduces fixed length scalar arrays
352+ in struct fields (struct and enum elements are not supported). Structs support
353+ fixed length array fields, including char arrays. Empty structs never fully
354+ worked and are no longer supported, they are also no longer supported by flatc.
355+ NOTE: char arrays are not currently part of Googles flatc compiler - int8 arrays
356+ may be used instead. BREAKING: empty structs are no longer supported - they are
357+ also not valid in Googles flatc compiler. See CHANGELOG for additional changes.
358+ DEPRECATED: low-level ` cast_to/from ` from functions in ` flatcc_accessors.h ` will
359+ be removed in favor of ` read/write_from/to ` because the cast interface breaks
360+ float conversion on some uncommon platforms. This should not affect normal use
361+ but remains valid in this release.
366362
367363Release 0.5.3 inlcudes various bug fixes (see changelog) and one
368364breaking but likely low impact change: BREAKING: 0.5.3 changes behavour
@@ -428,12 +424,15 @@ different target platforms.
428424
429425### Supported platforms (CI tested)
430426
431- This list is somewhat outdated, more recent compiler versions are added and
432- some old ones are removed when CI platforms no longer supported but largely
433- the supported targets remain unchanged. MSVC 2010 might become deprecated
434- in the future.
427+ As of flatcc v.0.6.2 the weekly build on github actions tests a range of
428+ gcc and clang versions on Ubuntu and macOS but the lists changes slightly
429+ as the underlying CI runners sometimes drop a compiler version. Windows
430+ is tested on Appveyor with MSVC 2025 and a later version on Github actions.
431+ See the appveyour and github actions workflow files for details.
435432
436- The ci-more branch tests additional compilers:
433+ In the past (ca. < flatcc-0.6.2) the following have been tested, and chances are
434+ that an older version of flatcc is still useful if the latest version does not
435+ compile on a given platform.
437436
438437- Ubuntu Trusty gcc 4.4, 4.6-4.9, 5, 6, 7 and clang 3.6, 3.8
439438- OS-X current clang / gcc
@@ -446,9 +445,6 @@ The GCC `--pedantic` compiler option is not supported as of GCC-8+
446445because it forces non-portable code changes and because it tends to
447446break the code base with each new GCC release.
448447
449- MSVC 2017 is not always tested because the CI environment then won't
450- support MSVC 2010.
451-
452448Older/non-standard versions of C++ compilers cause problems because
453449` static_assert ` and ` alignas ` behave in strange ways where they are
454450neither absent nor fully working as expected. There are often
@@ -459,10 +455,6 @@ The portably library does not support GCC C++ pre 4.7 because the
459455portable library does not work around C++ limitations in stdalign.h and
460456stdint.h before GCC 4.7. This could be fixed but is not a priority.
461457
462- Some previously testet compiler versions may have been retired as the
463- CI environment gets updated. See ` .travis.yml ` and ` appveyor.yml ` in
464- the ` ci-more ` branch for the current configuration.
465-
466458The monster sample does not work with MSVC 2010 because it intentionally
467459uses C99 style code to better follow the C++ version.
468460
@@ -480,6 +472,7 @@ tests (a simple C++ file that includes generated C code).
480472- Arduino
481473- IBM XLC on AIX big endian Power PC has been tested for release 0.4.0
482474 but is not part of regular release tests.
475+ - IBM s390x big endian via QEMU.
483476
484477### Portability
485478
0 commit comments