# Change Log
## Version: 0.6.5 - 2014-07-17
- Better support for multiple concurrent worlds in regards to memory usage.
- Smaller entity instances.
- **Fix**: Actually fixed GWT support, bumped gwt to 2.6.0.
## Version: 0.6.3 - 2014-07-07
- **Fix**: Potential IOOB exceptions in UuidEntityManager.
## Version: 0.6.2 - 2014-07-07
- UUID is now optional for entities.
- Add UuidEntityManager to automatically map UUID:s to entities.
- UUID:s are lazily instantiated.
- **Fix**: GWT build was broken in 0.6.1.
## Version: 0.6.1 - 2014-07-03
- New standalone `artemis-odb-cli` artifact:
- Handles weaving (new in 0.6.1) and matrix generation.
- Replaces `artemis-odb-matrix-X.Y.Z-cli.jar`.
- **Fix**: OOB Exception in ComponentManager with componentsByType when component types > 64.
- **Fix**: Calling `Entity#changedInWorld` before an entity is added to the world yields null.
## Version: 0.6.0 - 2014-06-01
- **GWT support** ([demo](http://flet.github.io/spaceship-warrior-redux/)) sporting
[libgdx](https://github.com/libgdx/libgdx)'s reflection wrapper code.
- This means that `@Mapper` and `@Wire` works for GWT builds too.
- Note: `@PooledWeaver` and `@PackedWeaver` don't work under GWT, though the presence
of the annotations doesn't break anything.
- Automatically generate a bird's eye view of artemis: **[Component Dependency Matrix][CDM]**.
- **Faux structs** with [@PackedWeaver][Struct]`.
- Looks and behaves just like normal java classes.
- Direct field access works - no need to generate getters and setters - i.e. `position.x += 0.24f` is valid.
- Contiguously stored in memory, internally backed by a shared `ByteBuffer.allocateDirect()`.
- Works for all components composed of primitive types.
- Entity systems and managers can `@Wire` (inject) anything from the world: will eventually
replace `@Mapper`. No need to annotate each field - just annotate the class and artemis
will take care of injecting applicable fields.
- `@Wire` can inject parent classes too.
- `@Wire` can resolve non-final references. Eg, AbstractEntityFactory is resolved as
EntityFactory etc. See [test/example](https://github.com/junkdog/artemis-odb/blob/6eb51ccc7a72a4ff16737277f609a58f9cae94ca/artemis/src/test/java/com/artemis/SmarterWireTest.java#L39).
- EntitySystems process entities in ascending id order.
- Considerably faster processing when memory access is aligned (potential biggest gains from
- Slightly slower insert/remove (3-4% with 4096 entities)
- New optional `UuidEntityManager`, tracks entities by UUID.
- Optional `expectedEntityCount` parameters in `World` constructor.
- `-DideFriendlyPacking`: If true, will leave field stubs to keep IDE:s
happy after transformations. Defaults to false.
- `-DenablePooledWeaving`: Enables weaving of pooled components (more viable on
Android than JVM). Defaults to true.
- `-DenableArtemisPlugin`: If set to false, no weaving will take place (useful
- **Fix**: Possible NPE when removing recently created entities.
- **Fix**: `Entity#getComponent` would sometimes throw an `ArrayIndexOutOfBoundsException`.
## Version: 0.5.0 - 2013-11-24
- Changed artemis to a multi-module project (the `artemis` folder is the old root).
- Entity instances are recycled.
- New component types, `PooledComponent` and `PackedComponent`.
- Optionally transform components with `@PackedWeaver` and `@PooledWeaver` by
configuring the `artemis-odb-maven-plugin`.
- New method `Entity#createComponent(Class<Component>)`.
- Annotation processor validates pooled and packed component types.
- Managers support `@Mapper` annotation.
- No longer necessary to stub `Manager#initialize()`.
- `GroupManager#getGroups` returns an empty bag if entity isn't in any group.
- `World#dispose` for disposing managers and systems with managed resources.
- **Fix**: DelayedEntityProcessingSystem prematurely expired entities.
- **Fix**: Recycled entities would sometimes have their components cleared when
recycled during the same round as the original entity was deleted.
- **Fix**: GroupManager avoids duplicate entities and removes them upon deletion.