Skip to content

Releases: NecsusECS/Necsus

0.14.1

10 Oct 04:02

Choose a tag to compare

Bug Fixes

  • Support multiple runSystemOnce calls in a template
  • Support pragmas on system args

0.14.0

26 Sep 02:32

Choose a tag to compare

Backwards Incompatible Changes

  • Removed automatic tuple join sorting, which may affect code that relied on sorted output.

New Features

  • Added support for typeOf in directives.
  • Introduced a new Resource directive and support for resources that require initialization.
  • Improved handling and flexibility for open symbols.

Bug Fixes

  • Fixed normalization of open symbols in the event system.
  • Improved accuracy of error locations and messages (nimNode, getTupleSubtypes, and system variables now include clearer type information).
  • Fixed issues with extend usage in bundles and tuple extension with generics.
  • Avoided unnecessary resource references to reduce overhead.

0.13.0

08 Jul 22:45

Choose a tag to compare

Backwards Incompatible Changes

  • Directives have been changed from functors back to procs. For most projects,
    this should be a transparent change. However, if you were depending on directives
    being objects you will need to update your code to use the procs instead.

Bug Fixes

  • Resolved error when detaching a component not present in the archetype
  • Fixed issue with optionally detaching accessories

New Features

  • Added support for union types in event declarations
  • Allow Attach and Swap to operate on objects that don't support copies (Nim >= 2.3)

0.12.0

12 Jan 18:18

Choose a tag to compare

Backwards Incompatible Changes

  • No known backwards incompatible changes

New Features

  • Remove archetype sorting restriction
  • Add generations to entity IDs to prevent entity confusion when entity IDs are recycled
  • Add DeleteAll directive
  • Add from for SystemVar
  • Support Local directives in bundles
  • Add maxCapacity pragma
  • Add requireMaxCapacity build flag
  • Add necsusSystemTrace flag
  • Improve log message for necsusEntityTrace
  • Use system IDs for profiling

Performance improvements

  • Remove closure iterators from queries
  • Lazy archetype alloc by default
  • Pre-initialize event inboxes
  • Fast compile mode improvements
  • Faster archetype iteration

Bug Fixes

  • Allow missing keys while parsing
  • Allow open symbols in directive parsing
  • Support all directives for runSystemOnce
  • Handle missing entities
  • Fix instantiation order of time values
  • Fix index error for Not queries with accessories
  • Fix infinite loop in -d:dump
  • Fix bundle privateAccess error for built systems
  • Fix conflicting eventsys mailbox names
  • Don't send messages to inactive systems
  • Generate sendProc for IndirectEventCallback systems
  • Add missing necsus imports -d:dump

0.11.2

01 Sep 00:16

Choose a tag to compare

0.11.2

Bug Fixes

  • Fix none lookup result for optional pointers to accessory components

New Features

  • Improve readability of EntityDebug output

0.11.1

31 Aug 16:38

Choose a tag to compare

0.11.1

Bug Fixes

  • Resolved a crash when looking up a pointer for an optional accessory
  • Fix invalid dumped code for temporary variables and queries over accessories

New Features

  • Runtime performance optimizations

0.11.0

29 Aug 03:13

Choose a tag to compare

0.11.0

Bug Fixes

  • Fix inbox sharing when a system is assigned to a variable
  • Fix inbox name collisions when argument names were the same
  • Fix error messages when a system incorrectly returns a value
  • Fix invalid code dumping when a newline is injected after a sink parameter
  • Allow joined tuples to operated on joined tuples

Backwards incompatible changes

  • Use () operator for directives instead of passing in procs. This improves compile speed
    and performance by removing the need for Nim to create and manage closures. However, it
    requires that all Necsus users enable the --experimental:callOperator flag.
  • Remove the necsusFloat32 flag and instead use BiggestUInt and BiggestFloat

New Features

  • Accessory components
    • Adding the accessory pragma means that a component no longer forces the creation
      of new archetypes. This reduces the size of generated code and improves compile speed.
  • Adds SystemVar.clear
  • Support tuple joining without explicit type definitions
  • Add an error message when attach/detach/swap fails
  • Build speed improvements
  • Adds SaveSystemInstance and EventSystemInstance types
  • Fast compile mode for speeding up IDE integration

0.10.0

29 May 15:56

Choose a tag to compare

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

28 Apr 23:53

Choose a tag to compare

Bug Fixes

  • Fix Lookup directives that contain a Not clause

v0.9.0

24 Apr 04:09

Choose a tag to compare

Breaking Changes

No known breaking changes

New Features

  • extend and join macros for combining tuple types
  • eventSys system type
  • Include import statements when using -d:dump
  • Support for Optional components in Detach directives
  • Add the Swap directive
  • Add the -d:archetypes build flag
  • Support component aliases with generics
  • Save and Restore directives, along with saveSys and restoreSys system types
  • Returning SystemInstance automatically flags a system as instanced.

Other Changes

  • Ensure that archetype rows are never copied
  • Silence noisy compiler warnings
  • Reduce size of generated code by around 50%
  • Logger is disabled by default