irh
If it helps here's a git blame helper script I made for Helix (as an example of practical code without any effort put in to making it readable for others): https://github.com/irh/dotfiles/blob/main/scripts/.scripts/g...
Before 1.0 I'd want to address at least:
- the FFI / package management topics mentioned above
- async support: https://github.com/koto-lang/koto/issues/277
- extend the parser to support an autoformatter: https://github.com/koto-lang/koto/issues/286
...and then have a larger number of people using it in projects without major issues coming up for a good while, e.g. a year+.
I'd start by trying UniFFI [1] which looks much simpler than the approach of manually writing a C API and using that as a foundation for higher-level language bindings.
This would also likely be the starting point for a package management system (if there ends up being demand for one). Rust doesn't have a stable ABI so to make sure that dynamically loaded Rust packages are compatible, either Koto would need to be in the business of Rust toolchain management so that packages can be recompiled when needed, or an API layer would be needed. There are some projects that provide ABI-compatibility shims but I don't like the idea of having two separate approaches to FFI, so I'd want to try to build on the foreign-FFI layer once it's in place.
I'm half hoping that by the time I'm interested in working on this Rust will have decided to pursue ABI stability. And there's also something in the back of my mind that's yelling 'Wasm!' at me but I would need someone wiser to convince me that it would be the right direction.
My thinking is that the potential footgun here is outweighed by the win of paren-free calls for quick scripting / rapid iteration, but it certainly counts towards the language strangeness budget [1] so I figured it was worth pointing out in the guide.
[1] https://steveklabnik.com/writing/the-language-strangeness-bu...
e.g. https://github.com/irh/dotfiles/blob/main/scripts/.scripts/t...
The hints aren't used for other purposes at compile time yet, but they could enable some warnings.
I know it's tangential to the point that you're making, but JUCE was acquired by PACE in 2020.
I'm less conflicted about having music tools in the browser. Yes, it's less efficient, and there's more risk of dropouts, and there's less control over I/O, and there's generally less you can _do_... But what's emerging is widespread access to increasingly sophisticated music making tools, and I don't see a reason to want to slow that down?
https://github.com/rust-lang/cargo/pull/9298
https://doc.rust-lang.org/nightly/cargo/reference/profiles.h...