this post was submitted on 12 Nov 2024
36 points (97.4% liked)

Rust

5989 readers
49 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

[email protected]

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 1 year ago
MODERATORS
 

I want to allow the users of my project be able to write the driving logic, while I provide the tools. What are some embedded scripting languages in Rust that can be sandboxed and are easy for absolute beginners?

edit: Thanks for all of your answers, I decided to go with lua using mlua

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 12 points 3 days ago (2 children)

Many languages can be compiled to wasm, and it's quite easy to load and run wasm from rust

That way you could give the user multiple options, they could write it in rust, c, c++, javascript, etc

[–] [email protected] 5 points 2 days ago

Although the OP has already decided to go with Lua, if anyone else looking at this thread is considering their options for making a plugin system, WASM/WASI is an excellent choice - mostly because it allows users to use Python (a favorite among programming newbies) along with any other language that compiles to WebAssembly (which will eventually be all languages).

You can even use something like Extism which is purpose-built as a drop-in library for creating a plugin system with WASM plugins, or you can use other runtime options like Wasmtime (built in Rust, from the ByteCode Alliance - where the WASI spec is being developed) or the WasmEdge runtime (built in C++, which is a CNCF project and is already being used in areas like eBPF to help users build Linux Kernel extensions).

In short, if you're building a project that has to be maintained long-term and you need a plugin system, then choose WebAssembly - you can't go wrong.

Cheers!

[–] [email protected] 4 points 3 days ago (1 children)

WASM is a bit overkill and is also complicated. I need a simple scripting language that won't stress the users out. As mentioned in my post, I expect them to be absolute beginners.

[–] [email protected] 8 points 3 days ago (1 children)

I didn't mean that the users would write wasm, just that they could write it in some language, then your program would compile it to wasm and run it

Gives some flexibility as to the choice of language and it runs sandboxed

[–] [email protected] 4 points 3 days ago* (last edited 3 days ago)

yeah no no, who writes wasm by hand?

it's just that this interoperability with all languages is a bit overkill. I also don't know how I would expose a rust struct that has methods in wasm