Goals
The goals of smelt are to provide:
- Expressive test generation
- Easy failure reproduction
- Simplicity -- users should be able to run a testlist interactively without knowledge of smelt internals
- Modular runtimes -- running locally vs on a slurm should feel the same
- Expose coarse grained parallelism
Non-goals
- Being a build system
- Sacrificing simplicity for performance
Roadmap
Smelt is still a new tool -- we're actively adding features. Priority for feature work is as follows:
- Slurm executor -- execute commands on slurm the same way you would locally
- Passing arguments to procedural test lists -- this would allow end users to pass "seeds" or other such input to testlists, and would help with the ergonomics of random test generation
- Command Replay from Invocation object -- invocation messages should contain all of the information to replay a command
- Restructure command interface -- currently we have this as two mirrored structures in Python and rust, it would be best to move this to protobuf
- Support for async test running -- workflows can be very timeconsuming, especially in EDA
- REAPI Remote Caching of tests -- Add optional fingerprinting and remote caching for commands that declare inputs and outputs
- Starlark rules -- Add a starlark interface to generate commands