I'm opening this issue to discuss the prospect of transitioning into using the Arrow.jl FlatBuffer submodule as the 'official' julia FlatBuffer implementation. The main motivation for doing so is two fold. First, the current implementation isn't really 'flat' in the sense that you need to parse the buffer by mapping the data into julia structs, rather than querying the buffer directly, which is a major motivation for using FlatBuffers in the first place. Second, as the Arrow.jl implementation is based on the official go implementation of FlatBuffers, which makes it easy to implement flatc support by modifying existing code. Having flatc support means that buffer access functionality is code generated. This is needed to be granted "official supported language" status, and to avoid having to manually implement julia code to match any given FlatBuffer schema.
I have a WIP fork of the flatc code here, which generates Arrow.jl FlatBuffer compatible julia code for fbs schemas. Some major current limitations is that it doesn't handle union types, and that all the generated code is put in a single module scope (I haven't figured out how to deal with the schema namespace yet).
I also have a WIP fork of FlatBuffer.jl here, containing the Arrow.jl code, and some updated tests from the official Monster.fbs example schema. In particular, the code generation is made here, and the generated code example is here.
I'm opening this issue to discuss the prospect of transitioning into using the
Arrow.jlFlatBuffer submodule as the 'official'juliaFlatBuffer implementation. The main motivation for doing so is two fold. First, the current implementation isn't really 'flat' in the sense that you need to parse the buffer by mapping the data intojuliastructs, rather than querying the buffer directly, which is a major motivation for using FlatBuffers in the first place. Second, as theArrow.jlimplementation is based on the officialgoimplementation of FlatBuffers, which makes it easy to implementflatcsupport by modifying existing code. Havingflatcsupport means that buffer access functionality is code generated. This is needed to be granted "official supported language" status, and to avoid having to manually implementjuliacode to match any given FlatBuffer schema.I have a WIP fork of the flatc code here, which generates
Arrow.jlFlatBuffer compatiblejuliacode for fbs schemas. Some major current limitations is that it doesn't handle union types, and that all the generated code is put in a single module scope (I haven't figured out how to deal with the schema namespace yet).I also have a WIP fork of
FlatBuffer.jlhere, containing theArrow.jlcode, and some updated tests from the official Monster.fbs example schema. In particular, the code generation is made here, and the generated code example is here.