FlatBuffers: Memory Efficient Serialization Library
Go to file
Vladimir Glavnyy 7f33cf682a
[C++] Switch `flatc` to `--cpp-std c++11` C++ code generator (#6306)
Prior to this commit the default C++ code generator was `c++0x`.
A code generated with `c++0x` code-gen might have a vulnerability (undefined behavior) connected evolution of enums in a schema. This UB could break the backward compatibility if previously generated code casts an unknown enumerator to enum type that knows nothing about future enumerators added to the schema.

The main differences between `c++0x` and `c++11`:

- generated enums use explicitly declared underlying type;
- generated object-API tables don't declare default ctor() explicitly, instead of it default data member initializers are generated.

Please use `flatc --cpp-std c++0x` option for backward compatibility with old compilers.
2020-12-07 11:19:36 -08:00
.appveyor Add support for fixed-size arrays (#5313) 2019-06-18 00:15:13 +02:00
.bazelci Don't test on Ubuntu 14.04 (#5302) 2019-04-24 10:28:35 -07:00
.github Moved various language tests from AppVeyor to GitHub Actions (#6300) 2020-12-03 11:26:27 -08:00
.travis Add CMake 'generated_code' target to simplify resolution of build dependencies (#5697) 2020-01-06 15:26:41 -08:00
CMake Fix git command executed in wrong folder when doing cmake superbuild (#6039) 2020-07-20 12:26:01 -07:00
android Modernize android build and sample (#6229) 2020-11-05 14:23:37 -08:00
bazel Allow to run cpp tests under grpc/tests/ using bazel. (#6040) 2020-07-21 11:08:01 -07:00
conan Update Conan version Automatically (#5027) 2018-11-12 08:49:42 -08:00
dart [JS] FlexBuffers Fix for wrong type of offset and length values (#6107) 2020-09-10 12:36:37 -07:00
docs [C++] Switch `flatc` to `--cpp-std c++11` C++ code generator (#6306) 2020-12-07 11:19:36 -08:00
go Support size-prefixed buffers and add tests for size-prefixed messages (#6232) 2020-11-05 11:23:56 -08:00
grpc [Swift] Adds a format file and reformats the swift project (#6250) 2020-11-16 19:52:38 +03:00
include/flatbuffers [idl_parser] Unify parsing of NaN values read from .fbs and .json files (#6296) 2020-12-07 11:12:58 -08:00
java/com/google/flatbuffers [Java] allowing larger buffer sizes when growing a byte buffer (#6118) 2020-09-17 11:55:24 -07:00
js [JS/TS] Rewrite flexbuffers JS to TS (#6148) 2020-10-19 13:11:35 -07:00
lobster [Lobster] optional scalars support 2020-08-18 14:00:02 -07:00
lua Lua cleanup (#5624) 2019-11-14 15:46:46 -08:00
mjs [JS/TS] Modernize TypeScript / JavaScript flatbuffers support (#6095) 2020-09-17 12:21:14 -07:00
net/FlatBuffers [C#] Optional Scalars (#6217) 2020-10-30 13:18:59 -07:00
php Performance improvement to generated+supporting PHP (#5080) 2018-12-20 16:10:20 -08:00
python export a __version__ variable for python module (#5309) 2020-07-30 15:56:21 -07:00
reflection Optional-ness in reflection (#6097) 2020-09-11 14:20:32 -07:00
rust BREAKING: Rust flexbuffers serde human readable set to false (#6257) 2020-11-13 07:53:01 -08:00
samples [C++] Switch `flatc` to `--cpp-std c++11` C++ code generator (#6306) 2020-12-07 11:19:36 -08:00
snap + Add `removable-media` plug to the snapcraft config (#6083) 2020-08-24 09:55:38 -07:00
src [C++] Switch `flatc` to `--cpp-std c++11` C++ code generator (#6306) 2020-12-07 11:19:36 -08:00
swift [Swift] Adds a format file and reformats the swift project (#6250) 2020-11-16 19:52:38 +03:00
tests [C++] Switch `flatc` to `--cpp-std c++11` C++ code generator (#6306) 2020-12-07 11:19:36 -08:00
ts Add type annotation to unspecified array (#6264) 2020-11-16 10:49:53 -08:00
.clang-format Made all C++ files clang-formatted. 2017-12-21 11:45:02 -08:00
.editorconfig Unify line ending rules in '.editorconfig' and '.gitattributes' (#5231) 2019-03-18 12:47:07 -07:00
.eslintrc.js [JS/TS] Modernize TypeScript / JavaScript flatbuffers support (#6095) 2020-09-17 12:21:14 -07:00
.gitattributes Unify line ending rules in '.editorconfig' and '.gitattributes' (#5231) 2019-03-18 12:47:07 -07:00
.gitignore [C++] Add ParseJson(), Parser(Parser&&), update fuzzers (#6284) 2020-11-23 10:17:44 -08:00
.travis.yml Modernize android build and sample (#6229) 2020-11-05 14:23:37 -08:00
BUILD Allow to run cpp tests under grpc/tests/ using bazel. (#6040) 2020-07-21 11:08:01 -07:00
CMakeLists.txt [TS] GRPC Implementation (#6141) 2020-10-07 09:56:30 -07:00
CONTRIBUTING.md Fixed link to Google C++ Style Guide. 2017-02-08 16:37:25 -08:00
LICENSE.txt Fixed Apache license not using canonical version. 2019-11-04 17:15:56 -08:00
WORKSPACE Bump version of rules_go to 0.24.5 (#6234) 2020-11-12 10:04:34 -08:00
appveyor.yml Moved various language tests from AppVeyor to GitHub Actions (#6300) 2020-12-03 11:26:27 -08:00
build_defs.bzl [Bazel] Add support for compatible_with and restricted_to (#5681) 2019-12-26 09:58:48 -08:00
composer.json (PHP) add experimental support for PHP language. 2015-11-18 00:26:39 +09:00
conanfile.py Update Conan version Automatically (#5027) 2018-11-12 08:49:42 -08:00
package.json [JS/TS] fix flatbuffers default export (#6123) 2020-09-21 09:46:24 -07:00
pom.xml updated maven build files 2020-03-16 11:33:42 -07:00
readme.md Minor doc updates: FlexBuffers C#, Discord, CppUsage. 2019-12-26 12:36:41 -08:00
swift.swiftformat [Swift] Adds a format file and reformats the swift project (#6250) 2020-11-16 19:52:38 +03:00
tsconfig.json [JS/TS] Rewrite flexbuffers JS to TS (#6148) 2020-10-19 13:11:35 -07:00
tsconfig.mjs.json [JS/TS] Rewrite flexbuffers JS to TS (#6148) 2020-10-19 13:11:35 -07:00
yarn.lock [JS/TS] Modernize TypeScript / JavaScript flatbuffers support (#6095) 2020-09-17 12:21:14 -07:00

readme.md

logo FlatBuffers

Build Status Build status Join the chat at https://gitter.im/google/flatbuffers Discord Chat Twitter Follow

FlatBuffers is a cross platform serialization library architected for maximum memory efficiency. It allows you to directly access serialized data without parsing/unpacking it first, while still having great forwards/backwards compatibility.

Go to our landing page to browse our documentation.

Supported operating systems

  • Windows
  • MacOS X
  • Linux
  • Android
  • And any others with a recent C++ compiler.

Supported programming languages

  • C++
  • C#
  • C
  • Dart
  • Go
  • Java
  • JavaScript
  • Lobster
  • Lua
  • PHP
  • Python
  • Rust
  • TypeScript

and more in progress...

Contribution

To contribute to this project, see CONTRIBUTING.

Licensing

Flatbuffers is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.