Numstore – a single file ACID database for NumPy arrays
ACID transactions for NumPy arrays when HDF5 and Zarr dominate the space.
Minimal Entity Component System (ECS) in python and numpy. Uses raylib for examples. Docs: https://meehai.gitlab.io/microecs
NumPy-backed ECS with archetype pooling beats OOP inheritance for Python game loops.
Python game developers, robotics simulator builders
Speck · Archetype · PyECS
I'm currently developing a robotics simulator from scratch (python+raylib) and, due to lack of game dev experience I went "full OOP" on it. A SceneObject with a lot of inherited interfaces (e.g. Collidable, Movable etc.). These are inherited and fixed at run time.
The main loop inevitably became:
for scene_object in sim.scene_objects: scene_object.update(...) for scene_object in sim.scene_objects: scene_object.draw(...)
Well, it turns out that this can become a bottleneck if you have many scene objects because computers love contiguous memory for caching, physics/math vectorization and so on.Having recently learned more about ECS[1,2], I started doing a bunch of experiments in a sandbox with turning the update() function into ECS. The idea is that the data is stored in columnar numpy arrays (components) + a lot of data structure optimizations for querying scene objects and fast access e.g.
qr = scene.query(HasMotion, HasPosition) # query result acting like a np array of (N, ...) shape qr.position += ... # operate like numpy / vectorized
In any case, the standalone library only needs python and numpy. Raylib is only for rendering, but the raw data structures don't need it.I'd love some feedback on it, e.g. what is it missing or what are gotchas I'll find out later on during the simulator development.
As an anecdote: I used Claude as an 'engineering manager', I wrote the code myself, it did the code review, tasks management and tests (super useful for corner cases).
[1] https://www.youtube.com/watch?v=qglU107_DA4 hytale's ECS video (great for beginners)
[2] Casey Muratori's latest video about the first ECS in the game industry (https://www.youtube.com/watch?v=73Do0OScoOU)
ACID transactions for NumPy arrays when HDF5 and Zarr dominate the space.
Replaces PostgreSQL + Redis + Neo4j + ClickHouse with one Rust binary.
Zero-copy shared memory beats pickle for large arrays, but Zarr already does parallel chunks.
NumPy API on WebGPU with zero shader writing beats TensorFlow.js bloat for compute.
Single-header C++17 NumPy parser when cnpy already exists.
Beautiful physics visualization, but Chladni simulations exist in MATLAB, Mathematica, and other interactive platforms.