Repository navigation
Swash 1.1.0
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