17 comments

[ 3.4 ms ] story [ 47.3 ms ] thread
Got a blog post about building this?
It's not a blog post but the GitHub Actions workflow that deploys that site has some clues https://github.com/nbittich/adana/blob/42d167b1d04ad2e2f4045...
Ah. I was curious about the Rust-style function returns (just having the name of the variable on the last line without a "return" statement or keyword), but knowing that the language is written in Rust answers my question of why that design decision was made ;)
I may try writing something about my experience building this project, I'm terrible at writing but it was so much fun, I think it is worth the effort :)
Tasty name! Great work :) I'm sure that was a lot of fun to build
[flagged]
I think there is a role for a scripting language in the browser akin to scripting in a spreadsheet. Sadly I don't see an accepted standard. Key would be what it can't do (access the document model, access the internet etc), not so much what it can.
I agree, but I imagine there either is or will be a js-in-wasm project that can suitably truncate the environment. Not that js is actually not good at this sort of application (triple equals get old fast), but people already know it.

And of course there's lua.

It may just be my own unique obsession to peek at the internals of .wasm, but if anyone else is curious:

https://modsurfer.dylibso.com/module?hash=ab6f4b2de9db171347...

u/nbittich - curious if you've tried to use your language as as a scripting language inside other apps? I took a peek at your browser wasm environment, and think we could hook up the `compute` entrypoint you have here[0], but I'm not certain what the `ctx` does without going super deep, and if it could be passed into an Extism function[1] (which is how I'd try to run it from within 16+ other languages).

[0]: https://github.com/nbittich/adana/blob/master/adana-script-w...

[1]: https://github.com/extism/extism

Thank you for having a look at it! I didn't know extism, will definitely have a look at the readme right after I finish to write this comment.

The ctx variable is a piece of memory, kind of the heap where functions and variables are stored during the script execution; I did it that way because I wanted to keep whatever is in that memory after each script execution, so in a prior version you could define a variable x, run the script, then re-run a completely different script, but still have access to the x variable. I removed it at the end because I wasn't sure if it was a good idea, or at the very least should be documented, but I kept the ctx thing there (could easily remove it tho)

ah that makes sense! so `compute` can still execute a script with an empty memory (just to test things out)?

feel free to join us on Discord if you’d like: https://extism.org/discord — happy to chat about it there. I think your language embedded in a bunch of apps as a scripting lang (beyond Rust) would be really cool to see.

sorry for the late answer, I've modified the method so that you no longer need to provide the context (see newer version of app.js).

It will be a pleasure to discuss it on discord, I'll already join the server and will contact you in a few days hopefully.

(comment deleted)