{"slug": "pyodide", "name": "Pyodide", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 14, "commenters": 35, "warners": 1, "score": 16.903, "rising": -2.25, "first": "2025-11-03", "latest": "2026-10-19", "why": "Pyodide is one of the hidden gems of the Python ecosystem. It's SO good at what it does", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 18, "neutral": 23, "compare": 1, "warn": 1}, "spark": [0, 1, 1, 3, 5, 0, 0, 3, 3, 0, 1, 1], "listed": true, "loved": [], "caveat": "", "short_quote": "Pyodide is one of the hidden gems of the Python ecosystem. It's SO good at what it does", "kind": "", "icon": true, "domain": "pyodide.org", "github_repo": null, "official_url": "https://pyodide.org", "pricing": "", "aliases": ["Pyodide"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 802402480, "item_id": 50150155, "url": "https://news.ycombinator.com/item?id=50150155", "by": "runningmike", "date": "2026-10-19", "stance": "recommend", "quote": "Good news is that Pyodide[1] is still actively maintained and developed!", "excerpt": "Good news is that Pyodide[1] is still actively maintained and developed! \"The honest picture is that PyScript remained a niche.\" Running Python directly in the browser is great and gives lots of opportunities. However in the AI era generating sloppy for browser apps seems the way forward... [1] Pyodide is a port of CPython to WebAssembly/Emscripten. https://pyodide.org/", "context": "", "use_case": "", "switched_from": "", "story": "PyScript is entering maintenance mod"}, {"id": 796663008, "item_id": 49791438, "url": "https://news.ycombinator.com/item?id=49791438", "by": "simonw", "date": "2026-09-21", "stance": "recommend", "quote": "Pyodide is such a cool piece of the Python ecosystem", "excerpt": "Pyodide is such a cool piece of the Python ecosystem. I hope Cloudflare consider throwing some money their direction: https://opencollective.com/pyodide/contribute", "context": "", "use_case": "", "switched_from": "", "story": "Python Workers are now generally available"}, {"id": 794965904, "item_id": 49685369, "url": "https://news.ycombinator.com/item?id=49685369", "by": "simonw", "date": "2026-09-13", "stance": "recommend", "quote": "I care about Pyodide (Python running via WebAssembly)", "excerpt": "I was a bit nervous about this trend when it started picking up because I care about Pyodide (Python running via WebAssembly) and libraries that use PyO3 might not work in Pyodide. Thankfully that's now been mostly solved - you can compile and publish WASM builds of Rust or C extensions on PyPI now and a Pyodide can then use them. Here's the WASM build of the Rust-including Pydantic-core package for example: https://", "context": "", "use_case": "", "switched_from": "", "story": "Libraries Run Rust Inside Python (With PyO3)"}, {"id": 785473377, "item_id": 49092086, "url": "https://news.ycombinator.com/item?id=49092086", "by": "hazrmard", "date": "2026-07-28", "stance": "recommend", "quote": "Put PyIodide into posts to make ML code explainers interactive", "excerpt": "I resonate with the author's point that I can modify my own website to my will. I use hugo to build my website and I wrote my own theme. It's clunky, but control over the design/build lets me: - Put PyIodide into posts to make ML code explainers interactive (https://iahmed.me/post/poor_mans_autograd/) - Inject custom widgets to illustrate theoretical ideas (https://iahmed.me/post/surprise-derivation-entropy/) - Have ", "context": "", "use_case": "interactive code in blog posts", "switched_from": "", "story": "Substack writers, you need a website"}, {"id": 782169684, "item_id": 48885605, "url": "https://news.ycombinator.com/item?id=48885605", "by": "smacke", "date": "2026-07-12", "stance": "recommend", "quote": "now purely client-side in your browser thanks to pyodide", "excerpt": "I started burning down the backlog of all the stuff I wanted to get to for side projects but never had time for (before LLMs): - https://smacke.net/ffsubsync -- automagically synchronize subtitles, now purely client-side in your browser thanks to pyodide - https://ipyflow.github.io/ipyflow/lab/index.html?path=demo.ipynb -- reactive python jupyter notebooks, again in the browser thanks to pyodide / jupyterlite - https", "context": "", "use_case": "Python in browser", "switched_from": "", "story": "Ask HN: What Are You Working On? (July 2026)"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 758538048, "item_id": 47408628, "url": "https://news.ycombinator.com/item?id=47408628", "by": "QuadmasterXLII", "date": "2026-03-16", "stance": "warn", "quote": "once you bring them on board pyodide load times are long", "excerpt": "It works surprisingly well in terms of writing python for native execution, and then trying to share on the web and having it Just Work TM. Unfortunately, when I want python it's because I want numpy, scipy and friends, and once you bring them on board pyodide load times are long. As an example comparison: a face turning octahedron puzzle in python + pyodide, loads in 10 seconds https://cubes.hgreer.com/fto.html . Me", "context": "", "use_case": "Python in browser", "switched_from": "", "story": "Pyodide: a Python distribution based on WebAssembly"}]}], "who": [], "tags": [], "use_cases": ["python in browser", "python in the browser", "python in webassembly", "running python in wasm", "interactive code in blog posts", "sandboxed python execution"], "compared": [{"slug": "claude-code", "name": "Claude Code", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "datasette", "name": "Datasette", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "pyscript", "name": "PyScript", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "deno", "name": "Deno", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "amla-sandbox", "name": "Amla Sandbox", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 758596192, "item_id": 47412262, "url": "https://news.ycombinator.com/item?id=47412262", "by": "mcintyre1994", "date": "2026-03-17", "stance": "recommend", "quote": "Pyodide is a fun tool. I built https://pyground.vercel.app with it", "excerpt": "Love all the tools mentioned in the comments, Pyodide is a fun tool. I built https://pyground.vercel.app with it a few years ago, as a quick way to run Python on a CSV/JSON file locally in the browser. For a while Python/Matplotlib was what I was most comfortable writing quick and simple analysis scripts with, and this was my go to for one-off data analysis work. You can drag-drop a file in, then some 'clever' code m", "context": "", "use_case": "Running Python in browser", "switched_from": "", "story": "Pyodide: a Python distribution based on WebAssembly"}], "threads": [{"url": "https://news.ycombinator.com/item?id=47367298", "title": "Pyodide: a Python distribution based on WebAssembly", "mentions": 11}, {"url": "https://news.ycombinator.com/item?id=49787142", "title": "Python Workers are now generally available", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=48462759", "title": "Pyodide 314.0: Python packages can now publish WebAssembly wheels to PyPI", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=49685037", "title": "Libraries Run Rust Inside Python (With PyO3)", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=48884984", "title": "Ask HN: What Are You Working On? (July 2026)", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=46918254", "title": "Python interpreter written in Rust for use by AI", "mentions": 2}], "sentiment_by_month": {"2025-11": {"neutral": 2, "compare": 1}, "2025-12": {"neutral": 4, "recommend": 1}, "2026-01": {"recommend": 1, "neutral": 1}, "2026-02": {"recommend": 3, "neutral": 2}, "2026-03": {"warn": 1, "recommend": 5, "neutral": 3}, "2026-04": {"neutral": 3}, "2026-05": {"neutral": 2}, "2026-06": {"recommend": 3, "neutral": 2}, "2026-07": {"recommend": 3, "neutral": 1}, "2026-08": {}, "2026-09": {"recommend": 1, "neutral": 2}, "2026-10": {"neutral": 1, "recommend": 1}}, "quotes": [{"id": 802402480, "item_id": 50150155, "url": "https://news.ycombinator.com/item?id=50150155", "by": "runningmike", "date": "2026-10-19", "stance": "recommend", "quote": "Good news is that Pyodide[1] is still actively maintained and developed!", "excerpt": "Good news is that Pyodide[1] is still actively maintained and developed! \"The honest picture is that PyScript remained a niche.\" Running Python directly in the browser is great and gives lots of opportunities. However in the AI era generating sloppy for browser apps seems the way forward... [1] Pyodide is a port of CPython to WebAssembly/Emscripten. https://pyodide.org/", "context": "", "use_case": "", "switched_from": "", "story": "PyScript is entering maintenance mod"}, {"id": 802279778, "item_id": 50142486, "url": "https://news.ycombinator.com/item?id=50142486", "by": "westurner", "date": "2026-10-18", "stance": "neutral", "quote": "someday that might compile to WASM with Pyodide.", "excerpt": "One weekend, on a branch that isn't merged, I built a rudimentary SDL-based simulator for (InkHUD) ePaper GUI development that works on x86 without ESP32 emulation because Meshtastic compiles for x86, too. https://github.com/westurner/firmware/commits/add_weather_http_json_protobufs/ The SPI display driver that records screencasts to MAV (Mu Animation Video) format - just like a fax - might be useful. In another proj", "context": "", "use_case": "running Python in WASM", "switched_from": "", "story": "Show HN: Esp32sim \u2013 Run ESP32 firmware in the browser"}, {"id": 796732752, "item_id": 49795797, "url": "https://news.ycombinator.com/item?id=49795797", "by": "hoodchatham", "date": "2026-09-22", "stance": "neutral", "quote": "Pyodide in browsers _can't_ use the real network stack because of fundamental security principles of browsers.", "excerpt": "> Pyodide and Cloudflare don't use the real network stack for http requests Pyodide in browsers _can't_ use the real network stack because of fundamental security principles of browsers. With direct networking you could get around the CORS restrictions. Thanks to Gyeongjae Choi's work, Pyodide in Node/Cloudflare can use direct sockets. See this section of the blog post: https://blog.cloudflare.com/python-workers-ga/#", "context": "", "use_case": "", "switched_from": "", "story": "Python Workers are now generally available"}, {"id": 796693040, "item_id": 49793315, "url": "https://news.ycombinator.com/item?id=49793315", "by": "dom96", "date": "2026-09-21", "stance": "neutral", "quote": "older Pyodide versions too, which have fewer features", "excerpt": "(I'm one of the authors of this post) > Being tied to use only one version of Python/Pyodide (the one that Workerd embeds) This isn't quite the case, you can choose between different versions using compatibility flags. For example, `python_workers_314` is the compat flag for Python 3.14[1]. You've also got compat flags for 3.13 and 3.12. Though it is worth noting that by using those older versions you will also be us", "context": "", "use_case": "", "switched_from": "", "story": "Python Workers are now generally available"}, {"id": 796663008, "item_id": 49791438, "url": "https://news.ycombinator.com/item?id=49791438", "by": "simonw", "date": "2026-09-21", "stance": "recommend", "quote": "Pyodide is such a cool piece of the Python ecosystem", "excerpt": "Pyodide is such a cool piece of the Python ecosystem. I hope Cloudflare consider throwing some money their direction: https://opencollective.com/pyodide/contribute", "context": "", "use_case": "", "switched_from": "", "story": "Python Workers are now generally available"}, {"id": 794999792, "item_id": 49687487, "url": "https://news.ycombinator.com/item?id=49687487", "by": "hoodchatham", "date": "2026-09-13", "stance": "neutral", "quote": "It wasn't all that easy to make it work:", "excerpt": "It wasn't all that easy to make it work: https://blog.pyodide.org/posts/rust-pyo3-support-in-pyodide/", "context": "", "use_case": "Python in WebAssembly", "switched_from": "", "story": "Libraries Run Rust Inside Python (With PyO3)"}, {"id": 794965904, "item_id": 49685369, "url": "https://news.ycombinator.com/item?id=49685369", "by": "simonw", "date": "2026-09-13", "stance": "recommend", "quote": "I care about Pyodide (Python running via WebAssembly)", "excerpt": "I was a bit nervous about this trend when it started picking up because I care about Pyodide (Python running via WebAssembly) and libraries that use PyO3 might not work in Pyodide. Thankfully that's now been mostly solved - you can compile and publish WASM builds of Rust or C extensions on PyPI now and a Pyodide can then use them. Here's the WASM build of the Rust-including Pydantic-core package for example: https://", "context": "", "use_case": "", "switched_from": "", "story": "Libraries Run Rust Inside Python (With PyO3)"}, {"id": 785473377, "item_id": 49092086, "url": "https://news.ycombinator.com/item?id=49092086", "by": "hazrmard", "date": "2026-07-28", "stance": "recommend", "quote": "Put PyIodide into posts to make ML code explainers interactive", "excerpt": "I resonate with the author's point that I can modify my own website to my will. I use hugo to build my website and I wrote my own theme. It's clunky, but control over the design/build lets me: - Put PyIodide into posts to make ML code explainers interactive (https://iahmed.me/post/poor_mans_autograd/) - Inject custom widgets to illustrate theoretical ideas (https://iahmed.me/post/surprise-derivation-entropy/) - Have ", "context": "", "use_case": "interactive code in blog posts", "switched_from": "", "story": "Substack writers, you need a website"}, {"id": 782220993, "item_id": 48888812, "url": "https://news.ycombinator.com/item?id=48888812", "by": "rmnclmnt", "date": "2026-07-12", "stance": "neutral", "quote": "Sandbox Python exec (Pyodide in WASM)", "excerpt": "In the past few weeks, experimenting with a custom ai agent running entirely in the browser with sandboxed tools exec. The core is built in Rust, a native CLI is built on top for local experimentation but the most interesting part is the web version: the core is built to WASM and get augmented with many tools in the JS land: - OPFS access (read, list, edit files) - Sandbox Python exec (Pyodide in WASM) - Sandbox Duck", "context": "", "use_case": "sandboxed Python execution", "switched_from": "", "story": "Ask HN: What Are You Working On? (July 2026)"}, {"id": 782169684, "item_id": 48885605, "url": "https://news.ycombinator.com/item?id=48885605", "by": "smacke", "date": "2026-07-12", "stance": "recommend", "quote": "now purely client-side in your browser thanks to pyodide", "excerpt": "I started burning down the backlog of all the stuff I wanted to get to for side projects but never had time for (before LLMs): - https://smacke.net/ffsubsync -- automagically synchronize subtitles, now purely client-side in your browser thanks to pyodide - https://ipyflow.github.io/ipyflow/lab/index.html?path=demo.ipynb -- reactive python jupyter notebooks, again in the browser thanks to pyodide / jupyterlite - https", "context": "", "use_case": "Python in browser", "switched_from": "", "story": "Ask HN: What Are You Working On? (July 2026)"}, {"id": 781034592, "item_id": 48814662, "url": "https://news.ycombinator.com/item?id=48814662", "by": "abhgh", "date": "2026-07-07", "stance": "recommend", "quote": "it was a surprise to me that this worked flawlessly", "excerpt": "Cool project! I tried something similar a while ago [1] - I wanted to load up an embedding model and semantically order texts, all in the browser. So I pull ONNX weights from HuggingFace (MPNet, MiniLM), use Transformers.js to embed, and use a clusterer from scikit-learn (running on pyiodide - it was a surprise to me that this worked flawlessly) on the page - all client-side. [1] http://sol.quipu-strands.com/", "context": "", "use_case": "", "switched_from": "", "story": "Ternlight \u2013 7 MB embedding model that runs in browser (WASM)"}, {"id": 777606129, "item_id": 48600383, "url": "https://news.ycombinator.com/item?id=48600383", "by": "simonw", "date": "2026-06-19", "stance": "neutral", "quote": "using Pyodide and WebAssembly", "excerpt": "I have a version of Datasette that runs entirely in the browser (using Pyodide and WebAssembly) and it's smaller than a lot of modern React homepages (12.35MB): https://lite.datasette.io/", "context": "", "use_case": "Python in browser", "switched_from": "", "story": "Datasette Apps: Host custom HTML applications inside Datasette"}, {"id": 777350513, "item_id": 48584407, "url": "https://news.ycombinator.com/item?id=48584407", "by": "apollo_orbit", "date": "2026-06-18", "stance": "neutral", "quote": "the Python backend runs in the browser with Pyodide", "excerpt": "What I have for you today is a single-file tool I call Vessel. A .vessel is a file that contains a tool\u2019s entire UI, a Python (FastAPI) backend, and an SQLite database. All the data lives inside this single file. Currently, I have a Vessel Host that is an installable PWA and opens any .vessel file locally. The purpose behind this was simple: In my career and everyday life, I create a lot of tools in spreadsheets. Spr", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Vessel \u2013 Portable app files (UI, FastAPI, SQLite) like .xlsx for tools"}, {"id": 776879761, "item_id": 48554985, "url": "https://news.ycombinator.com/item?id=48554985", "by": "haeseong", "date": "2026-06-16", "stance": "recommend", "quote": "Pyodide compiling actual CPython to WASM is what changed that math", "excerpt": "The free Python 2 versus paid Python 3 split you ran into wasn't arbitrary pricing. Trinket ran Python 2 entirely in the browser through Skulpt https://skulpt.org, a JS reimplementation that costs nothing to serve, while Python 3 needed real CPython on their servers because Skulpt never fully covered 3.x. Pyodide compiling actual CPython to WASM is what changed that math, which is exactly why your trifling rewrite ca", "context": "", "use_case": "", "switched_from": "", "story": "Trinket.io shutting down, so we saved it and hosted it a trinket.strivemath.org"}, {"id": 776439984, "item_id": 48527499, "url": "https://news.ycombinator.com/item?id=48527499", "by": "foresterre", "date": "2026-06-14", "stance": "neutral", "quote": "", "excerpt": "This and PEP-783 do remind me a bit of the story of watt (1) and serde_derive, where the latter was published containing a to WebAssembly compiled proc macro with the former as WebAssembly runtime (2). It tried amonst others to improve isolation and long compile times in a fairly foundational Rust library which can be found in many dependency trees. I found it a cool proof of concept at the time. Having a WebAssembly", "context": "", "use_case": "", "switched_from": "", "story": "Pyodide 314.0: Python packages can now publish WebAssembly wheels to PyPI"}, {"id": 776359568, "item_id": 48522473, "url": "https://news.ycombinator.com/item?id=48522473", "by": "simonw", "date": "2026-06-13", "stance": "recommend", "quote": "", "excerpt": "I had an older experimental Pyodide WASM project lying around (a packaging of the Luau language by Roblox) so I had Codex package that up for me and pushed it to PyPI. Here's the package: https://pypi.org/project/luau-wasm/ And an interactive demo page where you can try it out: https://simonw.github.io/luau-wasm/", "context": "", "use_case": "", "switched_from": "", "story": "Pyodide 314.0: Python packages can now publish WebAssembly wheels to PyPI"}, {"id": 776349984, "item_id": 48521874, "url": "https://news.ycombinator.com/item?id=48521874", "by": "simonw", "date": "2026-06-13", "stance": "recommend", "quote": "I've been looking forward to this for ages!", "excerpt": "I've been looking forward to this for ages! This means we can now take any C/Rust/whatever extension for Python, compile that as a `.wasm` extension, and then load it directly in browser Pyodide projects using: await micropip.install(\"package-on-pypi\") import package_name Here's how to try the new feature out. Visit https://pyodide.org/en/stable/console.html and type: import micropip await micropip.install(\"pydantic_", "context": "", "use_case": "Python in the browser", "switched_from": "", "story": "Pyodide 314.0: Python packages can now publish WebAssembly wheels to PyPI"}, {"id": 775726929, "item_id": 48482933, "url": "https://news.ycombinator.com/item?id=48482933", "by": "wolfgangK", "date": "2026-06-10", "stance": "recommend", "quote": "OpenCV being in the list of Pyodide modules [0] was the biggest boon for my online teaching experience", "excerpt": "OpenCV being in the list of Pyodide modules [0] was the biggest boon for my online teaching experience because remotely dealing with install woes (corporate proxies & cie) was a show stopper for regular Python. I'm hoping that they will package this new version and that it will bring the new neural networks engines goodies to the no-install crowd ! [0] https://pyodide.org/en/latest/usage/packages-in-pyodide.html", "context": "", "use_case": "", "switched_from": "", "story": "OpenCV 5 Is Here: The Biggest Leap in Years for Computer Vision"}, {"id": 771492131, "item_id": 48218258, "url": "https://news.ycombinator.com/item?id=48218258", "by": "nl", "date": "2026-05-20", "stance": "neutral", "quote": "Python (Pyodide)", "excerpt": "I've been using the FileSystems API a lot lately. It gives a sandboxed directory on the local computer you can read and write to (user decides what rights you get). It's what the web version of VS Code uses to edit local files. It's wonderful. Suddenly you can blend local and remote systems together the way they should operate, without having to have local apps with god-knows-what rights. It's not implemented in Fire", "context": "", "use_case": "", "switched_from": "", "story": "Saying Goodbye to Asm.js"}, {"id": 768879345, "item_id": 48054959, "url": "https://news.ycombinator.com/item?id=48054959", "by": "pstomi", "date": "2026-05-07", "stance": "neutral", "quote": "just to download and run pyodide", "excerpt": "Thanks for the question! I should have said almost no JavaScript: There is a minimal amount of JavaScript just to download and run pyodide and then it is only Python: see example at https://imgui-bundle.pages.dev/playground/?demo=p_35_minimal_example.py", "context": "", "use_case": "Python in browser", "switched_from": "", "story": "Show HN: Dear ImGui Bundle: Python and C++ apps for desktop, mobile, and the web"}, {"id": 764807409, "item_id": 47800463, "url": "https://news.ycombinator.com/item?id=47800463", "by": "willquack", "date": "2026-04-16", "stance": "neutral", "quote": "I added Python execution support via Pyodide", "excerpt": "I used to work at Distributive (formerly \"Kings Distributed Systems\") on its DCP compute platform\" which is entirely what you're describing. You can deploy a JS/WASM based workload, and it will be \"sliced\" and served to browser-based compute nodes. With WebGPU you can sort of have inference executing in the browser too. Incredible people there with an awesome project I added Python execution support via Pyodide (cpyt", "context": "", "use_case": "Python in the browser", "switched_from": "", "story": "Darkbloom \u2013 Private inference on idle Macs"}, {"id": 763910529, "item_id": 47744408, "url": "https://news.ycombinator.com/item?id=47744408", "by": "jasiek", "date": "2026-04-12", "stance": "neutral", "quote": "Uses pyiodide + chirp drivers under the hood + WebSerial.", "excerpt": "https://codeplug.org Program your amateur radio via the web. Uses pyiodide + chirp drivers under the hood + WebSerial.", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: What Are You Working On? (April 2026)"}, {"id": 762448289, "item_id": 47653018, "url": "https://news.ycombinator.com/item?id=47653018", "by": "simonw", "date": "2026-04-05", "stance": "neutral", "quote": "working in WebAssembly and Pyodide", "excerpt": "I got the Syntaqlite Rust/Python extension working in WebAssembly and Pyodide a few weeks ago: https://github.com/simonw/research/tree/main/syntaqlite-python-extension#readme I just extended that demo to one that runs the resulting Pyodide library in a browser with a playground interface for trying it out: https://tools.simonwillison.net/syntaqlite", "context": "", "use_case": "", "switched_from": "", "story": "Eight years of wanting, three months of building with AI"}, {"id": 758835760, "item_id": 47427235, "url": "https://news.ycombinator.com/item?id=47427235", "by": "busfahrer", "date": "2026-03-18", "stance": "recommend", "quote": "", "excerpt": "I recently learned that with this you can run juypter notebooks in your browser: https://jupyter.org/try-jupyter/lab/ Stuff like numpy seems to just work", "context": "", "use_case": "Running Python in browser", "switched_from": "", "story": "Pyodide: a Python distribution based on WebAssembly"}, {"id": 758655648, "item_id": 47415978, "url": "https://news.ycombinator.com/item?id=47415978", "by": "ndr", "date": "2026-03-17", "stance": "recommend", "quote": "I built https://codeglf.com on Pyodide", "excerpt": "related self plug: I built https://codeglf.com on Pyodide, a weekly Python code golf site where every submission runs locally in the browser. WebAssembly's isolation means you get sandboxing for free without any server infrastructure. Of course users could cheat and submit code that doesn't actually pass the tests, but so far everybody has been friendly and I haven't needed to validate results server-side. Hopefully ", "context": "", "use_case": "in-browser Python runtime", "switched_from": "", "story": "Pyodide: a Python distribution based on WebAssembly"}, {"id": 758610432, "item_id": 47413152, "url": "https://news.ycombinator.com/item?id=47413152", "by": "ipunchghosts", "date": "2026-03-17", "stance": "recommend", "quote": "REMUS RLF reader runs pyodide to parse underwater drone mission files", "excerpt": "REMUS RLF reader runs pyodide to parse underwater drone mission files in the browser https://isaacgerg.github.io/remus-rlf-reader/webapp/", "context": "", "use_case": "Python in browser", "switched_from": "", "story": "Pyodide: a Python distribution based on WebAssembly"}, {"id": 758550640, "item_id": 47409415, "url": "https://news.ycombinator.com/item?id=47409415", "by": "fzumstein", "date": "2026-03-16", "stance": "neutral", "quote": "Pyodide powers xlwings Lite", "excerpt": "Pyodide powers xlwings Lite, a free Excel add-in that you can install from Excel\u2019s add-in store with a single click. It outperforms Microsoft\u2019s official Python in Excel solution in every coceivable way: price, privacy, speed, can install packages, can access the internet, can access local files, doesn\u2019t have a usage quota, can automate Excel and create native UDFs. See https://lite.xlwings.org", "context": "", "use_case": "", "switched_from": "", "story": "Pyodide: a Python distribution based on WebAssembly"}, {"id": 758549264, "item_id": 47409329, "url": "https://news.ycombinator.com/item?id=47409329", "by": "cfu28", "date": "2026-03-16", "stance": "recommend", "quote": "It worked surprisingly well!", "excerpt": "I played around with it to build a little \"intro to python\" walkthrough on my blog a while back. It worked surprisingly well! I had a little trouble giving users the ability to ctrl-c if they accidentally wrote an infinite loop though lol (piodide supports it I just didn't implement it): https://cfu288.com/blog/2024-05_cwc-intro-to-python/", "context": "", "use_case": "in-browser Python walkthrough", "switched_from": "", "story": "Pyodide: a Python distribution based on WebAssembly"}, {"id": 758546096, "item_id": 47409131, "url": "https://news.ycombinator.com/item?id=47409131", "by": "jasiek", "date": "2026-03-16", "stance": "neutral", "quote": "I've used it to put together a browser app to program walkie-talkies: https://codeplug.org", "excerpt": "I've used it to put together a browser app to program walkie-talkies: https://codeplug.org", "context": "", "use_case": "Browser-based Python apps", "switched_from": "", "story": "Pyodide: a Python distribution based on WebAssembly"}, {"id": 758538992, "item_id": 47408687, "url": "https://news.ycombinator.com/item?id=47408687", "by": "simonw", "date": "2026-03-16", "stance": "recommend", "quote": "I've done some experiments along those lines with Pyodide in Deno", "excerpt": "I've done some experiments along those lines with Pyodide in Deno: https://til.simonwillison.net/deno/pyodide-sandbox", "context": "", "use_case": "Sandboxing code for agents", "switched_from": "", "story": "Pyodide: a Python distribution based on WebAssembly"}, {"id": 758538881, "item_id": 47408680, "url": "https://news.ycombinator.com/item?id=47408680", "by": "devsda", "date": "2026-03-16", "stance": "neutral", "quote": "Xeus-cpp and pyodide are the backends for Jupyterlite", "excerpt": "There's also xeus-cpp which is cpp based on wasm. Xeus-cpp and pyodide are the backends for Jupyterlite [1] kernels in browser. It's actually a very good way to teach coding in python/c++(11, 17 or even 23), explore language features or your own library within browser and allow students to execute code by hosting just some static html pages and some assets without any backend. 1. https://jupyter.org/try-jupyter/lab/", "context": "", "use_case": "", "switched_from": "", "story": "Pyodide: a Python distribution based on WebAssembly"}, {"id": 758538784, "item_id": 47408674, "url": "https://news.ycombinator.com/item?id=47408674", "by": "simonw", "date": "2026-03-16", "stance": "recommend", "quote": "Pyodide is one of the hidden gems of the Python ecosystem. It's SO good at what it does", "excerpt": "Pyodide is one of the hidden gems of the Python ecosystem. It's SO good at what it does, and it's nearly 8 years old now so it's pretty mature. I love using Pyodide to build web UIs for trying out new Python libraries. Here's one I built a few weeks ago to exercise my pure-Python SQLite AST parser, for example: https://tools.simonwillison.net/sqlite-ast It's also pretty easy[1] to get C or Rust libraries that have Py", "context": "", "use_case": "Python in the browser", "switched_from": "", "story": "Pyodide: a Python distribution based on WebAssembly"}, {"id": 758538048, "item_id": 47408628, "url": "https://news.ycombinator.com/item?id=47408628", "by": "QuadmasterXLII", "date": "2026-03-16", "stance": "warn", "quote": "once you bring them on board pyodide load times are long", "excerpt": "It works surprisingly well in terms of writing python for native execution, and then trying to share on the web and having it Just Work TM. Unfortunately, when I want python it's because I want numpy, scipy and friends, and once you bring them on board pyodide load times are long. As an example comparison: a face turning octahedron puzzle in python + pyodide, loads in 10 seconds https://cubes.hgreer.com/fto.html . Me", "context": "", "use_case": "Python in browser", "switched_from": "", "story": "Pyodide: a Python distribution based on WebAssembly"}, {"id": 754961680, "item_id": 47185105, "url": "https://news.ycombinator.com/item?id=47185105", "by": "simonw", "date": "2026-02-27", "stance": "neutral", "quote": "Pyodide has one", "excerpt": "I disagree with this section about WebAssembly: > But the practical limitation is language support. You cannot run arbitrary Python scripts in WASM today without compiling the Python interpreter itself to WASM along with all its C extensions. For sandboxing arbitrary code in arbitrary languages, WASM is not yet viable. There are several versions of the Python interpreter that are compiled to WASM already - Pyodide ha", "context": "", "use_case": "", "switched_from": "", "story": "Let's Discuss Sandbox Isolation"}, {"id": 751894610, "item_id": 46993413, "url": "https://news.ycombinator.com/item?id=46993413", "by": "aeyes", "date": "2026-02-12", "stance": "neutral", "quote": "The generated script just downloads the sources and runs pyodide", "excerpt": "What do you mean? The generated script just downloads the sources and runs pyodide: https://github.com/simonw/research/blob/main/cysqlite-wasm-wheel/build.sh There is maybe 5 relevant lines in the script and nothing complex at all that would require to run for days.", "context": "", "use_case": "", "switched_from": "", "story": "GPT\u20115.3\u2011Codex\u2011Spark"}, {"id": 750766928, "item_id": 46922933, "url": "https://news.ycombinator.com/item?id=46922933", "by": "johndough", "date": "2026-02-07", "stance": "recommend", "quote": "here is Python compiled to WASM", "excerpt": "Not sure if this is what you are looking for, but here is Python compiled to WASM: https://pyodide.org/en/stable/ Web demo: https://pyodide.org/en/stable/console.html", "context": "", "use_case": "Python in browser (WASM)", "switched_from": "", "story": "Python interpreter written in Rust for use by AI"}, {"id": 750719505, "item_id": 46919969, "url": "https://news.ycombinator.com/item?id=46919969", "by": "shoeb00m", "date": "2026-02-06", "stance": "recommend", "quote": "the type safety/security issues can hopefully be mitigated by ty and pyodide", "excerpt": "A big benefit of letting agents run code is they can process data without bloating their context. LLMs are really good at writing python for data processing. I would suspect its due to Python having a really good ecosystem around this niche And the type safety/security issues can hopefully be mitigated by ty and pyodide (already used by cf\u2019s python workers) https://pyodide.org/en/stable/ https://github.com/astral-sh/", "context": "", "use_case": "Python in WebAssembly", "switched_from": "", "story": "Python interpreter written in Rust for use by AI"}, {"id": 750197410, "item_id": 46887338, "url": "https://news.ycombinator.com/item?id=46887338", "by": "edwardeechoud", "date": "2026-02-04", "stance": "neutral", "quote": "runs Pyodide + Polars client-side", "excerpt": "I\u2019m a data engineer who started on Alteryx before moving to Python, and I kept missing one thing: being able to click any step in a pipeline and immediately see what my data looked like. That frustration turned into Flowfile, a visual data pipeline tool that runs entirely in your browser using WASM. You can drag and drop transformations, preview your data at every step, and export clean, standalone Python code. There", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Flowfile \u2013 Visual data pipeline editor (WASM and Polars)"}, {"id": 749970464, "item_id": 46873154, "url": "https://news.ycombinator.com/item?id=46873154", "by": "simonw", "date": "2026-02-03", "stance": "recommend", "quote": "You can run libraries like Pandas in WebAssembly in Pyodide", "excerpt": "You can run libraries like Pandas in WebAssembly in Pyodide - in fact Pandas works already. Here's a demo I built with it a while ago: https://tools.simonwillison.net/pyodide-bar-chart It's not too hard to compile a C extension for Python to a WebAssembly and bundle that in a .so file in a wheel. I did an experiment with that the other day: https://github.com/simonw/tiny-haversine?tab=readme-ov-file#build-pyodide-whe", "context": "", "use_case": "Running Python in WebAssembly", "switched_from": "", "story": "Show HN: Sandboxing untrusted code using WebAssembly"}, {"id": 749262385, "item_id": 46828899, "url": "https://news.ycombinator.com/item?id=46828899", "by": "vimota", "date": "2026-01-30", "stance": "neutral", "quote": "", "excerpt": "Thanks for taking a look and the feedback! We run the shim with internet access (https://github.com/coplane/localsandbox/blob/main/localsandbox/shim/deno.json#L7) but the pyodide sandbox itself doesn't run with internet access : https://github.com/coplane/localsandbox/blob/main/localsandbox/shim/src/python.ts#L139", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Amla Sandbox \u2013 WASM bash shell sandbox for AI agents"}]}