> So what is out there for me, if not C++ or Rust?
Ada.
I write C++ professionally and used Rust for about a year, but don't use it anymore. In many ways, Ada feels like a much simpler implementation of the C++ feature set. The language lets you focus on intent, while still having a lot of control.
Yes, Ada's still alive and kicking, it has a package manager, documentation generator, parsing/semantic analysis library, and a language server. There's been a *massive* modernization push over the last year of the ecosystem. If you download Alire, you can install the FSF GNAT toolchain and get set up super easily. Some of the older parts of the GNAT tools are showing there age, but they're already there and the ecosystem is significantly better than you'd expect.
Regarding multi-platform support, I routinely swap between Linux and Windows testing things out.
> A lack of default arguments, a lack of basic arity overloading, a lack of variadic generics,
Ada features are opt-in, and you use what you want. It has default arguments, arity overloading, and destructors when needed (with Controlled types). Interfacing with C is super easy, as is bringing in compiler intrinsics. Generics (compile-time templates) are a little weird because you can instantiate an entire package (namespace) with types/functions. They can also take other packages as parameters or you can just write a singular generic function. However, it's missing compile-time ops, variadic generics, and move semantics.
- https://learn.adacore.com/
- https://alire.ada.dev/
- https://pyjarrett.github.io/programming-with-ada/comparison....
- https://www.adaic.org/advantages/ada-202x/