Flecs is a high-performance Entity Component System (ECS) framework for games and simulations, written in C99 with a C++17 wrapper. It provides a data-oriented storage model where entities are stored in archetype tables with component columns, enabling cache-efficient iteration. The framework includes a powerful query language with support for relationships, inheritance, traversal, grouping, and sorting. It features an extensive addon system covering systems (pipelines), observers, prefabs, reflection/meta, JSON serialization, an embedded scripting language (Flecs Script) with async/await, a REST API with an HTTP server, statistics/metrics, alerts, and more. Flecs has zero external dependencies and is designed for lockless multi-core scheduling. It is used in commercial games and has a large ecosystem of examples and community bindings. Architecture: The library is modular with a core C API and optional addons compiled via preprocessor flags. The C++ API provides a fluent builder pattern for constructing entities, systems, queries, and observers. Key entry points include ecs_init/flecs::world for world creation, ecs_progress for running the game loop, ecs_insert for entity creation, ecs_system for defining systems, ecs_query for cached queries, and ecs_script for running Flecs Script files. Data flows involve creating entities with components, which are stored in tables; systems iterate over matching entities each frame; observers react to component changes; and the script engine allows runtime entity manipulation. External dependencies: None. Flecs is self-contained and uses only standard C library functions.
Nova is a custom ECMAScript (JavaScript) engine implemented in Rust, designed as a modular, embeddable runtime. It features a full bytecode compiler and virtual machine, a custom mark-compact garbage collector with typed arena allocation, and a shape-based (hidden class) object model for property access optimization. The engine closely follows the ECMAScript specification, implementing built-in objects (Promise, Array, Map, Set, Proxy, Temporal, etc.), module loading, and concurrent agents. Its architecture emphasizes data-oriented design and safe GC interaction through Rust-specific patterns like `GcScope`/`NoGcScope` and the `Bindable` trait. The project includes a standalone CLI (`nova_cli`) for running scripts and a test262 harness, currently passing approximately 80% of the official test suite. While actively developed, the engine has known limitations: many features are incomplete or behind feature flags (e.g., RegExp lacks full compliance, Temporal has placeholders, and several built-ins have `todo!()` stubs). The codebase exhibits high craftsmanship in its GC safety system, bytecode compiler, and object shape mechanics, but relies heavily on unsafe Rust and manual lifetime management. Nova is primarily a research-grade implementation aimed at embedding and exploration, not yet production-ready for general use.