This is awesome and something I've felt could be a (another) killer app for Rust.
If Rust interfaced well with a convenient scripting language that runs fast and safely, the language would morph into a platform where you could quickly prototype in the high level language and then convert well-defined structures to hardened Rust.
It'd be fantastic for games (no wonder the Piston folks are exploring this), web backends, and native apps.
If this reaches the ease of use of Python, I'll never look back.
I've been working on Koto which is intended for this kind of use case. I've been thinking about extending Rust applications with scripting, and I have games in mind but more generally I'm interested in rapid iteration in creative applications. It's still very early so I haven't shared it more widely but I'd be curious to hear what you think.
Typescript type system is not that great to use. I've spent way too much time writing definitions for dependencies in JS or chasing bugs that the compiler should've caught (just because someone, in some layer used an any).
It's also quite slow to parse, making for a not great developer experience. One of Deno's priorities was in fact to rewrite the TS parser to speed it up.
Dyon looks nice and it's definitely a more rusty alternative.
I found Dyon last year by searching for a scripting language with lifetimes. After looking into Rust, I got the impression lifetimes were a part of the type-system that didn't static typing per se.
You need to keep track where your variables point to and how long they do it, but what they point at isn't that important, at least in scripting.
Dyon seems to be a scripting language with many features for games, so it probably seems a bit overloaded for people who use stuff like Lua.
It looks nice, but I don't get how "link" is supposed to work, it seems like some kind of strange tuple type. Does anyone have any example of how it can be used, except the few bits they linked from the readme?
An array will carry type information for each element.
Link looks like an optimized array which only allows three types so it can more efficiently pack the type (and presence) information for a block of items into a a couple of words. Plus it doesn’t hold references so managing its lifetime is simple, and you get cheap concatenation by chaining blocks.
I’d guess it’s good for lookup tables or large indexes.
If Rust interfaced well with a convenient scripting language that runs fast and safely, the language would morph into a platform where you could quickly prototype in the high level language and then convert well-defined structures to hardened Rust.
It'd be fantastic for games (no wonder the Piston folks are exploring this), web backends, and native apps.
If this reaches the ease of use of Python, I'll never look back.