Ark.jl (logo) Ark.jl (logo)

Build Status Coverage Aqua QA JET Docs stable Docs dev GitHub DOI:10.5281/zenodo.17512271 MIT license Apache 2.0 license

Ark.jl is an archetype-based Entity Component System (ECS) for Julia. It is a port of the Go ECS Ark.

——

Features

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

Demos

Benchmarks

API Outline

API Index

Reproducibility

The documentation of Ark.jl was built using these direct dependencies,
Status `~/work/Ark.jl/Ark.jl/docs/Project.toml`
  [56664e29] Ark v0.3.2 `~/work/Ark.jl/Ark.jl`
  [e30172f5] Documenter v1.16.1
  [d6f4376e] Markdown v1.11.0
and using this machine and Julia version.
Julia Version 1.12.5
Commit 5fe89b8ddc1 (2026-02-09 16:05 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 4 × AMD EPYC 7763 64-Core Processor
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, znver3)
  GC: Built with stock GC
Threads: 1 default, 1 interactive, 1 GC (on 4 virtual cores)
A more complete overview of all dependencies and their versions is also provided.
Status `~/work/Ark.jl/Ark.jl/docs/Manifest.toml`
  [a4c015fc] ANSIColoredPrinters v0.0.1
  [1520ce14] AbstractTrees v0.4.5
  [7d9f7c33] Accessors v0.1.43
  [56664e29] Ark v0.3.2 `~/work/Ark.jl/Ark.jl`
  [944b1d66] CodecZlib v0.7.8
  [a33af91c] CompositionsBase v0.1.2
  [187b0558] ConstructionBase v1.6.0
  [ffbed154] DocStringExtensions v0.9.5
  [e30172f5] Documenter v1.16.1
  [ff5a1669] FieldViews v0.3.3
  [069b7b12] FunctionWrappers v1.1.3
  [d7ba0133] Git v1.5.0
  [b5f81e59] IOCapture v1.0.0
  [3587e190] InverseFunctions v0.1.17
  [692b3bcd] JLLWrappers v1.7.1
  [682c06a0] JSON v1.4.0
  [0e77f7df] LazilyInitializedFields v1.3.0
  [1914dd2f] MacroTools v0.5.16
  [d0879d2d] MarkdownAST v0.1.2
  [69de0a69] Parsers v2.8.3
  [aea7be01] PrecompileTools v1.3.3
  [21216c6a] Preferences v1.5.1
  [2792f1a3] RegistryInstances v0.1.0
  [90137ffa] StaticArrays v1.9.16
  [1e83bf80] StaticArraysCore v1.4.4
  [ec057cc2] StructUtils v2.6.3
  [3bb67fe8] TranscodingStreams v0.11.3
  [2e619515] Expat_jll v2.7.3+0
  [020c3dae] Git_LFS_jll v3.7.0+0
  [f8c6e375] Git_jll v2.53.0+0
  [94ce4f54] Libiconv_jll v1.18.0+0
  [9bd350c2] OpenSSH_jll v10.2.1+0
  [0dad84c5] ArgTools v1.1.2
  [56f22d72] Artifacts v1.11.0
  [2a0f44e3] Base64 v1.11.0
  [ade2ca70] Dates v1.11.0
  [f43a241f] Downloads v1.7.0
  [7b1f6079] FileWatching v1.11.0
  [b77e0a4c] InteractiveUtils v1.11.0
  [ac6e5ff7] JuliaSyntaxHighlighting v1.12.0
  [b27032c2] LibCURL v0.6.4
  [76f85450] LibGit2 v1.11.0
  [8f399da3] Libdl v1.11.0
  [37e2e46d] LinearAlgebra v1.12.0
  [56ddb016] Logging v1.11.0
  [d6f4376e] Markdown v1.11.0
  [ca575930] NetworkOptions v1.3.0
  [44cfe95a] Pkg v1.12.1
  [de0858da] Printf v1.11.0
  [3fa0cd96] REPL v1.11.0
  [9a3f8284] Random v1.11.0
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization v1.11.0
  [6462fe0b] Sockets v1.11.0
  [f489334b] StyledStrings v1.11.0
  [fa267f1f] TOML v1.0.3
  [a4e569a6] Tar v1.10.0
  [8dfed614] Test v1.11.0
  [cf7118a7] UUIDs v1.11.0
  [4ec0a83e] Unicode v1.11.0
  [e66e0078] CompilerSupportLibraries_jll v1.3.0+1
  [deac9b47] LibCURL_jll v8.15.0+0
  [e37daf67] LibGit2_jll v1.9.0+0
  [29816b5a] LibSSH2_jll v1.11.3+1
  [14a3606d] MozillaCACerts_jll v2025.11.4
  [4536629a] OpenBLAS_jll v0.3.29+0
  [458c3c95] OpenSSL_jll v3.5.4+0
  [efcefdf7] PCRE2_jll v10.44.0+1
  [83775a58] Zlib_jll v1.3.1+2
  [8e850b90] libblastrampoline_jll v5.15.0+0
  [8e850ede] nghttp2_jll v1.64.0+1
  [3f19e933] p7zip_jll v17.7.0+0

You can also download the manifest file and the project file.

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/ark-ecs/Ark.jl