- MSRV to 1.70.0 (#765)
- Significant refactor of
Join
and related traits to alleviate soundness issues. Includes introduction of a lending/streaming join via theLendJoin
trait which is the new common denominator implemented by joinable types. (#765)
- Bump MSRV to 1.65.0 (#766)
- Added index where entity deletion stopped to the error returned from
WorldExt::delete_entities
(#766) - Fix bug where deleting an entity with the wrong generation could clear the components of an existing entity. (#766)
- Bump shred to version
0.14.1
, MSRV to 1.60.0 (shred changelog, #756)
- Increase minumum rustc version to 1.56.1 because of shred and hashbrown dependencies (#748)
Full changelog: https://github.com/amethyst/specs/compare/v0.17.0...v0.18.0
- Deprecate
error::NoError
in favor ofstd::convert::Infallible
(#688) - Use
#[non_exhaustive]
forerror::Error
. Note this bumps the minimum supported rust version to 1.40 (#688). - Add the
derive
feature that enables all derive-related smaller features (specs-derive
andshred-derive
currently). (#687)
JoinIter
now implementsClone
when inner types areClone
-- usually for immutablejoin()
s. (#620)- Bump
hibitset
to0.6.3
. (#620) StorageEntry::replace
replaces a component, returning the previous value if any. (#622)
- Update
syn
,quote
andproc-macro2
to1.0
. (#648) - Implement
ParJoin
forMaybeJoin
if the inner type isParJoin
. (#655) - Remove
"nightly"
feature -- improved panic messages are available on stable. (#671) - Bump
shred
to0.10.2
. (#671, #674, #683) - Components and resources no longer need to be
Send + Sync
if parallel feature is disabled (#673, #674) - Bump
uuid
to0.8.1
. (#683) - Bump
rayon
to1.3.0
. (#683)
- Benchmark uses
nalgebra
instead ofcgmath
. (#619) - Bumped
shrev
from1.0
to1.1
. (#619). - Update hashbrown to 0.6.0, criterion to 0.3 (#627, #632)
- Remove
mopa
in favour ofstd::any::Any
(#631)
- Removed
common
andRudyStorage
(#542) - Moved
World
toshred
, addedWorldExt
trait for Specs functionality (#550) - Add
UuidMarker
for UUID <->Entity
mappings (#584) - Implement
Join
onBitSetLike
trait object (#599) - Expose inner field of
AntiStorage
(#603) - Remove
fnv
in favour ofhashbrown
(#606) - Reexport
hibitset
,rayon
,shred
andshrev
(#606) - Reexport
shred_derive::SystemData
whenshred-derive
feature is enabled (#606) - Reexport
specs_derive::{Component, ConvertSaveload}
whenspecs-derive
feature 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::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)