embedded-scripting-languages
steel
embedded-scripting-languages | steel | |
---|---|---|
11 | 9 | |
1,218 | 856 | |
- | - | |
8.1 | 9.0 | |
about 2 months ago | 5 days ago | |
Rust | ||
- | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
embedded-scripting-languages
-
Steel – An embedded scheme interpreter in Rust
Hopefully the linked README provides a general overview (I know I need to write some more documentation!), but Steel is an implementation of the scheme programming language (not entirely compliant yet, but aiming for R5RS and R7RS compliance). It can be used as a standalone language via the interpreter/repl (like Python or Racket), or it can be embedded inside applications, like Lua. There are hundreds (thousands, probably) of embeddable languages, each with their own flavor - see a list compiled here for example https://github.com/dbohdan/embedded-scripting-languages
Use cases are generally for either configuration, scripting, or plugins - so scripting in games, or adding extensions to your text editor without having to use FFI or RPC + serializing a bunch of data. The advantage it has over using dynamic libraries (in general) is it runs in the same process, and can access the internal data structures directly without a lot of ceremony involved. The downside is typically is not as fast as native code unless a JIT is involved.
Javascript is an example of an embedded scripting, where the browser is the host application.
-
Lua: The Little Language That Could
> There is a huge opportunity, IMO, for more players here.
There are quite a few embeddable scripting languages [1]. I think these days it's less common to embed a language mostly because there are good high-level languages that applications can be predominantly written in.
[1] https://github.com/dbohdan/embedded-scripting-languages
- Ask HN: Embeddable Value-Oriented Languages?
- Embedded Scripting Languages
-
Simple statically typed language with value semantics?
I'm not a huge fan of Lua but I think it is at least way more popular and better on every measure than TCL. There are plenty of other better less well-known options too: Rhai, Wren, AngelScript, Starlark (for some use cases), etc. There's a good list here.
- Language Interpreter for Coding Game
-
Choosing scripting extension - need advice
or perhaps use one of this list (depending on who's writing the configuration): https://github.com/dbohdan/embedded-scripting-languages
- Ana is a Python, PHP, and C inspired dynamically typed scripting language
-
How to implement an in-game programming language?
https://github.com/dbohdan/embedded-scripting-languages (coincidentally, from a user whose name I recognize from the Tcl wiki)
- Do you have problem to visit LambdaChip website?
steel
-
Helix: Release 24.03 Highlights
I absolutely don't mind the plugin system being a Scheme. It's a plugin for a text editor, and Steel(https://github.com/mattwparas/steel) seems to be a lot less of a maintenance burden than WASM plugins(besides that I find the WASM tooling to be extremely complex).
But besides all that, Helix learned be that I don't need fancy plugins or endless finicking with config files and toolchains. Using a combination of other tools, like yazi and lazygit, helps me not only inside my editor but outside of it as well. And Kakoune does this even better. In that regard it has been a real eye-opener and refreshing. The downside is, it's hard to go back to other editors!
- Steel – An embeddable and extensible Scheme dialect
-
Steel – An embedded scheme interpreter in Rust
Basically the differences are in the concepts you'll use to write code. Lisps themselves are very different from each other, but just like the languages you're used to, lisps have standard libraries that can be called, and those building blocks can be used to build applications or whatever else. In this case specifically, Steel provides the facility to call Rust functions within a Steel program: https://github.com/mattwparas/steel.
So, although I haven't used Steel, it looks like the advantage you'd get from using it is the opportunity to take advantage of features it provides like transducers and contracts, which are feature common to other Lisps as well.
So, just like choosing any other language, it boils down to a series of tradeoffs.
-
What’s everyone working on this week (19/2023)?
I've been adding my language steel as the plugin language for helix. There is a lot of discussion around what the plugin system will look like for helix and I figured I'd give it a shot since steel was designed originally for embedding. So far its working pretty well, it turns helix into emacs (without the nearly 50 years of development, so not quite as good). I'm reasonably confident the changes won't be accepted upstream (my language is a scheme but I am the only developer at the moment), but even if not it is a really fun experiment. Hoping that it can be used as a basis for whatever plugin system they eventually land on. An example of what configuration would look like:
-
What’s everyone working on this week (7/2023)?
Working on automatic doc generation for steel. I've been procrastinating building this out for a while - some of the easy cases are really easy, while the hard cases are definitely not easy.
-
What's everyone working on this week (6/2023)?
I'm working on steel, an embedded scheme like programming language. I have lofty goals of eventually adding a JIT and making it viable as a standalone language, but for now its just about as fast as python, and makes for fairly pleasant embedded scripting. Recently added modules and dylibs, and am working on getting documentation into a better place so that adding more libraries becomes easier. I've written a functioning slack bot in it, which is pretty fun, eventually want to make a discord bot as well out of it just to stress test it a bit
- Guile Steel: a proposal for a systems Lisp
What are some alternatives?
Ark - ArkScript is a small, fast, functional and scripting language for C++ projects
freya - Native GUI library for 🦀 Rust powered by 🧬 Dioxus and 🎨 Skia.
grule-rule-engine - Rule engine implementation in Golang
astro-float - Arbitrary precision floating point numbers library
wasmer-go - 🐹🕸️ WebAssembly runtime for Go
schemetran
starlight - a go wrapper for google's starlark embedded python language
rust-s3-async-ffi - Asynchronous streaming of AWS S3 objects in C and C++ powered by rust-s3
Rhai - Rhai - An embedded scripting language for Rust.
mdbook-pdf-headless_chrome - A forked version from headless_chrome used by mdbook-pdf for the latest version and expanding some response timeout to 300 seconds.
wazero - wazero: the zero dependency WebAssembly runtime for Go developers
tesseract-wasm - JS/WebAssembly build of the Tesseract OCR engine for use in browsers and Node