- Deprecate
error::NoErrorin favor ofstd::convert::Infallible(#688) - Use
#[non_exhaustive]forerror::Error. Note this bumps the minimum supported rust version to 1.40 (#688). - Add the
derivefeature that enables all derive-related smaller features (specs-deriveandshred-derivecurrently). (#687)
JoinIternow implementsClonewhen inner types areClone-- usually for immutablejoin()s. (#620)- Bump
hibitsetto0.6.3. (#620) StorageEntry::replacereplaces a component, returning the previous value if any. (#622)
- Update
syn,quoteandproc-macro2to1.0. (#648) - Implement
ParJoinforMaybeJoinif the inner type isParJoin. (#655) - Remove
"nightly"feature -- improved panic messages are available on stable. (#671) - Bump
shredto0.10.2. (#671, #674, #683) - Components and resources no longer need to be
Send + Syncif parallel feature is disabled (#673, #674) - Bump
uuidto0.8.1. (#683) - Bump
rayonto1.3.0. (#683)
- Benchmark uses
nalgebrainstead ofcgmath. (#619) - Bumped
shrevfrom1.0to1.1. (#619). - Update hashbrown to 0.6.0, criterion to 0.3 (#627, #632)
- Remove
mopain favour ofstd::any::Any(#631)
- Removed
commonandRudyStorage(#542) - Moved
Worldtoshred, addedWorldExttrait for Specs functionality (#550) - Add
UuidMarkerfor UUID <->Entitymappings (#584) - Implement
JoinonBitSetLiketrait object (#599) - Expose inner field of
AntiStorage(#603) - Remove
fnvin favour ofhashbrown(#606) - Reexport
hibitset,rayon,shredandshrev(#606) - Reexport
shred_derive::SystemDatawhenshred-derivefeature is enabled (#606) - Reexport
specs_derive::{Component, ConvertSaveload}whenspecs-derivefeature is enabled (#606)
- 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::countandStorage::is_empty(#534)
- Allow accessing the
EntitiesResfetched by aStorage(#515) - Book / API doc improvements (#496, #507, #511)
- Changed
ConvertSaveload::convert_intoandConvertSaveload::convert_from(#504)
This release can be skipped; please use 0.14 instead.
- Generation now internally uses the new
NonZeroI32fromnonzero_signed, meaningOption<Entity>is the same size asEntity. Note this bumps the minimum supported rust version to 1.28.0 (#447). - Improved
saveloadand 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
saveloadexample (#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
MaybeJointo iterate over components without filtering the joint set (#455) - Implement
JoinonFetch/Read/Write/etc. to eliminate unnecessary dereference (#472)
- Fix
Allocator::killin 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
Buildertrait toEntityBuilderandLazyBuilder(#426) - Add common
MarkedBuildertrait toEntityBuilderandLazyBuilder(#426) - Add
LazyUpdate::exec_mutwhich allows adding a resource from a system (#433) - Add
build_entity()toEntitiesResso 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
StorageEntryfor easier handling of inserting/removing component (#274) - Add
EntityBuilder::markedconvenience method (#287) - Add
saveloadmodule for easy entity serialization (#275, #337) - Add
nightlyfeature flag for unstable features. (#290) - Add
TrackedStorage, a more ergonomic variant toFlaggedStorage(#291) - Exclusive/mutable aliasing for getting an
EntityBuilderto prevent unsafety. (#294) - Add
Bundlefor registering multiple resources and components at once. (#296) - Add
get()method toJoinfor retrieving a single entities component in bulk. (#299) - Implementations of
Joinfor ownedBitSets, includingAtomicBitset. (#303) - Remove
FlaggedStorage(new storage uses the same name) andTrackedStoragein favor of the newTrackedapi. (#305) - Add
preludemodule for commonly used structures and traits. (#305) - Add
LazyBuilderfor easier entity construction in systems. (#320) - Replace
EntrywithPairedStorageto prevent runtime checks forRestrictedStorage. (#324) - Deprecate
check()which hides a possibly expensive clone. (#326) - Add
ChangeSetfor easy application to components. (#344) - Use criterion.rs for benchmarks (#348)
- Update to rayon 1.0 (#352)
- Add
World::system_datamethod (#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
CheckStorageinto two variants and fix soundness issues (#203) - Fix
Mergesystem and add test for it (#243, #248) - Add more examples, docs, tests, benchmarks (#249, #251, #254, #256, #258)
- Use
Results to make Specs more robust (#260) - Check code coverage with cargo-travis (#265)
- Make
common::Errorsatomic and more convenient (#255, #262) - Add
World::delete_allto clear the world (#257) - Fix insertion into occupied
NullStorageentry ([#269]) - Add
Storage::drainmethod (#273)