Ark.jl is an archetype-based Entity Component System (ECS) for Julia. It is a port of the Go ECS Ark.
——Features
- Designed for performance and highly optimized.
- Well-documented, type-stable API.
- Entity relationships as a first-class feature.
- Storage mode per component for ergonomics and SIMD.
- Extensible event system with filtering and custom event types.
- Fast batch operations for mass manipulation.
- No systems. Just queries. Use your own structure.
- Minimal dependencies, 100% test coverage.
Why ECS?
Entity Component Systems (ECS) offer a clean, scalable way to build individual- and agent-based models by separating agent data from behavioral logic. Agents are simply collections of components, while systems define how those components interact, making simulations modular, extensible, and efficient even with millions of heterogeneous individuals.
Ark.jl brings this architecture to Julia with a lightweight, performance-focused implementation that empowers scientific modellers to design complex and performant simulations without the need for deep software engineering expertise.
Manual Outline
- Quickstart
- The World
- Entities
- Components
- Queries
- Systems
- Resources
- Entity relationships
- Batch operations
- Event system
- Architecture
API Outline
API Index
Ark.zero_entityArk.EntitiesArk.EntityArk.EventRegistryArk.EventRegistryArk.EventTypeArk.FilterArk.FilterArk.ObserverArk.QueryArk.QueryArk.QueryArk.RelationshipArk.StructArrayStorageArk.VectorStorageArk.WorldArk.WorldArk.add_components!Ark.add_resource!Ark.close!Ark.copy_entity!Ark.count_entitiesArk.emit_event!Ark.exchange_components!Ark.get_componentsArk.get_relationsArk.get_resourceArk.has_componentsArk.has_resourceArk.is_aliveArk.is_lockedArk.is_zeroArk.new_entities!Ark.new_entity!Ark.new_event_type!Ark.observe!Ark.remove_components!Ark.remove_entities!Ark.remove_entity!Ark.remove_resource!Ark.reset!Ark.set_components!Ark.set_relations!Ark.set_resource!Ark.unpackArk.unregister!Base.lengthArk.@unpack
Cite as
Lange, M. & Meligrana, A. (2025): Ark.jl – An archetype-based Entity Component System for Julia. DOI: 10.5281/zenodo.17512271, GitHub repository: https://github.com/mlange-42/Ark.jl