[HN Gopher] PyScript: An open source platform for Python in the ...
       ___________________________________________________________________
        
       PyScript: An open source platform for Python in the browser
        
       Author : xiaodai
       Score  : 218 points
       Date   : 2024-08-16 07:01 UTC (15 hours ago)
        
 (HTM) web link (pyscript.net)
 (TXT) w3m dump (pyscript.net)
        
       | Loeffelmann wrote:
       | How is this different from pyodide[0]?
       | 
       | [0]: https://pyodide.org/en/stable/
        
         | santiagobasulto wrote:
         | This _uses_ pyodide. It 's more like a Python to JS transpiler
         | (even if it's not). It's to create browser apps using Python.
         | So it's Pyodide + a browser API.
        
           | azakai wrote:
           | They also support MicroPython as an option now and not just
           | Pyodide,
           | 
           | https://pyscript.net/tech-preview/micropython/about.html
           | 
           | In fact the main PyScript site uses MicroPython now, I see in
           | the dev console (micropython.mjs and micropython.wasm).
        
         | qsort wrote:
         | Pyodide is a port of CPython to the WebAssembly platform.
         | PyScript is a framework that uses Pyodide to provide a
         | framework for developing Python applications in the browser.
         | Its elevator pitch would be "python inside script tags via
         | pyodide".
        
         | v3ss0n wrote:
         | Its a wrapper.
        
         | bouncing wrote:
         | Pyodide is a runtime.
         | 
         | PyScript can use Pyodide _or_ MicroPython. MicroPython is
         | actually quite small.
         | 
         | On top of the runtime, PyScript gives you some pleasantries and
         | a lot of quality-of-life improvements for actually using Python
         | for web programming, not just being able to run Python code.
        
       | mg wrote:
       | The homepage left me confused, and also after reading the
       | documentation, I'm not sure what this is.
       | 
       | I tinkered a bit to try it myself.
       | 
       | Turns out you can throw this into your website and it will
       | display "Hello World":                   <script type="module"
       | src="https://pyscript.net/releases/2024.8.2/core.js"></script>
       | <script type="py">             import js
       | js.document.querySelector("body").innerText = "Hello World"
       | </script>
       | 
       | So it seems to be a script that looks for scripts of type "py"
       | and transpiles them from Python to JavaScript via Pyodide?
       | 
       | On the other hand, the demo on the homepage is a repl. And the
       | title says "platform". So I'm still confused.
        
         | pansa2 wrote:
         | > _transpiles them from Python to JavaScript_
         | 
         | There are projects that do that, but it looks like PyScript
         | instead runs Python code directly. It uses a Python interpreter
         | compiled to WebAssembly - either CPython (from Pyodide) or
         | MicroPython.
        
           | deisteve wrote:
           | does this mean we can install FastAPI in the browser?
        
             | bouncing wrote:
             | I mean, maybe, but you'd have trouble with sandboxing when
             | you try to open a socket.
        
         | rty32 wrote:
         | Without actually reading the documentation or source code -- I
         | guess "js" package is just an API that somehow maps to the real
         | "window" object and calls those DOM methods via some sort of
         | Proxy object.
        
           | mg wrote:
           | Probably. It is part of Pyodide, not something this PyScript
           | project adds:
           | 
           | https://pyodide.org/en/stable/usage/quickstart.html#accessin.
           | ..
        
         | dr_kiszonka wrote:
         | I found some info about the terminal here:
         | https://docs.pyscript.net/2024.8.2/user-guide/terminal/
         | 
         | (I was hoping to be able to run Python in the browser's
         | console.)
        
         | sjamaan wrote:
         | > And the title says "platform". So I'm still confused.
         | 
         | I hate it when people say "platform" or use other vague/ill
         | defined terms. Just say it's a JS implementation of Python that
         | evaluates code in script tags for python, or some such.
        
           | pphysch wrote:
           | PyScript is a platform for using Python in the browser to
           | build actual applications.
        
       | amanzi wrote:
       | I used this to create a Markdown renderer a while back. You can
       | see the very simple source code here:
       | https://pyscript.com/@stuartmaxwell/markdown-previewer-v2/la...
       | 
       | The app won't run well on mobile but should be fine on desktop.
       | 
       | I used this code in a blog application I was writing in Django.
        
       | IshKebab wrote:
       | The examples were about as slow as I imagined they would be. 20
       | seconds to draw a simple graph.
        
         | nmstoker wrote:
         | The majority of that is the upfront one-off loading time for
         | pyodide to get going along with required packages. Subsequent
         | runs for things will be substantially faster.
        
           | IshKebab wrote:
           | That _is_ a subsequent run (because I also wondered if
           | caching etc would improve hot loads, but it doesn 't).
        
       | bArray wrote:
       | I've been looking for something like this, but I'm still unsure
       | it quite hits the spot. I think that this would be very
       | interesting if it allows a person to run a blog like a Jupyter
       | notebook.
       | 
       | I have a lightweight hack [1] that runs Python in markdown
       | documents and can output basic images/graphs - which is embedded
       | into static pages. The point was being able to write an article
       | that somebody else could see the code behind it and test
       | themselves, e.g. [2]. One of the browsers I test in is Netsurf
       | with JS disabled. Unfortunately it doesn't look great in Lynx.
       | 
       | [1] https://gitlab.com/danbarry16/pandoc-highlight-filter
       | 
       | [2] https://coffeespace.org.uk/projects/langtons-ant-
       | universe.ht...
        
         | DerThorsten wrote:
         | There is jupyerlite which does exactly that
         | https://github.com/jupyterlite/jupyterlite
         | 
         | Kernels are compiled to wasm and can therefore run in the
         | browser.
         | 
         | Try it out at:
         | https://jupyterlite.readthedocs.io/en/stable/_static/lab/ind...
         | 
         | Its easy to create your own deployments, there is a template
         | repo for that https://github.com/jupyterlite/demo
        
       | agumonkey wrote:
       | What other language would people choose in a browser? Lua ?
        
         | thesuperbigfrog wrote:
         | >> What other language would people choose in a browser? Lua?
         | 
         | Brendan Eich originally wanted to use Scheme. There are some
         | Scheme in Javascript implementations:
         | 
         | https://www.biwascheme.org/
         | 
         | https://lips.js.org/
         | 
         | https://www.wescheme.org/
         | 
         | https://web.scheme.org/
        
           | agumonkey wrote:
           | Yeah but I was mostly wondering about mainstream programmers.
           | The chance of people liking a lisp are still low(to my own
           | sadness)
        
       | zygentoma wrote:
       | Isn't this the same concept as brython? (BRowser pYTHON)
       | 
       | https://brython.info/
       | 
       | https://github.com/brython-dev/brython
        
         | pansa2 wrote:
         | Brython seems to be a Python => JS translator, rather than an
         | in-browser Python implementation. Similar end result, but works
         | in a completely different way.
         | 
         | https://yasoob.me/2019/05/22/running-python-in-the-browser/
        
           | miohtama wrote:
           | AFAIK Brython cannot translate some of popular Python
           | libraries. Python libraries, esp. Data science ones, are
           | often the reason why developers pick Python.
        
             | nmstoker wrote:
             | Yes, this is an advantage of Pyodide, and thus PyScript
             | too, they have a fair number of packages that work
             | directly:
             | 
             | https://pyodide.org/en/stable/usage/packages-in-
             | pyodide.html
        
       | bschwindHN wrote:
       | Our phones are getting faster every year, we must find a way to
       | slow things down even more.
        
         | poikroequ wrote:
         | The dawn of the PyScript web frameworks is upon us...
        
           | amy-petrik-214 wrote:
           | We must think of the lessons of docker, the lessons of conda.
           | Why, what with the web environments, so many, is there not a
           | way to unify an environment? Of course! A virtual environment
           | of python, on a virtual environment of the docker machine, on
           | a virtual web browser, and there can be JIT throughout to
           | make it only painfully slow and not excruciatingly slow!
           | Abstraction is a Good Thing (TM) and the more abstraction,
           | the better. There really ought to be an object oriented
           | abstraction layer factory generator factory using Java OOP
           | best practices, also a good thing (TM). If all goes well we
           | may even be able to reach abstraction tier 17, which is two
           | more layers of abstraction than the industry standard 15.
           | 
           | See: https://www.corporate-rebels.com/blog/cia-field-manual
        
             | failuser wrote:
             | Just one more abstraction layer will fix it.
        
           | bouncing wrote:
           | I wrote one. https://puepy.dev
        
             | poikroequ wrote:
             | You, sir, are a mad man.
        
         | Wowfunhappy wrote:
         | I agree with the sentiment but the purpose of WebAssembly is to
         | be a compiler target for other languages, so we're not stuck
         | with Javascript until the end of time, right? Will this always
         | necessarily be substantially slower than Javascript?
        
           | pansa2 wrote:
           | > _Will this always necessarily be substantially slower than
           | Javascript?_
           | 
           | Yes, interpreted Python will always be slower than JIT-
           | compiled JavaScript.
           | 
           | PyPy.js [0] is a JIT compiler for Python that runs in the
           | browser - its performance could be similar to JS but its
           | development is currently "sleeping".
           | 
           | [0] https://github.com/pypyjs/pypyjs
        
             | pjmlp wrote:
             | This is sadly to be expected in regards to PyPy, it was
             | never taken seriously by the Python community, regardless
             | of their heroic efforts.
        
         | bouncing wrote:
         | You're replacing one interpreted language for another.
         | 
         | Yes, Python is among the slower interpreted languages out
         | there, but still. The debate between fast execution and
         | programmer productivity is not a new one. Given Python's
         | popularity, I'd say it's settled.
        
       | v3ss0n wrote:
       | I can't find any real world use case there. If you want to run ML
       | Models you can build them to Onnx
       | https://onnxruntime.ai/docs/tutorials/web/ . Will this efficient
       | to build browser based app in place of JS/TS ?
        
         | h8hawk wrote:
         | Perhaps some people don't want to touch JS/TS
        
           | mapcars wrote:
           | TS is actually has better typing than Python (mypy). And the
           | whole React (Vue, etc) infrastructure around it. Without
           | these two things I wouldn't even bother writing frontend
           | code.
        
             | pphysch wrote:
             | The browser doesn't support TS though. The browser does
             | support Python via PyScript/pyodide/etc.
             | 
             | You can't run TS in the browser unless you jump through the
             | same hoops that PyScript is.
        
               | wiseowise wrote:
               | 'npx vite build' is what you call hoops?
        
               | pphysch wrote:
               | You can offline transpile anything to JS to later run in
               | the browser, TS isn't special in this way.
               | 
               | With PyScript you can see and modify the actual code in
               | your browser, just like vanilla JS.
        
               | pjmlp wrote:
               | Yet, type annotations are being discussed for JavaScript,
               | eventually the browsers will be running Typescript.
        
               | pphysch wrote:
               | The browsers are already running _anything_ via custom
               | WASM interpreters, like Pyodide for Python.
        
               | pjmlp wrote:
               | With a huge performance hit and leaky abstractions.
        
               | infamia wrote:
               | I thought I read somewhere that the Chrome team tried
               | typed JS, found out that there was a performance hit, and
               | they ended the experiment? Is this a continuation of that
               | or a new effort? Sounds interesting.
        
             | infamia wrote:
             | Idk they're just different tradeoffs to me. Types are real
             | and enforceable at runtime in Python (e.g, pydantic). Types
             | in TS/JS are a fake veneer that add a build step. Is that
             | categorically better? I don't love Python typing syntax.
        
               | mapcars wrote:
               | I want my types to be verified before runtime, what
               | should I do with type error at runtime? Yes it will leave
               | me a better error message in logs, but build-time type
               | check will prevent me even rolling this code out.
               | 
               | So yes, its categorically better.
        
               | infamia wrote:
               | > I want my types to be verified before runtime, what
               | should I do with type error at runtime?
               | 
               | It is weird to me you cannot think of uses for types and
               | handling their errors at runtime. Look at projects like
               | FastAPI (which uses pydantic) for an an example where
               | having types at runtime has been handy.
               | 
               | Also, if types are enforced at runtime logging is better,
               | debugging is better, and you have more options for data
               | validation and doing dynamic or metaprogramming likely
               | more easily because you can evaluate these things at
               | runtime. By types being built in, the language gives you
               | a richer set of tools to work with and more options when
               | and how to enforce types.
        
         | quotemstr wrote:
         | Programming language ought to be decoupled from deployment
         | environment.
        
       | apwheele wrote:
       | For folks interested in seeing a usecase, I have a panel
       | dashboard of Dallas crime statistics at:
       | 
       | https://crimede-coder.com/graphs/Dallas_Dashboard
       | 
       | Startup takes around a minute (which includes installing various
       | python libraries + loading an external 5mb dataset). But once up
       | and running it is quite responsive. (And works fine on my
       | iphone.)
       | 
       | Many businesses I work with use Tableau free versions, and just
       | manually update the data (since the free doesn't allow direct
       | connections to a datastore). This is a free alternative (I use
       | github actions to build a zipped up csv file that is pulled into
       | the environment).
        
         | miohtama wrote:
         | Awesome example of using in production! Nice work.
         | 
         | I wish we get over with the loading hickups soon. Do you know
         | if there is any work going on to make it start
         | faster/smaller/less janky?
        
           | solarexplorer wrote:
           | Maybe some kind of snapshot feature, where you can just load
           | an snapshot of the already initialized state?
        
         | stackskipton wrote:
         | Memory usage seems quite high. According to Browser Task
         | Manager, the tab is consuming 657MB compared to 25-70MB most
         | other tabs are using.
        
           | apwheele wrote:
           | Yes this is part of the price of running it client side
           | instead of having a server do all the data manipulation. It
           | is pretty much a wash for RAM for me vs running locally
           | (local is 200-300 for python + 100-200 for chrome for just
           | that web-page).
        
           | bbminner wrote:
           | Woah, what browser/page combination can fit into ~50Mb these
           | days? I am simply used to the fact that most pages take at
           | least 200Mb RAM in task manager.
        
             | rafaelgoncalves wrote:
             | did you use the in browser or another external task
             | manager? most pages without videos or some kind of gpu
             | process uses 20~30 MB here (like hacker news for example).
        
         | andybak wrote:
         | > Startup takes around a minute
         | 
         | I wonder what your bottleneck was? It was about 20 seconds for
         | me on domestic broadband.
        
           | jeroenhd wrote:
           | Based on the temperature of my phone after clicking that
           | link, probably CPU or memory.
        
         | shipp02 wrote:
         | Does it work on firefox for anyone? The spinner keeps spinning
         | on my MacBook Air.
        
       | jerpint wrote:
       | I wonder if this could be combined with fastHTML to have a full
       | python html rendered client side
        
         | dataguy_ wrote:
         | yep. would be nice as well to have LLMs trained on these things
         | for fast prototyping
        
       | SillyUsername wrote:
       | Someone just invented a whole new level of hell for devs who
       | maintain code.
       | 
       | First it was untrained consultants and VB or Delphi (Pascal)
       | 
       | Then came the JS monkeys mixing up plain JS with jQuery and SQL
       | injections.
       | 
       | Now it's time for data scientists and pi/sketch users to feel the
       | pain of an uncharted domain...
        
         | micahdeath wrote:
         | If you could write VB (VB6) in WASM, that would make some
         | things so much simpler!!! (I work on a legacy codebase)
        
           | v3ss0n wrote:
           | Thats mean you want to embed VB code into Browser Like in
           | ActiveX days?
        
             | pjmlp wrote:
             | Actually I think Blazor might support class libraries
             | written in VB.NET.
        
               | micahdeath wrote:
               | They do and it appears to work really well (I have only
               | experimented with it.)
        
             | micahdeath wrote:
             | Isn't it the same thing as a SPA or any other WASM? The
             | only real difference now is that it is now accepted and the
             | browsers assist with cross platform APIs (and some
             | security) instead of pure Windows APIs. (Ok, so I made it a
             | bit more simple than it is, but that is how I see it.)
        
           | nazgulsenpai wrote:
           | Oh man that would be so cool. Kinda like the Ruffle Flash
           | player!
        
           | pwang wrote:
           | Anaconda Code is what you're looking for! It's Python (via
           | PyScript) running as an Excel plug-in, that has full access
           | to the spreadsheet and can harness a big part of the core
           | PyData stack (including matplotlib, sklearn, pandas, etc.)
           | 
           | The whole thing runs via PyScript/WASM, and lives locally
           | inside the Excel spreadsheet.
           | https://www.anaconda.com/blog/introducing-anaconda-code-
           | add-...
        
           | sitkack wrote:
           | Arguably, VB6 and Ruby have a pretty similar syntax. And Wasm
           | is first class in the Ruby build farm.
           | https://github.com/ruby/ruby.wasm
        
         | v3ss0n wrote:
         | Thats what I am thinking too. Integrating code of DS/ML people
         | into backend is painful enonugh. Imagine maintaining frontend
         | code of those who had never done proper forntend development...
        
           | bob020202 wrote:
           | If it's not something that needs extensive testing, I'd
           | rather maintain that codebase than a "proper" one. Data
           | science people don't pump out 100 files with 20 layers of
           | OOP, and they don't know how to use Redux or whatever
           | overkill navigation lib. It'll be a main.py that just does
           | what you want. Maybe there will be copy-pasted code, but even
           | that can be more readable sometimes.
        
         | giancarlostoro wrote:
         | Honestly, WebAssembly with C#'s Blazor is the best development
         | experience I've ever had. I can fully debug the front-end and
         | back-end within Visual Studio.
        
           | maleldil wrote:
           | But then you have to use Visual Studio.
        
             | camdenreslink wrote:
             | Visual Studio is really good if you are doing C#
             | development on Windows.
        
               | giancarlostoro wrote:
               | MonoDevelop was also really nice. So much so, it looks
               | like they copied it into Visual Studio for Mac???[0]
               | 
               | In any regard, C# has some of the richest tooling I've
               | seen for any programming language, I do wish Microsoft
               | would invest even marginally into MonoDevelop again.
               | 
               | [0]: https://www.monodevelop.com/
        
               | neonsunset wrote:
               | VS4Mac _is_ MonoDevelop. Well, it was - VS4Mac is dead
               | now as it has been stagnating, and at the end of its life
               | was likely more harmful to .NET adoption by developers
               | using macOS.
               | 
               | Its niche is now replaced by VS Code, particularly after
               | base C# extension switched to Roslyn LSP from Omnisharp,
               | and, of course, Rider which has been a strong cross-
               | platform offering for a long time.
               | 
               | With that said, I heard only positive things about
               | MonoDevelop back in the day and my impression from the
               | feedback is that it was something its authors really put
               | care into. I suppose it is part of history now.
               | 
               | On Blazor - both Rider and VS Code support it. Contrary
               | to the belief of slowly but surely diminishing group of
               | developers that think .NET is still stuck in Windows
               | land, there is nothing that ties you to Windows here.
        
               | pjmlp wrote:
               | Not really.
               | 
               | The original VS4Mac was Mono Develop.
               | 
               | Afterwards the team started to share code between Visual
               | Studio and VS4Mac, written in .NET Standard libraries,
               | until they started the full rewrite, using .NET Core
               | proper with Cocoa bindings, as the team did not consider
               | MAUI with Catalyst mature enough for the rewrite.
               | 
               | Only to have the project cancelled and replaced by our
               | Electron shell friend, after they reached the 1.0 of the
               | rewrite efforts.
               | 
               | Which still doesn't have the graphical tooling and
               | storyboards integration from VS4Mac.
               | 
               | Most folks are rather adopting Rider.
        
             | giancarlostoro wrote:
             | One of the best IDE's I've ever used. JetBrains IDE's come
             | close, but Visual Studio is a gem.
        
               | maleldil wrote:
               | IMO, it's somewhat polarising. Some people love it, but I
               | personally can't stand it. It feels too heavy, trying to
               | dominate every aspect of writing code. I prefer
               | lightweight editors, but I recognise it's a personal
               | thing.
        
               | noworriesnate wrote:
               | Visual Studio is nice but I vastly prefer Rider, even on
               | Windows. It feels bit snappier, especially when you're
               | comparing Visual Studio + Resharper versus Rider. TBH
               | this is probably a matter of what is familiar though.
        
               | giancarlostoro wrote:
               | I use Rider on other platforms.
        
           | pjmlp wrote:
           | The 2nd coming of Web Forms, or Silverlight, take your pick.
        
             | giancarlostoro wrote:
             | In the case of WASM though, does it really matter? Ideally
             | I want to see other languages do the same thing.
        
               | pjmlp wrote:
               | It matters when debugging pile of WASM code, and the
               | performance loss switching back and forth to JavaScript
               | engine.
               | 
               | The very reason I haven't bothered that much with Blazor,
               | are my debugging scars from Web Forms and JSF.
               | 
               | Given the choice, I will go with stuff that works
               | directly with script tags and the built-in developer
               | tools.
        
           | bouncing wrote:
           | I'm curious what widgets/frontend tooling you use.
           | 
           | This is, I assume, Visual Studio for Windows. Have you tried
           | it at all in VS Code or is that a non-starter?
        
         | pdntspa wrote:
         | Everyday We Stray Further From God
        
       | bdcravens wrote:
       | Reminds me of my first "tech" job (computer store/ISP/web dev
       | shop, circa 1998) where the owner wrote some VBScript for the
       | browser and wondered why it didn't work in Netscape.
        
       | pitah1 wrote:
       | I recently went down the rabbit hole of using PyScript for
       | running a Python CLI app in the browser.
       | 
       | It felt hacky the whole time, especially when dependencies were
       | involved. I had to create wrapper classes to work around Pydantic
       | 2.x not being available to use. I tried to put all logic into the
       | Python files but found some things missing that I had to put in
       | JavaScript.
       | 
       | I think it could be good in use cases where you want some simple
       | UI with custom UI logic on top of your Python code but maybe
       | Streamlit or Gradio could be more suitable.
       | 
       | GitHub repo: https://github.com/data-catering/data-contract-
       | playground
       | 
       | Website: https://data-catering.github.io/data-contract-
       | playground/
        
       | raybb wrote:
       | The big limitation that's very annoying with any WASM setup is
       | that at the end of the day you still can't call many APIs or
       | scrape sites because of CORS. Ofcourse, CORS is important to
       | avoid XSS and the like but I wish there was a way to deal with
       | this other than setting up a proxy to strip CORS, which then
       | leaves you with a non residential IP that's more likely to get
       | blocked.
        
       | deknos wrote:
       | What i would like, if i could write scripts in firefox, which act
       | the browser, like doing the evaluation at any stage i like. At
       | GET the page, after ALL GETs. After javascript evaluation or
       | before.
       | 
       | Is there something which can do this? and with full power of
       | python also accessible to the host?
        
       | grej wrote:
       | Also check out pyscript.com, to create and host PyScript apps.
        
       | Falimonda wrote:
       | Does something built off this or Pyodide exist that's effectively
       | a replacement to using React?
        
       | bityard wrote:
       | Why does it require signing in just to try it out? Someone else
       | below mentioned that it's just adding a <script> tag to your
       | HTML.
        
       | jedberg wrote:
       | First thing I tried was a small lambda function and it worked!
       | Then I tried some Fibonacci with tail recursion and surprisingly
       | that worked too. I'm impressed, because often when people
       | reimplement the Python interpreter they get those wrong.
        
         | tusharsadhwani wrote:
         | that's because it's not a reimplementation, it is cpython
         | recompiled to wasm.
        
         | pxc wrote:
         | > Then I tried some Fibonacci with tail recursion and
         | surprisingly that worked too. I'm impressed, because often when
         | people reimplement the Python interpreter they get those wrong.
         | 
         | Huh? I thought Python didn't have TCO anyway. Guido had a whole
         | blog post about why it supposedly doesn't belong in Python:
         | https://neopythonic.blogspot.com/2009/04/tail-recursion-elim...
        
       | nickpsecurity wrote:
       | For those exploring, here was one of the best "Python in the
       | browser" projects I found:
       | 
       | https://brython.info/
        
       | n8henrie wrote:
       | I tried to write a POC Firefox extension in pyscript but ended up
       | having to fall back to pyodide. Was a fun experiment anyway.
       | 
       | https://n8henrie.com/2023/06/write-a-firefox-extension-in-py...
        
       | apples2apples wrote:
       | Careful Anaconda will change the license on you and then sue...
        
         | pwang wrote:
         | Fun joke but Anaconda has a track record of creating OSS and
         | then turning it over to community governance. This includes the
         | conda tool itself, libraries like bokeh, dask, numba,
         | jupyterlab, and many more. And while PyScript project
         | governance isn't in NumFOCUS, all of the code is permissively-
         | licensed BSD/MIT.
         | 
         | The commercial licenses for the products and commercial
         | repository is what supports all of this OSS development work.
        
       | bouncing wrote:
       | If I may toot my own horn, I wrote a somewhat more opinionated,
       | reactive, frontend framework using PyScript. It's inspired by
       | Vue.js, a bit: https://puepy.dev
        
       | bilsbie wrote:
       | How's it work? Webassembly? Webile?
        
       ___________________________________________________________________
       (page generated 2024-08-16 23:00 UTC)