* segmented unit tests: for when your unit tests want to depend on other code you've written to avoid writing grotty constructors and constructor-like code. You insert boundaries, and the unit test system tells you which side changed (thus, who to blame). Try a few variations on this. * hey, if we're letting our tooling look into the version history, something with the backwards-compatibility properties of protocol buffers should be automatically derivable from type definitions. Okay, this probably takes way too much guessing for something whose semantics can be permanently affected by past commits. * macro-powered protobuf-style serialization. (On the theory that any field could always be absent, and unknown fields can always be present.) When you deserialize, the type is peppered with `Option` everywhere. At type definition time, you can specify default values that prevent `Option` introduction. * a tool for quickly expanding templates over cross-products of lists of syntax, for avoiding small-scale repetition. * a tool to automatically turn on logging and `diff` log messages from the failing tests in current version of the repo against the last good run. * macro-powered mocks. Need to mock something with a concrete type? No problem, recompile everything with a different type. (https://klausi.github.io/rustnish/2019/03/31/mocking-in-rust-with-conditional-compilation.html) * a simple syntax for trait-directed `.` resolution: `something.Trait::member()` (https://twitter.com/myrrlyn/status/1133799922082492416) * package-manager level CI: can we enforce an "at least it compiles" subset of semvar by looking at the types of interfaces and verifying compilation before publishing a version? - example systems I've heard good things about: ggplot, R