- Replace 'State s' with 'ReaderT (IORef s) IO', resulting in significantly less allocations.
- Perform static analysis of 'QueryT's to avoid evaluating them on irrelevant entities.
- Added the 'surgery' function to introduce temporary effects.
- Significant performance improvements due to constructing monadic generic functions via 'Codensity'.
- Also export 'StorageType'.
- Renamed 'get*' to 'query*'.
- Renamed 'newEntity' to 'createEntity'.
- Renamed 'defEntity' to 'newEntity'.
- Renamed 'defEntity'' to 'unchanged'.
- Renamed 'defWorld' to 'defStorage'.
- Significant performance improvements.
- Added a 'Virtual' component type, allowing for easy integration with systems that own their own data. Getting and setting on 'Virtual' components dispatch as actions in the underlying monad stack.
- Added proper type wrappers around 'SystemT' and 'QueryT' so they don't eat up valuable mtl instances.
- Removed the 'Ent' parameter from the 'efor' callback, since this can now be gotten in any 'QueryT' context via 'queryEnt'.
- Parameterized 'emap' and 'efor' by an 'EntityTarget', which allows for calling these functions over specific groups of entities.
- Added 'eover': a combination of 'emap' and 'efor'.
- Added 'deleteEntity' (function) and 'delEntity' (QueryT setter).
- Added 'yieldSystemT' for resuming a 'SystemT' computation later.
- Bumped the upper bound on 'base' to 5 (thanks to nek0).
- First version. Released on an unsuspecting world.