A faster and highly-compatible implementation of the Python programming language.

Overview

Pyston

Pyston is a fork of CPython 3.8.8 with additional optimizations for performance. It is targeted at large real-world applications such as web serving, delivering up to a 30% speedup with no development work required.

Blog

Website

Mailing list

Discord

Techniques

We plan on explaining our techniques in more detail in future blog posts, but the main ones we use are:

  • A very-low-overhead JIT using DynASM
  • Quickening
  • Aggressive attribute caching
  • General CPython optimizations
  • Build process improvements

Docker images

We have some experimental docker images on DockerHub with Pyston pre-installed, you can quickly try out Pyston by doing

docker run -it pyston/pyston

You could also attempt to use this as your base image, and python will be provided by Pyston.

The default image contains quite a few libraries for compiling extension modules, and if you'd like a smaller image we also have a pyston/slim version that you can use.

These have not been heavily tested, so if you run into any issues please report them to our tracker.

Checking for Pyston at runtime

Our current recommended way to see if your Python code is running on Pyston is to do hasattr(sys, "pyston_version_info").

Installing packages

Pyston is API compatible but not ABI compatible with CPython. This means that C extensions will work, but they need to be recompiled.

Typically with Python one will download and install pre-compiled packages, but with Pyston there are currently not pre-compiled packages available (we're working on that) so the compilation step will run when you install them. This means that you may run into problems installing packages on Pyston when they work on CPython: the same issues you would have trying to recompile these packages for CPython.

Many packages have build-time dependencies that you will need to install to get them to work. For example to pip install cryptography you need a Rust compiler, such as by doing sudo apt-get install rustc.

Building Pyston

Build dependencies

First do

git submodule update --init pyston/llvm pyston/bolt pyston/LuaJIT pyston/macrobenchmarks

Pyston has the following build dependencies:

sudo apt-get install build-essential ninja-build git cmake clang libssl-dev libsqlite3-dev luajit python3.8 zlib1g-dev virtualenv libjpeg-dev linux-tools-common linux-tools-generic linux-tools-`uname -r`

Extra dependencies for running the test suite:

sudo apt-get install libwebp-dev libjpeg-dev python3.8-gdbm python3.8-tk python3.8-dev tk-dev libgdbm-dev libgdbm-compat-dev liblzma-dev libbz2-dev nginx rustc

Extra dependencies for producing Pyston debian packages and portable directory release:

sudo apt-get install dh-make dh-exec debhelper patchelf

Building

For a build with all optimizations enabled (LTO+PGO) run:

make -j`nproc`

An initial build will take quite a long time due to having to build LLVM twice, and subsequent builds are faster but still slow due to extra profiling steps.

A symlink to the final binary will be created with the name pyston3

For a quicker build during development run:

make unopt -j`nproc`

the generated executable can be found inside build/unopt_install/

Running a python file called script.py with pyston can be easily done via:

make script_unopt

or

make script_opt

Changing the version number

  1. adjust VERSION in pyston/tools/make_release.sh and pyston/tools/bench_release.sh
  2. add a pyston/debian/changelog entry (make sure the date is correct or the build fails in odd ways)
  3. adjust PYSTON_*_VERSION inside Include/patchlevel.h
  4. adjust PYSTON_VERSION inside configure.ac and run autoconf
  5. update PYSTON_MINOR and similar inside Makefile
  6. update the include directory in pyston/pystol/CMakeLists.txt
  7. update pyston/debian/pyston.{install,links,postinst,prerm}
  8. update pyston/docker/Dockerfile and pyston/docker/build_docker.sh

Release packaging

We use a script which builds automatically packages for all supported distributions via docker (will take several hours): NOTE: our release build process requires hardware with LBR (last branch record) support (=non virtualized Intel CPU).

  1. make sure your repos do not contain unwanted changes because they will get used to build the packages
  2. execute $ pyston/tools/make_release.sh
  3. output debian packages are now in release/ / . Inside this directory are also different "portable dir" releases made from the different distibution deb packages. Decide on which portable dir to use - the oldest version will run with most dists but will also bundle the oldes libs.
  4. execute $ make tune; pyston/tools/bench_release.sh to generate benchmark results.
Comments
  • `platform.python_implementation()` returns

    `platform.python_implementation()` returns "CPython"

    In Pyston 2.2:

    $ python
    Python 3.8.8 (heads/rel2.2:6287d61, Apr 29 2021, 15:46:12)
    [Pyston 2.2.0, GCC 9.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    rocky's .pythonrc loaded
    >>> import sys, platform
    >>> platform.python_implementation()
    'CPython'
    >>> "Pyston" in sys.version
    True
    

    The code from v1 could be used though: https://github.com/pyston/pyston_v1/blob/6d392ba7a5882139e8a6ad8bf5165abd5f32f2d3/from_cpython/Lib/platform.py#L1465

    opened by rocky 22
  • Improve Dockerfile

    Improve Dockerfile

    • Reduce image size by cleaning the package list after running apt-get (341 -> 309 MB)
    • Use variables and symlink existing symlinks to reduce diff size of future updates
    • Add python symlink
    opened by PLPeeters 13
  • Targeting Python 3.9

    Targeting Python 3.9

    Hi, Thanks for pyston - I was able to run a test suite about 20% faster. It would be great if there was a release for 3.9. PEP-585, made a lot of improvements to pythons type annotations and is part of python 3.9 I had to backport code to work with 3.8 to work with Pyston - it was worth it but it would be nice to not need to.

    Best Regards Stuart

    enhancement 
    opened by stuaxo 13
  • I have tried to do your steps they don't work

    I have tried to do your steps they don't work

    I get

    23:41:16 θ60° [email protected]:~/Projects/python3/pyston $ git submodule update --init pyston/llvm pyston/bolt/bolt pyston/bolt/llvm pyston/LuaJIT pyston/macrobenchmarks
    fatal: not a git repository (or any of the parent directories): .git
    

    I guess I need to clone the pyston git hub first but I cannot get the link what gives

    I was following https://github.com/pyston/pyston#readme

    opened by grizzlysmit 11
  • use LOAD_GLOBAL cache for some LOAD_NAMEs

    use LOAD_GLOBAL cache for some LOAD_NAMEs

    this allows us to cache stuff in a repl session and at module scope e.g.

    def f():
        return 42
    for x in range(100000):
        f() # we now cache the "f" lookup here
    
    opened by undingen 8
  • fix memory leak in PyLong_FromString

    fix memory leak in PyLong_FromString

    We forgot to decref a value in the error path of this function. It's easily reproducible by:

    for i in range(1000000):
        try:
            int("ca4b9344", 10)
        except:
            pass
    

    This fixes #149

    opened by undingen 8
  • How can I install Pytorch?

    How can I install Pytorch?

    Hello,

    I’m using Pyston for the AI scripts, but I've got some errors during the install Pytorch 1.8.0 package.

    The error is “wheel is not supported on this platform”. I upgraded the wheel and pip but I failed.

    I am using Debian 10 amd64 architecture. Pyston is 2.3.1.

    opened by enesgur 8
  • Can Pyston run uvicorn server?

    Can Pyston run uvicorn server?

    I'm building a Web API using FastAPI framework. It used uvicorn as a server to run the application. Can Pyston run uvicorn server? I'm not sure because I'm getting this error.

    uvicorn main:app --reload                                                                                        
    INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
    INFO:     Started reloader process [31274] using watchgod
    Traceback (most recent call last):
      File "/home/emadmokhtar/.pyenv/versions/fastapi-pyston/bin/uvicorn", line 8, in <module>
        sys.exit(main())
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/envs/fastapi-pyston/lib/pyston3.8/site-packages/click/core.py", line 1137, in __call__
        return self.main(*args, **kwargs)
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/envs/fastapi-pyston/lib/pyston3.8/site-packages/click/core.py", line 1062, in main
        rv = self.invoke(ctx)
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/envs/fastapi-pyston/lib/pyston3.8/site-packages/click/core.py", line 1404, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/envs/fastapi-pyston/lib/pyston3.8/site-packages/click/core.py", line 763, in invoke
        return __callback(*args, **kwargs)
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/envs/fastapi-pyston/lib/pyston3.8/site-packages/uvicorn/main.py", line 371, in main
        run(app, **kwargs)
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/envs/fastapi-pyston/lib/pyston3.8/site-packages/uvicorn/main.py", line 388, in run
        ChangeReload(config, target=server.run, sockets=[sock]).run()
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/envs/fastapi-pyston/lib/pyston3.8/site-packages/uvicorn/supervisors/basereload.py", line 43, in run
        self.startup()
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/envs/fastapi-pyston/lib/pyston3.8/site-packages/uvicorn/supervisors/basereload.py", line 64, in startup
        self.process.start()
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/lib/pyston3.8/multiprocessing/process.py", line 121, in start
        self._popen = self._Popen(self)
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/lib/pyston3.8/multiprocessing/context.py", line 284, in _Popen
        return Popen(process_obj)
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/lib/pyston3.8/multiprocessing/popen_spawn_posix.py", line 32, in __init__
        super().__init__(process_obj)
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/lib/pyston3.8/multiprocessing/popen_fork.py", line 19, in __init__
        self._launch(process_obj)
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/lib/pyston3.8/multiprocessing/popen_spawn_posix.py", line 39, in _launch
        from . import resource_tracker
      File "/home/emadmokhtar/.pyenv/versions/pyston-2.2/lib/pyston3.8/multiprocessing/resource_tracker.py", line 38, in <module>
        import _posixshmem
    ImportError: /home/emadmokhtar/.pyenv/versions/pyston-2.2/lib/pyston3.8/lib-dynload/../../../lib/librt.so.1: undefined symbol: __clock_nanosleep, version GLIBC_PRIVATE
    
    opened by EmadMokhtar 8
  • Use pyston along side or instead of pyston3

    Use pyston along side or instead of pyston3

    The current command to execute pyston is currently pyston3.

    I understand that this is done to mirror python itself, but creating a second symlink named pyston or replacing the pyston3 symlink may be a better option, as there is no version of pyston that is using that symlink, unlike the python symlink which is used by py 2.

    opened by AverageComet250 8
  • CI: run external testsuites

    CI: run external testsuites

    This significantly enhances our CI tests. And should make it much less likely for regressions to sneak in.

    • add new non conda build job which uses regular unopt non-conda build but with ubuntus llvm libs
      • needs to run inside own docker image so we can control exactly what dependencies get installed
      • could not use the conda job because of dependency issues while installing the dependencies for the external tests.
      • we are building own ubuntu 20.04 based image because some tests fail when run as root and I found this the easiest and cleanest solution
    • moved test_numpy to the EXTERNAL_TESTSUITES
    • only run the external testsuites with default JIT flags to reduce build time
    • test_numpy failed for me. It seemed the usercustomize.py script did not get run so I switched to putting in a .pth file

    Runtime seems to be about 2h15min - will update when all CI jobs have finished

    opened by undingen 7
  • pyston-lite-autoload is missing a wheel

    pyston-lite-autoload is missing a wheel

    Hi,

    thanks for the great new way of leveraging Pyston optimization via the new packages pyston-lite and pyston-lite-autoload 🚀

    When I tried to install the autoload package in a fresh venv it will result in following error

    pip install pyston-lite-autoload==2.3.4.1
    Collecting pyston-lite-autoload==2.3.4.1
      Downloading pyston_lite_autoload-2.3.4.1.tar.gz (1.3 kB)
      Preparing metadata (setup.py) ... done
    Collecting pyston_lite==2.3.4.1
      Downloading pyston_lite-2.3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (466 kB)
         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 466.1/466.1 KB 7.0 MB/s eta 0:00:00
    Using legacy 'setup.py install' for pyston-lite-autoload, since package 'wheel' is not installed.
    Installing collected packages: pyston_lite, pyston-lite-autoload
      Running setup.py install for pyston-lite-autoload ... error
      error: subprocess-exited-with-error
      
      × Running setup.py install for pyston-lite-autoload did not run successfully.
      │ exit code: 1
      ╰─> [6 lines of output]
          usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
             or: setup.py --help [cmd1 cmd2 ...]
             or: setup.py --help-commands
             or: setup.py cmd --help
          
          error: option --single-version-externally-managed not recognized
          [end of output]
      
      note: This error originates from a subprocess, and is likely not a problem with pip.
    error: legacy-install-failure
    
    × Encountered error while trying to install package.
    ╰─> pyston-lite-autoload
    

    it looks like this package has no wheel uploaded to pypi. I tried to figure out, how you create and upload the package, but couldn't find the script for it.

    opened by gruebel 6
  • Recursive call causes segmentation fault  when building a weakref

    Recursive call causes segmentation fault when building a weakref

    The follow program describe a case of a recursive call. This recursive call occurs after building a weakref, then it crashes pyston and causes a segmentation fault.

    test.py

    import weakref
    
    class Object:
    
        def __init__(self, arg):
            self.arg = arg
    
    def test_set_callback_attribute():
        x = Object(1)
        callback = lambda ref: None
        callback = weakref.ref(callback, x)
        with test_set_callback_attribute():
            pass
    test_set_callback_attribute()
    

    Behavior on CPython 3.10.8:

    >> python3.10 test.py
    ........
        test_set_callback_attribute()
      File "/home/xxm/Desktop/test.py", line 12, in test_set_callback_attribute
        test_set_callback_attribute()
      File "/home/xxm/Desktop/test.py", line 12, in test_set_callback_attribute
        test_set_callback_attribute()
      File "/home/xxm/Desktop/test.py", line 12, in test_set_callback_attribute
        test_set_callback_attribute()
      [Previous line repeated 994 more times]
      File "/home/xxm/Desktop/test.py", line 9, in test_set_callback_attribute
        x = Object(1)
    RecursionError: maximum recursion depth exceeded
    

    Behavior on pyston:

    >> pyston test.py
    ......
    TypeError: 'Object' object is not callable
    Exception ignored in: <__main__.Object object at 0x41fa7970>
    Traceback (most recent call last):
      File "/home/xxm/Desktop/test.py", line 11, in test_set_callback_attribute
        callback = weakref.ref(callback, x)
    TypeError: 'Object' object is not callable
    Exception ignored in: <__main__.Object object at 0x41fa79d0>
    Traceback (most recent call last):
      File "/home/xxm/Desktop/test.py", line 11, in test_set_callback_attribute
        callback = weakref.ref(callback, x)
    TypeError: 'Object' object is not callable
    Exception ignored in: <__main__.Object object at 0x41fa7a30>
    Traceback (most recent call last):
      File "/home/xxm/Desktop/test.py", line 11, in test_set_callback_attribute
    Segmentation fault (core dumped)
    
    

    Test Environment: Pyston: Python 3.8.12 (remotes/origin/release_2.3.5:4b858b5062) [Pyston 2.3.5, GCC 9.4.0] on linux Operating System: Ubuntu 18.04

    opened by xiaxinmeng 1
  • Recursively calling a function in 'try' branch cause core dumped

    Recursively calling a function in 'try' branch cause core dumped

    The following code recursively call a function foo() in try branch. Then it causes the core dumped on pyston.

    test.py

    def foo():
             try:
                foo()
             except Exception as e:
                pass
    foo()
    

    Behavior on CPython 3.10.8: work well

    Behavior on pyston:

    >> pyston test.py
    ...
      File "/home/xxm/Desktop/test.py", line 4 in foo
      File "/home/xxm/Desktop/test..py", line 4 in foo
      File "/home/xxm/Desktop/test..py", line 4 in foo
      File "/home/xxm/Desktop/test.", line 4 in foo
      File "/home/xxm/Desktop/test.", line 4 in foo
      File "/home/xxm/Desktop/test.", line 4 in foo
      ...
    Aborted (core dumped)
    

    Test Environment: Pyston: Python 3.8.12 (remotes/origin/release_2.3.5:4b858b5062) [Pyston 2.3.5, GCC 9.4.0] on linux Operating System: Ubuntu 18.04

    opened by xiaxinmeng 0
  • Use a cleared index crashes

    Use a cleared index crashes

    The following 'test.py' shows an example that referencing a cleared list index crashes pyston. This example does not crashes CPython, just reports an IndexError.

    test.py

    import pickle
    import io
    
    class P(pickle.Pickler):
        def persistent_id(self, obj):
            if obj is a[0]:
                a.clear()
            return None
    
    a = [[[[]]]]
    P(io.BytesIO()).dump(a)
    

    Behavior on CPython3.10.8

    >> python3.10 test.py
    Traceback (most recent call last):
      File "/home/xxm/Desktop/test.py", line 11, in <module>
        P(io.BytesIO()).dump(a)
      File"/home/xxm/Desktop/test.py", line 6, in persistent_id
        if obj is a[0]:
    IndexError: list index out of range
    

    Behavior on pyston:

    >> pyston test.py
    Traceback (most recent call last):
      File "/home/xxm/Desktop/test.py", line 11, in <module>
        P(io.BytesIO()).dump(a)
      File"/home/xxm/Desktop/test.py", line 6, in persistent_id
        if obj is a[0]:
    IndexError: list index out of range
    Segmentation fault (core dumped)
    

    Test Environment: Pyston: Python 3.8.12 (remotes/origin/release_2.3.5:4b858b5062) [Pyston 2.3.5, GCC 9.4.0] on linux Operating System: Ubuntu 18.04

    opened by xiaxinmeng 0
  • Throwing an exception class crashes pyston

    Throwing an exception class crashes pyston

    In the follow, we define a function 'a()' then call a function 'throw()' to throw an exception class. Pyston crashes with segmentation fault.

    test.py

    class E(Exception):
        def __new__( *args):
            pass
    
    def a():
        yield
    a().throw(E)
    
    

    Behavior on Pyston Segmentation fault (core dumped)

    Behaviors on CPython 3.10.8:

    Traceback (most recent call last):
      File "/home/xxm/Desktop/test.py", line 8, in <module>
        a().throw(E)
      File "/home/xxm/Desktop/test.py", line 6, in a
        def a():
    TypeError: calling <class '__main__.E'> should have returned an instance of BaseException, not type
    

    Test Environment: Pyston: Python 3.8.12 (remotes/origin/release_2.3.5:4b858b5062) [Pyston 2.3.5, GCC 9.4.0] on linux Operating System: Ubuntu 18.04

    opened by xiaxinmeng 0
  • Failing to write a object with shelve module produces crashes on pyston

    Failing to write a object with shelve module produces crashes on pyston

    See the following example 'test.py'. We create an object Test() then store it into a shelve object 'store'. The storing process fails and it crashes pyston

    test.py

    import shelve
    
    store = shelve.open("/tmp/a.db", writeback=True)
    
    class Test(object):
        pass
    
    def main():
        store["a"] = Test()
    
    main()
    

    Behavior on Pyston:

    Segmentation fault (core dumped)

    Behavior on CPython3.9.2

    Exception ignored in: <function Shelf.__del__ at 0x7f40e1442480>
    Traceback (most recent call last):
      File "/usr/local/lib/python3.11/shelve.py", line 162, in __del__
      File "/usr/local/lib/python3.11/shelve.py", line 144, in close
      File "/usr/local/lib/python3.11/shelve.py", line 168, in sync
      File "/usr/local/lib/python3.11/shelve.py", line 124, in __setitem__
    ImportError: sys.meta_path is None, Python is likely shutting down
    

    Test Environment: Pyston: Python 3.8.12 (remotes/origin/release_2.3.5:4b858b5062) [Pyston 2.3.5, GCC 9.4.0] on linux Operating System: Ubuntu 18.04

    opened by xiaxinmeng 0
Releases(pyston_2.3.5)
Rust syntax and lexical analyzer implemented in Python.

Rust Scanner Rust syntax and lexical analyzer implemented in Python. This project was made for the Programming Languages class at ESPOL (SOFG1009). Me

Joangie Marquez 0 Jul 03, 2022
Python for .NET is a package that gives Python programmers nearly seamless integration with the .NET Common Language Runtime (CLR) and provides a powerful application scripting tool for .NET developers.

pythonnet - Python.NET Python.NET is a package that gives Python programmers nearly seamless integration with the .NET Common Language Runtime (CLR) a

3.5k Jan 06, 2023
x86-64 assembler embedded in Python

Portable Efficient Assembly Code-generator in Higher-level Python (PeachPy) PeachPy is a Python framework for writing high-performance assembly kernel

Marat Dukhan 1.7k Jan 03, 2023
Cython plugin for Lark, reimplementing the LALR parser & lexer for better performance

Lark-Cython Cython plugin for Lark, reimplementing the LALR parser & lexer for better performance on CPython. Install: pip install lark-cython Usage:

Lark - Parsing Library & Toolkit 31 Dec 26, 2022
Core Python libraries ported to MicroPython

This is a repository of libraries designed to be useful for writing MicroPython applications.

MicroPython 1.8k Jan 07, 2023
wxPython's Project Phoenix. A new implementation of wxPython, better, stronger, faster than he was before.

wxPython Project Phoenix Introduction Welcome to wxPython's Project Phoenix! Phoenix is the improved next-generation wxPython, "better, stronger, fast

1.9k Jan 07, 2023
A mini implementation of python library.

minipy author = RQDYSGN date = 2021.10.11 version = 0.2 1. 简介 基于python3.7环境,通过py原生库和leetcode上的一些习题构建的超小型py lib。 2. 环境 Python 3.7 2. 结构 ${project_name}

RQDYGSN 2 Oct 26, 2021
An implementation of Python in Common Lisp

CLPython - an implementation of Python in Common Lisp CLPython is an open-source implementation of Python written in Common Lisp. With CLPython you ca

Willem Broekema 339 Jan 04, 2023
CPython Extension Module Support for Flit

CPython Extension Module Support for Flit This is a PEP 517 build backend piggybacking (and hacking) Flit to support building C extensions. Mostly a p

Tzu-ping Chung 8 May 24, 2022
The Python programming language

This is Python version 3.10.0 alpha 5 Copyright (c) 2001-2021 Python Software Foundation. All rights reserved. See the end of this file for further co

Python 49.7k Dec 30, 2022
A faster and highly-compatible implementation of the Python programming language.

Pyston Pyston is a fork of CPython 3.8.8 with additional optimizations for performance. It is targeted at large real-world applications such as web se

2.3k Jan 09, 2023
Grumpy is a Python to Go source code transcompiler and runtime.

Grumpy: Go running Python Overview Grumpy is a Python to Go source code transcompiler and runtime that is intended to be a near drop-in replacement fo

Google 10.6k Dec 24, 2022
A faster and highly-compatible implementation of the Python programming language. The code here is out of date, please follow our blog

Pyston is a faster and highly-compatible implementation of the Python programming language. Version 2 is currently closed source, but you can find the

4.9k Dec 21, 2022
The Stackless Python programming language

This is Python version 3.7.0 alpha 4+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 20

Stackless Python 891 Jan 03, 2023
x2 - a miniminalistic, open-source language created by iiPython

x2 is a miniminalistic, open-source language created by iiPython, inspired by x86 assembly and batch. It is a high-level programming language with low-level, easy-to-remember syntaxes, similar to x86

Benjamin 3 Jul 29, 2022
DO NOT USE. Implementation of Python 3.x for .NET Framework that is built on top of the Dynamic Language Runtime.

IronPython 3 IronPython3 is NOT ready for use yet. There is still much that needs to be done to support Python 3.x. We are working on it, albeit slowl

IronLanguages 2k Dec 30, 2022
MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems

The MicroPython project This is the MicroPython project, which aims to put an implementation of Python 3.x on microcontrollers and small embedded syst

MicroPython 15.7k Dec 31, 2022
Pyjion - A JIT for Python based upon CoreCLR

Pyjion Designing a JIT API for CPython A note on development Development has moved to https://github.com/tonybaloney/Pyjion FAQ What are the goals of

Microsoft 1.6k Dec 30, 2022