Is Amethyst stable at this time?


Is Amethyst stable at this time?

Arsenal: The Vision for a Full Amethyst Blender Integration
(Azriel Hoh) #2

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 winit. Stable.
  • 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

(Thomas Schaller) #3

Regarding those, I can say that shrev is very stable. shred and specs are still undergoing some changes, but the breakage should be rather small. There is a tracking issue for 1.0 here.

1 Like
(Thomas Schaller) #4

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.