4 ms·
FDB itself is written in Flow, which is 98% C++ with a few extra keywords thrown on top that gets compiled to actual C++. This gives them actor model concurrenc
by ryanworl 8y ago
FDB itself is written in Flow, which is 98% C++ with a few extra keywords thrown on top that gets compiled to actual C++. This gives them actor model concurrency in C++ that is completely deterministic by generating very ugly code that uses callbacks instead of threads or coroutines.
The reason for Java being used here, if I had to guess, is they have experience running Java in production and the Java bindings are the most mature (in my opinion). Writing the record layer in C++ would probably be overkill. The reason the Java bindings are the most mature is probably because they needed to be to write this :)
- drb91 8y agoWow people really have no imagination when it comes to naming languages.
- polskibus 8y agoCould you please provide a link to Flow?
- ryanworl 8y agohttps://github.com/apple/foundationdb/tree/master/flow https://github.com/apple/foundationdb/tree/master/flow
- teacpde 8y ago> Writing record layer in C++ would be overkill Mind to elaborate on why C++ would be overkill? I understand the layered architecture decouples data model from underlying storage so it can be implemented in whatever language. To me, Flow and not having GC makes C++ a good choice.
- ryanworl 8y agoIt would be a fine choice, (and the document layer is) but the most performance sensitive parts of the entire system when you take it as a whole are already written in Flow. Writing it in C++ entirely would take a lot longer.