Skip to content

Commit

Permalink
Version 0.10.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Nycto committed May 29, 2024
1 parent 5176720 commit 7e5bbd1
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 3 deletions.
26 changes: 24 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
# Changelog

## 0.10.0

### Bug Fixes

* Fix memory corruption bug caused by Nim mishandling sink parameters
* Support tuples in `Shared` and `Local`
* Fix a bug where an instanced `eventSys` can't be invoked

### New Features

* Add compiler flags for tracing various behavior during execution
* `-d:necsusSaveTrace` -- Log save and restore activity
* `-d:necsusQueryTrace` -- Log executed queries
* `-d:necsusEventTrace` -- Log when an event is sent
* `-d:necsusEntityTrace` -- Log when entities are created, modified or deleted
* Overall reduction of memory allocations

### Backwards incompatible changes

* Mark the logger parameter as `gcsafe` and `raises: []`
* Remove the `sink` flag from the `Outbox` proc parameter

## 0.9.1

### Bug Fixes
Expand Down Expand Up @@ -77,7 +99,7 @@ No known breaking changes
proc app() {.necsus([~startupSys, ~loopSys, ~teardownSys], newNecsusConf).}
```
2. `Spawn` and `Query` no longer return an `EntityId`. If you need them, use a `FullSpawn` or a `FullQuery` instead. This change allows Necsus to improve build speeds and produce less output code. If you're interested in the details, read on.
2. `Spawn` and `Query` no longer return an `EntityId`. If you need them, use a `FullSpawn` or a `FullQuery` instead. This change allows Necsus to improve build speeds and produce less output code. If you're interested in the details, read on.

During a build, Necsus automatically generates a set of all possible archetypes that could possibly exist at runtime. It does this by examining systems with `FullQuery`, `FullSpawn`, `Lookup`, and `Attach` directives, then uses that to calculate all the combinatorial possibilities. Naively, this is an exponential algorithm. This is important because archetypes themselves aren't free. Each archetype that exists increases build times and slows down queries.

Expand Down Expand Up @@ -128,4 +150,4 @@ With this change, each system gets its own inbox, which is cleared after the sys

* Many compile time speed improvements
* Various bug fixes
* Improved generic alias handling
* Improved generic alias handling
2 changes: 1 addition & 1 deletion necsus.nimble
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Package

version = "0.9.1"
version = "0.10.0"
author = "Nycto"
description = "Entity Component System"
license = "MIT"
Expand Down

0 comments on commit 7e5bbd1

Please sign in to comment.