Skip to content

Swash 1.1.0

Choose a tag to compare

@johnrnyquist johnrnyquist released this 10 Jun 23:51
· 1 commit to main since this release

This release includes substantial ECS core refinements, improved signal and node/family behavior, broader API ergonomics, stronger system identity handling, additional tick support, major test expansion, and upgraded project documentation.

Highlights

  • Added FixedTickProvider.
  • Added optional name field to Engine.
  • Added Engine helpers for bulk entity removal and component/entity discovery.
  • Added remove(systemType:) support.
  • Expanded and modernized README with a practical quick start.
  • Strengthened identity/equality/hash behavior across core types.
  • Improved node pooling and update-complete listener correctness.
  • Expanded and improved test coverage.

Added

  • Sources/Swash/tick/FixedTickProvider.swift
  • Tests/SwashTests/ListIteratingSystemTests.swift
  • Tests/SwashTests/SystemListTests.swift

Changed

  • Engine, Entity, Node, System, Family, ComponentMatchingFamily, NodeList, SystemList, Signaler stack, and tick providers were refactored and hardened.
  • Family protocol naming cleanup from IFamily.swift to Family.swift.
  • Better type-name handling via String(reflecting:).
  • System behavior now prevents duplicate additions and improves identity-based comparisons.
  • Documentation and examples updated.

Removed

  • Sources/Swash/core/UtilityFunctions.swift
  • Tests/SwashTests/SwashTests.swift
  • IDE metadata entries under .idea

Fixes

  • Corrected updateComplete listener signature/cache-release behavior in family/node-pool update path.
  • Multiple linked-list and cleanup lifecycle fixes in systems and nodes.
  • Component add/remove signaling tightened to dispatch only when references actually change.

Compatibility Notes

  • There are API and behavior changes across core ECS/signal internals since 1.0.0.
  • Recommended for users upgrading from 1.0.0: run full game/system tests and verify custom systems that depend on listener lifecycle, entity identity assumptions, or system registration order.

Stats Since 1.0.0

  • 98 commits
  • 47 files changed
  • 1681 insertions, 1352 deletions

Full Changelog: 1.0.0...1.1.0