Show HN: Brython is an implementation of Python 3 running in the browser

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Collect and Analyze Billions of Data Points in Real Time
  • Sonar - Write Clean Python Code. Always.
  • Mergify - Tired of breaking your main and manually rebasing outdated pull requests?
  • pyodide

    Pyodide is a Python distribution for the browser and Node.js based on WebAssembly

    That’s already pretty much the case. Python has been though it’s not fast and the stack size limit is problematic. https://github.com/pyodide/pyodide

    Pyodide is used in https://jupyterlite.readthedocs.io/

    Maybe things will improve with web assembly GC, though it will require work to port GC languages to it.

  • brython

    Brython (Browser Python) is an implementation of Python 3 running in the browser

  • InfluxDB

    Collect and Analyze Billions of Data Points in Real Time. Manage all types of time series data in a single, purpose-built database. Run at any scale in any environment in the cloud, on-premises, or at the edge.

  • jupyterlite

    Wasm powered Jupyter running in the browser 💡

  • brip

    brip stands for Brython's pip. It brings the Python packages ecosystem and the pip-like workflow to Brython-powered projects.

  • Transcrypt

    Python 3.9 to JavaScript compiler - Lean, fast, open! -

    I found this article and associated presentation to be a great overview of the options for this kind of thing: https://anvil.works/blog/python-in-the-browser-talk

    Transcrypt's (https://github.com/QQuick/Transcrypt) approach made the most sense to me. It seems to be a heroic effort by one guy.

  • munch

    A Munch is a Python dictionary that provides attribute-style access (a la JavaScript objects).

    https://github.com/Infinidat/munch

    In theory implementing attribute-style access on user-defined Python object is just a matter of overriding its __(get|set)attr__ methods, for example:

        In [1]: import collections

  • krustlet

    Kubernetes Rust Kubelet

    I don't think Webassembly will ever replace Javascript in the browser. Javascript has a low barrier of entry and if you are creating React/Angular sites there's little to gain from Webassembly for someone not interested in safer languages.

    Saying that I am really interested in Webassembly and think the word web in Webassembly does it a disservice.

    I have started to think of Webassembly as a light weight JVM. It's heavy sandboxing makes it really interesting as an evolution to FaaS (Function as a service) such as AWS Lambda. Lucet which Fastly is using for their Compute@Edge reports 35 micro second code start time! I can't wait until Fasly put there Compute@Edge on general release so I can try it. I've been playing with Cloudflare workers and as they us Chrome to run WASM files you have to mess about writing Javascript shims so a bit rough around the edges debugging.

    Webassembly should realise the original goals of serverless providing a cross platform runtime with security guarantees and be fast and lightweight.

    Most people package an entire OS in Docker containers, with WASM they get a small cross platform artifact. This project already looks like a way to run them in K8s https://github.com/deislabs/krustlet.

    It also looks great for cross platform media devices. Have the bulk of your code as a WASM binary and then have very thin platform specific shim the WASM interacts with.

  • Sonar

    Write Clean Python Code. Always.. Sonar helps you commit clean code every time. With over 225 unique rules to find Python bugs, code smells & vulnerabilities, Sonar finds the issues while you focus on the work.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts