Our great sponsors
-
hal9ai
Discontinued Hal9 — Data apps powered by code and LLMs [Moved to: https://github.com/hal9ai/hal9]
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
We are not using libfortran not gdpr, we are basically using whatever libraries are available for the web. Since most data scientists don't want to use JS per se, you can build the apps as blocks in the Hal9 site or using a soon-to-be-released Python/R package, see https://notebooks.hal9.com
Feel free to check out our repo as well, all the "primitives" / blocks code is in the scripts folder: https://github.com/hal9ai/hal9ai
Other languages have done that :)
Lua in the browser: https://fengari.io/
And then you can use that to run Fennel, a Lisp that compiles to Lua https://fennel-lang.org/
I think TypeScript also has a script you can include that lets you put your TS code in a special script tag, and it gets compiled in-browser.
Other languages have done that :)
Lua in the browser: https://fengari.io/
And then you can use that to run Fennel, a Lisp that compiles to Lua https://fennel-lang.org/
I think TypeScript also has a script you can include that lets you put your TS code in a special script tag, and it gets compiled in-browser.
Also check out "rapydscript-ng", by the author of Calibre e-book reader:
https://github.com/kovidgoyal/rapydscript-ng
There are some important differences in approach. Java was never designed to be downloaded over a network, and didn't have a module format or JARs back then. This is part of what made it so slow. In contrast, efforts to make the encoding of modules as compact as possible started the moment WASM began. [1] It was based on past research in compactly encoding IRs, and the modules are often processed in parallel.
The IR is also a lot less opinionated than other VMs. It started out being similar to a stripped-down JavaScript in capability, but broadened. At the same time it remained easy for browser engines to process into native code. Compared to optimizing applets, it has a simpler task to solve. This does have the disadvantage that modules need to come with their own runtimes. Compilers for established languages have to deal with the fact that their host languages expect to be running on a fully-featured OS instead of a browser.
Even though it is a binary blob downloaded over the web, browsers come with disassemblers that allow you to see what is actually running. This is a step up over the JVM, but this is one part of WASM I find underwhelming. The messy development of the VM affected the text format the most, so it's more confusing than it really needs to be. Some docs expect you to write it like a Lisp, while disassemblers don't bother with that.
WASM has quite a few problems, but they're at least different problems than the ones applets had.
1. https://github.com/WebAssembly/design/blob/a19e4ccf9c250cc73...
You can, if that that specific DOM element is a Gradio component (e.g. a button, image, textbox, etc). Here's a very simple example: https://github.com/gradio-app/gradio/blob/main/demo/blocks_h...
Does PyScript offer anything of significance over and above what Pyodide already offers, other than several py-* tags?
In my experience, it's trivial accomplish this with Pyodide.
Here's a web worker that hosts Pyodide and loads packages, PyPI wheels, external modules, etc. and launches type=text/python script tags in-browser:
https://github.com/h2oai/nitro/blob/main/web/public/nitride....
About ~100 lines of code.
https://github.com/fork-tongue/collagraph/pull/66
From the project README:
Write your Python interfaces in a declarative manner with plain render functions, component classes or even single-file components using Vue-like syntax, but with Python!
- Reactivity (made possible by leveraging observ)
- Function components
- Class components with local state and life-cycle methods/hooks
-Single-file components with Vue-like syntax (.cgx files)
- Custom renderers (PySide, pygfx and now PyScript)