- Add
Join
-able entries API toStorage
(#518) - Several docs / meta improvements (#526, #527, #528, #530, #531)
- Fix bug when re-killing Entity after atomic killing followed by alloc (#533)
- Add
Storage::count
andStorage::is_empty
(#534)
- Allow accessing the
EntitiesRes
fetched by aStorage
(#515) - Book / API doc improvements (#496, #507, #511)
- Changed
ConvertSaveload::convert_into
andConvertSaveload::convert_from
(#504)
This release can be skipped; please use 0.14
instead.
- Generation now internally uses the new
NonZeroI32
fromnonzero_signed
, meaningOption<Entity>
is the same size asEntity
. Note this bumps the minimum supported rust version to 1.28.0 (#447). - Improved
saveload
and added custom derive for components withEntity
(#460) - Removed
world::Bundle
(#486, #505) - Updated Chapter 7: Setup to be more explicit, updated examples to follow that methodology (#487)
- Added some comments to the
saveload
example (#492) - Updated dependency versions (#494)
- FlaggedStorage rewrite with single event channel instead of multiple for ordering. (#489)
- Make it possible to run on wasm (#495)
- Add
MaybeJoin
to iterate over components without filtering the joint set (#455) - Implement
Join
onFetch
/Read
/Write
/etc. to eliminate unnecessary dereference (#472)
- Fix
Allocator::kill
in the case of atomically created entities. (#454)
- Add
#[must_use]
to entity builders to avoid people forgetting to call.build()
. (#443)
Join::open()
andStorage::unprotected_storage_mut()
have been marked unsafe. Thanks to @andrewhickman for discovering this unsoundness!- Add common
Builder
trait toEntityBuilder
andLazyBuilder
(#426) - Add common
MarkedBuilder
trait toEntityBuilder
andLazyBuilder
(#426) - Add
LazyUpdate::exec_mut
which allows adding a resource from a system (#433) - Add
build_entity()
toEntitiesRes
so you can use builder syntax in a system. - Add
marked()
to LazyBuilder to keep parity with EntityBuilder (#420) - Fix
U64MarkerAllocator
's internal index not being updated onsaveload::DeserializeComponents
(#420)
- Add
unprotected_storage()
andunprotected_storage_mut()
methods toStorage
(#419)
- Add diagrams to book, small code fixes in the book (#412, #416, #417)
- Increase tuple size for
SerializeComponents
/DeserializeComponents
(#415)
- Improve docs, book and examples (#278, #281, #283, #285, #296, #313, #316, #322, #350, #356, #363)
- Add
StorageEntry
for easier handling of inserting/removing component (#274) - Add
EntityBuilder::marked
convenience method (#287) - Add
saveload
module for easy entity serialization (#275, #337) - Add
nightly
feature flag for unstable features. (#290) - Add
TrackedStorage
, a more ergonomic variant toFlaggedStorage
(#291) - Exclusive/mutable aliasing for getting an
EntityBuilder
to prevent unsafety. (#294) - Add
Bundle
for registering multiple resources and components at once. (#296) - Add
get()
method toJoin
for retrieving a single entities component in bulk. (#299) - Implementations of
Join
for ownedBitSet
s, includingAtomicBitset
. (#303) - Remove
FlaggedStorage
(new storage uses the same name) andTrackedStorage
in favor of the newTracked
api. (#305) - Add
prelude
module for commonly used structures and traits. (#305) - Add
LazyBuilder
for easier entity construction in systems. (#320) - Replace
Entry
withPairedStorage
to prevent runtime checks forRestrictedStorage
. (#324) - Deprecate
check()
which hides a possibly expensive clone. (#326) - Add
ChangeSet
for easy application to components. (#344) - Use criterion.rs for benchmarks (#348)
- Update to rayon 1.0 (#352)
- Add
World::system_data
method (#369) - BREAKING: Change the way resources are handled (see below) (shred#77)
- Export all items currently in prelude in the root of the crate (#394)
- If an EntityBuilder drops before being built the entity will now be deleted on maintain (#394)
- Removed some redundancy in documentation (#394)
There is one bigger breaking change in this release. Almost allFetch
/ FetchMut
types need to be replaced
with Read
/ Write
. Both require the resource to implement Default
, because now the resources can be
added to the world automatically. If you want to make the resource optional and you don't have a sensible
default, Option<Read>
/ Option<Write>
can be used. If you absolutely need the resource and it doesn't
work without, use ReadExpect
which will panic in case the resource does not exist (that's the same
behavior as before).
- Separate
CheckStorage
into two variants and fix soundness issues (#203) - Fix
Merge
system and add test for it (#243, #248) - Add more examples, docs, tests, benchmarks (#249, #251, #254, #256, #258)
- Use
Result
s to make Specs more robust (#260) - Check code coverage with cargo-travis (#265)
- Make
common::Errors
atomic and more convenient (#255, #262) - Add
World::delete_all
to clear the world (#257) - Fix insertion into occupied
NullStorage
entry ([#269]) - Add
Storage::drain
method (#273)