-
tigerbeetle
The distributed financial transactions database designed for mission critical safety and performance.
-
zig
General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
https://github.com/tigerbeetledb/tigerbeetle/blob/91a105875c...
You can see things like alloc / free, memory ownership, and everything that is associated with it.
The fact that you allocate from a startup buffer vs. a call to `mmap`/`brk` doesn't really change things.
I like this idea a lot.
Are there any other databases which do a similar thing?
This seems like one of those things that has massive benefit if you're willing to invest in the effort + architect it like that from the start.
(Unrelated note: I discovered last night that Zig has io_uring support and some nice wrappers implemented in "std". Which is nice for usecases like databases or networked services)
https://github.com/ziglang/zig/blob/42a3b60c331cf01d1ab80eb7...
I do small projects statically all the time! Writing a simple bf interpreter can be done so statically that you don't even need to store the program in its own array; program text can just be taken directly as const char*
https://github.com/ijustlovemath/bfi
Imagine my disappointment after working on a statically allocated HTTP server stack to discover that even `esp_log.h` does several malloc() calls [1] per log output line... thankfully that was only on the ESP8266_RTOS_SDK, and esp-idf isn't quite as bad.
[1] https://github.com/espressif/ESP8266_RTOS_SDK/blob/89a3f254b...