Is Amethyst stable at this time?
The stability of Amethyst is different depending on which part of Amethyst you’re looking at. The underlying libraries are quite stable, and have a relatively stable API:
- shred: System dispatcher – graph of functions, edges indicate function order dependency.
specs: Entity-Component-System (ECS) library built on top of
shred, provides entity and component functionality.
- shrev: Event channel – queue with multi-producer multi-consumer.
Amethyst provides functionality on top of those, which are:
- State management: Main menu, game play, etcetera. Stable.
Window management: Backs onto
Math support: Components for math types. Backs onto
nalgebra, relatively stable (may change during renderer evolution).
Rendering: Backs onto
rendy, which backs onto
gfx-hal. It’s new, so may not be very stable for a while.
Audio: Backs onto
rodio. Seemingly stable, but I don’t think this has been used very much, so has potential to undergo evolution when people want more.
- Test Support: Semi-stable, but it doesn’t have a good dependency structure (framework crates can’t depend on it). API can change if/when we fix that structure.
Assets: There’s a working system, but likely to be replaced by
atelier-assets, so can expect breakage in the future.
That’s all my tired self can think of right now
Regarding those, I can say that
shrev is very stable.
specs are still undergoing some changes, but the breakage should be rather small. There is a tracking issue for 1.0 here.
Overall, I wouldn’t call Amethyst stable yet. There are a couple of places where ergonomics need to be improved, or rewrites take / have taken place (rendering, asset management), thus will definitely undergo further API changes.
We most likely won’t be able to improve the stability with 0.12 (although it will have a lot less breakage than 0.11), but I’m planning to focus on future-proofing the API after the 0.12 release.
@azriel91 made a good summary where breakage is to be expected; I’d really say that asset loading & rendering are the APIs which still need the most work before reaching some stability.