Releases: mlange-42/arche
Arche v0.15.2
Arche v0.15.2
Arche is an archetype-based Entity Component System for Go.
Arche's Features
- Designed for performance and highly optimized. See the Benchmarks.
- Well-documented API and comprehensive User Guide.
- No systems. Just queries. Use your own structure (or the Tools).
- No dependencies. Except for unit tests (100% test coverage).
- World serialization and deserialization with arche-serde.
Changelog
Performance
- Speeds up reset of small archetypes by zeroing memory manually (#475)
Arche v0.15.1
Arche v0.15.1
Arche is an archetype-based Entity Component System for Go.
Arche's Features
- Designed for performance and highly optimized. See the Benchmarks.
- Well-documented API and comprehensive User Guide.
- No systems. Just queries. Use your own structure (or the Tools).
- No dependencies. Except for unit tests (100% test coverage).
- World serialization and deserialization with arche-serde.
Changelog
Performance
- Optimizes batch operations (add, remove, exchange) by bulk-copying components (#473)
Documentation
- Adds benchmarks to the user guide for 1-of-5 components operations (e.g. remove 1 of 5) (#474)
Arche v0.15.0
Arche v0.15.0
Arche is an archetype-based Entity Component System for Go.
Arche's Features
- Designed for performance and highly optimized. See the Benchmarks.
- Well-documented API and comprehensive User Guide.
- No systems. Just queries. Use your own structure (or the Tools).
- No dependencies. Except for unit tests (100% test coverage).
- World serialization and deserialization with arche-serde.
Changelog
Arche v0.15.0 features optimizations that vastly speed up the creation of huge numbers (millions) of entities. Namely, all memory is grown exponentially now, rather than linearly. This also causes a breaking change, as the former "capacity increments" turned into just initial capacities.
Further, the README was revised and the ECS competition benchmarks were extended and moved to the go-ecs-benchmarks repository.
Breaking changes
- Removes
ecs.Config
; the world is configured with initial capacities directly (#467)
Features
- Adds methods
Batch.New
andBatch.NewQ
for batch entity creation (#468) - Deprecates
ecs.Component
, as a followup of deprecation of all methods that use it (#470)
Performance
- Optimizes entity creation by an altered growth policy for archetypes, entity list and entity pool (#464, #466, #469)
Documentation
- Rewrites features and benchmarks sections of the README (#462)
- Adds version and CPU information to the benchmarks in the user guide (#462)
- Removed deprecated methods from the benchmarks in the user guide (#462)
- Adds world creation and component ID lookup to the benchmarks in the user guide (#462)
- Uses the new methods
Batch.New
andBatch.NewQ
in examples where applicable, instead ofBuilder
(#470)
Other
- Uses mask pointers in all tests and benchmarks (#460)
Arche v0.14.5
Arche v0.14.5
Arche is an archetype-based Entity Component System for Go.
Arche's Features
- Simple core API. See the API docs.
- Optional logic filter and type-safe generic API.
- Entity relations as first-class feature. See the User Guide.
- World serialization and deserialization with arche-serde.
- No systems. Just queries. Use your own structure (or the Tools).
- No dependencies. Except for unit tests (100% coverage).
- Probably the fastest Go ECS out there. See the Benchmarks.
Changelog
Documentation
Arche v0.14.4
Arche v0.14.4
Arche is an archetype-based Entity Component System for Go.
Arche's Features
- Simple core API. See the API docs.
- Optional logic filter and type-safe generic API.
- Entity relations as first-class feature. See the User Guide.
- World serialization and deserialization with arche-serde.
- No systems. Just queries. Use your own structure (or the Tools).
- No dependencies. Except for unit tests (100% coverage).
- Probably the fastest Go ECS out there. See the Benchmarks.
Changelog
Performance
- Optimize mask to types conversion, speeding up archetype creation by up to 150ns (#453)
Arche v0.14.3
Arche v0.14.3
Arche is an archetype-based Entity Component System for Go.
Arche's Features
- Simple core API. See the API docs.
- Optional logic filter and type-safe generic API.
- Entity relations as first-class feature. See the User Guide.
- World serialization and deserialization with arche-serde.
- No systems. Just queries. Use your own structure (or the Tools).
- No dependencies. Except for unit tests (100% coverage).
- Probably the fastest Go ECS out there. See the Benchmarks.
Changelog
Performance
- Avoids a bitmask heap escape in world component operations (add, remove, exchange, ...), with around 20ns improvement (#452)
Arche v0.14.2
Arche v0.14.2
Arche is an archetype-based Entity Component System for Go.
Arche's Features
- Simple core API. See the API docs.
- Optional logic filter and type-safe generic API.
- Entity relations as first-class feature. See the User Guide.
- World serialization and deserialization with arche-serde.
- No systems. Just queries. Use your own structure (or the Tools).
- No dependencies. Except for unit tests (100% coverage).
- Probably the fastest Go ECS out there. See the Benchmarks.
Changelog
Performance
- Optimize
MapX.Assign
andMapX.NewWith
by use ofWorld.GetUnchecked
(#449)
Documentation
- Fix method names and ordering in benchmark tables (#448)
- Document listener notification handling in
MapX.NewWith
(#450)
Bugfixes
- Fix missing listener notification in
MapX.NewWith
when called with a relation target (#450)
Arche v0.14.1
Arche v0.14.1
Arche is an archetype-based Entity Component System for Go.
Arche's Features
- Simple core API. See the API docs.
- Optional logic filter and type-safe generic API.
- Entity relations as first-class feature. See the User Guide.
- World serialization and deserialization with arche-serde.
- No systems. Just queries. Use your own structure (or the Tools).
- No dependencies. Except for unit tests (100% coverage).
- Probably the fastest Go ECS out there. See the Benchmarks.
Changelog
Features
- Adds
World.NewEntityFn
,World.AddFn
andWorld.ExchangeFn
that call a callback function before listener notification (#445)
Bugfixes
- Fixes generic
MapX.Assign
andMapX.NewWith
notifying listeners before setting components (#445, issue #443)
Documentation
- Removes references to deprecated methods from the user guide (#447)
Other
Arche v0.14.0
Arche v0.14.0
❗ Retracted version. Use v0.14.1 instead ❗
Arche is an archetype-based Entity Component System for Go.
Arche's Features
- Simple core API. See the API docs.
- Optional logic filter and type-safe generic API.
- Entity relations as first-class feature. See the User Guide.
- World serialization and deserialization with arche-serde.
- No systems. Just queries. Use your own structure (or the Tools).
- No dependencies. Except for unit tests (100% coverage).
- Probably the fastest Go ECS out there. See the Benchmarks.
Changelog
Features
- Slow assignment methods like
World.Assign
andWorld.NewEntityWith
are deprecated, in favour of their now faster generic counterparts (#441)
Performance
- Optimizes
Map.Set
,MapX.Assign
andMapX.NewWith
, by not using runtime reflection (#440)
Documentation
- Adds benchmarks for
World.Assign
andWorld.NewEntityWith
to the user guide (#438) - Adds benchmarks for
MapX.Assign
andMapX.NewWith
to the user guide (#440)
Bugfixes
- Prevents garbage collection of slices and pointers in components added via
World.Assign
and similar methods (#438, issue #437)
Known issues
- Generic
MapX.Assign
andMapX.NewWith
notify listeners before setting components (#443)
Arche v0.13.3
Arche v0.13.3
Arche is an archetype-based Entity Component System for Go.
Arche's Features
- Simple core API. See the API docs.
- Optional logic filter and type-safe generic API.
- Entity relations as first-class feature. See the User Guide.
- World serialization and deserialization with arche-serde.
- No systems. Just queries. Use your own structure (or the Tools).
- No dependencies. Except for unit tests (100% coverage).
- Probably the fastest Go ECS out there. See the Benchmarks.
Changelog
Performance
- Simplifies the archetype graph to use only a single list of neighbors per node, saving a bit of memory (#433)