Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Dyon – A Rusty dynamically typed scripting language (github.com/pistondevelopers)
94 points by k__ on Dec 22, 2020 | hide | past | favorite | 12 comments


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.

https://github.com/koto-lang/koto


For web backends Deno kindah fits the bill here


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.


For anyone else curious, I believe Deno is a reference to https://github.com/denoland/deno please correct me though if that’s wrong


I’ve also recently come across Rune, which seems similar?

https://github.com/rune-rs/rune


Rune seems to use RC instead of lifetimes.


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.


Also check out conrod[0] which is from the same group. One of the really awesome GUI projects in rust that sticks out in my mind.

[0]: https://github.com/PistonDevelopers/conrod


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.


Looks good :) The syntax is very impressive




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: