5 ms·
Show HN: Now my pet programming language can run in the browser
- x-cmd 3y ago[flagged]
- mcdonje 3y agoGot a blog post about building this?
- simonw 3y agoIt's not a blog post but the GitHub Actions workflow that deploys that site has some clues https://github.com/nbittich/adana/blob/42d167b1d04ad2e2f4045ed52259a142fa13f22c/.github/workflows/gh-page.yml#L27 https://github.com/nbittich/adana/blob/42d167b1d04ad2e2f4045...
- ZoomerCretin 3y agoAh. 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 ;)
- nbittich 3y agoI 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 :)
- Instantnoodl 3y agoTasty name! Great work :) I'm sure that was a lot of fun to build
- nbittich 3y agoThank you :)
- beardyw 3y agoI 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.
- javajosh 3y agoI 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.
- zamadatix 3y agoFigma has actually gone along this line of thinking for plugins since ~2019 https://www.figma.com/blog/an-update-on-plugin-security/ https://www.figma.com/blog/an-update-on-plugin-security/ albeit their choice was from securing the existing plugin model rather than providing a minimal new scripting system.
- nilslice 3y agoIt 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=ab6f4b2de9db1713475af9cf04dbaccbe9be86bb1b214f9e64f5a1bb50b103d6 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-wasm/src/lib.rs#L11-L27 https://github.com/nbittich/adana/blob/master/adana-script-w... [1]: https://github.com/extism/extism https://github.com/extism/extism
- nbittich 3y agoThank 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)
- nilslice 3y agoah 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 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.
- nbittich 3y agosorry 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.
- deleted 3y ago[deleted]
- notso411 3y ago[dead]
- Donaldobob 3y ago[flagged]