mirror of https://github.com/vee1e/flatbuffers - FlatBuffers: Memory Efficient Serialization Library
Find a file
Derek Bailey 63b7b25289
FlatBuffers 64 for C++ (#7935)
* First working hack of adding 64-bit. Don't judge :)

* Made vector_downward work on 64 bit types

* vector_downward uses size_t, added offset64 to reflection

* cleaned up adding offset64 in parser

* Add C++ testing skeleton for 64-bit

* working test for CreateVector64

* working >2 GiB buffers

* support for large strings

* simplified CreateString<> to just provide the offset type

* generalize CreateVector template

* update test_64.afb due to upstream format change

* Added Vector64 type, which is just an alias for vector ATM

* Switch to Offset64 for Vector64

* Update for reflection bfbs output change

* Starting to add support for vector64 type in C++

* made a generic CreateVector that can handle different offsets and vector types

* Support for 32-vector with 64-addressing

* Vector64 basic builder + tests working

* basic support for json vector64 support

* renamed fields in test_64bit.fbs to better reflect their use

* working C++ vector64 builder

* Apply --annotate-sparse-vector to 64-bit tests

* Enable Vector64 for --annotate-sparse-vectors

* Merged from upstream

* Add `near_string` field for testing 32-bit offsets alongside

* keep track of where the 32-bit and 64-bit regions are for flatbufferbuilder

* move template<> outside class body for GCC

* update run.sh to build and run tests

* basic assertion for adding 64-bit offset at the wrong time

* started to separate `FlatBufferBuilder` into two classes, 1 64-bit aware, the other not

* add test for nested flatbuffer vector64, fix bug in alignment of big vectors

* fixed CreateDirect method by iterating by Offset64 first

* internal refactoring of flatbufferbuilder

* block not supported languages in the parser from using 64-bit

* evolution tests for adding a vector64 field

* conformity tests for adding/removing offset64 attributes

* ensure test is for a big buffer

* add parser error tests for `offset64` and `vector64` attributes

* add missing static that GCC only complains about

* remove stdint-uintn.h header that gets automatically added

* move 64-bit CalculateOffset internal

* fixed return size of EndVector

* various fixes on windows

* add SizeT to vector_downward

* minimze range of size changes in vector and builder

* reworked how tracking if 64-offsets are added

* Add ReturnT to EndVector

* small cleanups

* remove need for second Array definition

* combine IndirectHelpers into one definition

* started support for vector of struct

* Support for 32/64-vectors of structs + Offset64

* small cleanups

* add verification for vector64

* add sized prefix for 64-bit buffers

* add fuzzer for 64-bit

* add example of adding many vectors using a wrapper table

* run the new -bfbs-gen-embed logic on the 64-bit tests

* remove run.sh and fix cmakelist issue

* fixed bazel rules

* fixed some PR comments

* add 64-bit tests to cmakelist
2023-05-09 09:16:30 -07:00
.bazelci
.github Replace deprecated command with environment file (#7921) 2023-04-25 22:50:37 -07:00
android FlatBuffers Version 23.5.8 (#7943) 2023-05-09 08:05:25 -07:00
bazel
benchmarks Supported cmake 3.8 (#7801) 2023-01-29 23:00:57 -08:00
CMake FlatBuffers Version 23.5.8 (#7943) 2023-05-09 08:05:25 -07:00
conan
dart FlatBuffers Version 23.5.8 (#7943) 2023-05-09 08:05:25 -07:00
docs [CS] Verifier (#7850) 2023-04-06 00:29:14 +02:00
examples/go-echo Go: make generated code more compliant to "go fmt" (#7907) 2023-04-26 05:19:07 +00:00
go Support file_identifier in Go (#7904) 2023-04-26 05:15:09 +00:00
goldens FlatBuffers Version 23.5.8 (#7943) 2023-05-09 08:05:25 -07:00
grpc FlatBuffers Version 23.5.8 (#7943) 2023-05-09 08:05:25 -07:00
include/flatbuffers FlatBuffers 64 for C++ (#7935) 2023-05-09 09:16:30 -07:00
java FlatBuffers 64 for C++ (#7935) 2023-05-09 09:16:30 -07:00
js
kotlin [Android][Kotlin] fixed build after decomission of jcenter and gradle update (#7840) 2023-03-02 23:27:06 -08:00
lobster
lua
mjs
net/FlatBuffers FlatBuffers Version 23.5.8 (#7943) 2023-05-09 08:05:25 -07:00
nim
php Fix PHP byte validation and reenable builds (#7670) 2022-11-29 08:12:28 -08:00
python FlatBuffers 64 for C++ (#7935) 2023-05-09 09:16:30 -07:00
reflection FlatBuffers 64 for C++ (#7935) 2023-05-09 09:16:30 -07:00
rust FlatBuffers Version 23.5.8 (#7943) 2023-05-09 08:05:25 -07:00
samples FlatBuffers Version 23.5.8 (#7943) 2023-05-09 08:05:25 -07:00
scripts Add #!/usr/bin/bash to release.sh (#7942) 2023-05-08 14:20:14 -07:00
snap
src FlatBuffers 64 for C++ (#7935) 2023-05-09 09:16:30 -07:00
swift FlatBuffers Version 23.5.8 (#7943) 2023-05-09 08:05:25 -07:00
tests FlatBuffers 64 for C++ (#7935) 2023-05-09 09:16:30 -07:00
ts Migrate from rules_nodejs to rules_js/rules_ts (take 2) (#7928) 2023-05-03 11:48:15 -07:00
.bazelignore Migrate from rules_nodejs to rules_js/rules_ts (take 2) (#7928) 2023-05-03 11:48:15 -07:00
.bazelrc Migrate from rules_nodejs to rules_js/rules_ts (take 2) (#7928) 2023-05-03 11:48:15 -07:00
.clang-format
.clang-tidy Add clang-tidy, fix some bugpron problems. (#7708) 2022-12-14 21:58:55 -08:00
.editorconfig Editorconfig: als configure to trim whitespaces end EOL. (#7833) 2023-02-27 19:56:18 -08:00
.eslintrc.js
.gitattributes
.gitignore
.npmrc Migrate from rules_nodejs to rules_js/rules_ts (take 2) (#7928) 2023-05-03 11:48:15 -07:00
BUILD.bazel Migrate from rules_nodejs to rules_js/rules_ts (take 2) (#7928) 2023-05-03 11:48:15 -07:00
build_defs.bzl Add binary schema reflection (#7932) 2023-05-04 16:12:45 -07:00
CHANGELOG.md FlatBuffers Version 23.5.8 (#7943) 2023-05-09 08:05:25 -07:00
CMakeLists.txt FlatBuffers 64 for C++ (#7935) 2023-05-09 09:16:30 -07:00
composer.json
conanfile.py Updated remaining usages of LICENSE.txt 2023-03-03 12:01:08 -08:00
CONTRIBUTING.md
FlatBuffers.podspec FlatBuffers Version 23.5.8 (#7943) 2023-05-09 08:05:25 -07:00
Formatters.md
LICENSE Rename LICENSE.txt to LICENSE (#7808) 2023-01-30 21:36:30 -08:00
package.json FlatBuffers Version 23.5.8 (#7943) 2023-05-09 08:05:25 -07:00
Package.swift
Package@swift-5.5.swift Removes Dead code & regenerate code (#7744) 2023-01-06 16:40:40 -08:00
pnpm-lock.yaml Migrate from rules_nodejs to rules_js/rules_ts (take 2) (#7928) 2023-05-03 11:48:15 -07:00
README.md README.md: PyPI case typo (#7880) 2023-03-30 13:32:16 -07:00
SECURITY.md
swift.swiftformat Removes Dead code & regenerate code (#7744) 2023-01-06 16:40:40 -08:00
tsconfig.json Simplify and fix TypeScript compilation output (#7815) 2023-02-06 13:10:20 -08:00
tsconfig.mjs.json Simplify and fix TypeScript compilation output (#7815) 2023-02-06 13:10:20 -08:00
typescript.bzl Migrate from rules_nodejs to rules_js/rules_ts (take 2) (#7928) 2023-05-03 11:48:15 -07:00
WORKSPACE Migrate from rules_nodejs to rules_js/rules_ts (take 2) (#7928) 2023-05-03 11:48:15 -07:00

logo FlatBuffers

Build status BuildKite status Fuzzing Status OpenSSF Scorecard Join the chat at https://gitter.im/google/flatbuffers Discord Chat Twitter Follow 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
  • Linux
  • Android
  • And any others with a recent C++ compiler (C++ 11 and newer)

Supported programming languages

Code generation and runtime libraries for many popular languages.

  1. C
  2. C++ - snapcraft.io
  3. C# - nuget.org
  4. Dart - pub.dev
  5. Go - go.dev
  6. Java - Maven
  7. JavaScript - NPM
  8. Kotlin
  9. Lobster
  10. Lua
  11. PHP
  12. Python - PyPI
  13. Rust - crates.io
  14. Swift - swiftpackageindex
  15. TypeScript - NPM
  16. Nim

Versioning

FlatBuffers does not follow traditional Semver versioning (see rationale) but rather uses a format of the date of the release.

Contribution

To contribute to this project, see CONTRIBUTING.

Community

Security

Please see our Security Policy for reporting vulnerabilities.

Licensing

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