Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A Python Interpreter written in Rust

License

MIT, CC-BY-4.0 licenses found

Licenses found

MIT
LICENSE
CC-BY-4.0
LICENSE-logo
NotificationsYou must be signed in to change notification settings

RustPython/RustPython

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

A Python-3 (CPython >= 3.13.0) Interpreter written in Rust 🐍 😱🤘.

Build StatuscodecovLicense: MITContributorsDiscord Shielddocs.rsCrates.iodependency statusOpen in Gitpod

Usage

Check out ouronline demo running on WebAssembly.

RustPython requires Rust latest stable version (e.g 1.67.1 at February 7th 2023). If you don'tcurrently have Rust installed on your system you can do so by following the instructions atrustup.rs.

To check the version of Rust you're currently running, userustc --version. If you wish to update,rustup update stable will update your Rust installation to the most recent stable release.

To build RustPython locally, first, clone the source code:

git clone https://github.com/RustPython/RustPython

RustPython uses symlinks to manage python libraries inLib/. If on windows, running the following helps:

git config core.symlinkstrue

Then you can change into the RustPython directory and run the demo (Note:--release isneeded to prevent stack overflow on Windows):

$cd RustPython$ cargo run --release demo_closures.pyHello, RustPython!

Or use the interactive shell:

$ cargo run --releaseWelcome to rustpython>>>>> 2+24

NOTE: For windows users, please setRUSTPYTHONPATH environment variable asLib path in project directory.(e.g. When RustPython directory isC:\RustPython, setRUSTPYTHONPATH asC:\RustPython\Lib)

You can also install and run RustPython with the following:

$ cargo install --git https://github.com/RustPython/RustPython rustpython$ rustpythonWelcome to the magnificent Rust Python interpreter>>>>>

If you'd like to make https requests, you can enable thessl feature, whichalso lets you install thepip package manager. Note that on Windows, you mayneed to install OpenSSL, or you can enable thessl-vendor feature instead,which compiles OpenSSL for you but requires a C compiler, perl, andmake.OpenSSL version 3 is expected and tested in CI. Older versions may not work.

Once you've installed rustpython with SSL support, you can install pip byrunning:

cargo install --git https://github.com/RustPython/RustPython --features sslrustpython --install-pip

You can also install RustPython through theconda package manager, thoughthis isn't officially supported and may be out of date:

conda install rustpython -c conda-forgerustpython

WASI

You can compile RustPython to a standalone WebAssembly WASI module so it can run anywhere.

Build

cargo build --target wasm32-wasip1 --no-default-features --features freeze-stdlib,stdlib --release

Run by wasmer

wasmer run --dir`pwd` -- target/wasm32-wasip1/release/rustpython.wasm`pwd`/extra_tests/snippets/stdlib_random.py

Run by wapm

$ wapm install rustpython$ wapm run rustpython>>>>> 2+24

Building the WASI file

You can build the WebAssembly WASI file with:

cargo build --release --target wasm32-wasip1 --features="freeze-stdlib"

Note: we use thefreeze-stdlib to include the standard library inside the binary. You also have to run oncerustup target add wasm32-wasip1.

JIT (Just in time) compiler

RustPython has avery experimental JIT compiler that compile python functions into native code.

Building

By default the JIT compiler isn't enabled, it's enabled with thejit cargo feature.

cargo run --features jit

This requires autoconf, automake, libtool, and clang to be installed.

Using

To compile a function, call__jit__() on it.

deffoo():a=5return10+afoo.__jit__()# this will compile foo to native code and subsequent calls will execute that native codeassertfoo()==15

Embedding RustPython into your Rust Applications

Interested in exposing Python scripting in an application written in Rust,perhaps to allow quickly tweaking logic where Rust's compile times would be inhibitive?Thenexamples/hello_embed.rs andexamples/mini_repl.rs may be of some assistance.

Disclaimer

RustPython is in development, and while the interpreter certainly can be usedin interesting use cases like running Python in WASM and embedding into a Rustproject, do note that RustPython is not totally production-ready.

Contribution is more than welcome! See our contribution section for moreinformation on this.

Conference videos

Checkout those talks on conferences:

Use cases

Although RustPython is a fairly young project, a few people have used it tomake cool projects:

  • GreptimeDB: an open-source, cloud-native, distributed time-series database. Using RustPython for embedded scripting.
  • pyckitup: a game engine written inrust.
  • Robot Rumble: an arena-based AI competition platform
  • Ruff: an extremely fast Python linter, written in Rust

Goals

  • Full Python-3 environment entirely in Rust (not CPython bindings)
  • A clean implementation without compatibility hacks

Documentation

Currently along with other areas of the project, documentation is still in anearly phase.

You can read theonline documentation for thelatest release, or theuser guide.

You can also generate documentation locally by running:

cargo doc# Including documentation for all dependenciescargo doc --no-deps --all# Excluding all dependencies

Documentation HTML files can then be found in thetarget/doc directory or you can append--open to the previous commands tohave the documentation open automatically on your default browser.

For a high level overview of the components, see thearchitecture document.

Contributing

Contributions are more than welcome, and in many cases we are happy to guidecontributors through PRs or on Discord. Please refer to thedevelopment guide as well for tips on developments.

With that in mind, please note this project is maintained by volunteers, some ofthe best ways to get started are below:

Most tasks are listed in theissue tracker. Check issueslabeled withgood first issue if you wish to start coding.

To enhance CPython compatibility, try to increase unittest coverage by checking this article:How to contribute to RustPython by CPython unittest

Another approach is to checkout the source code: builtin functions and objectmethods are often the simplest and easiest way to contribute.

You can also simply runuv run python -I whats_left.py to assist in finding any unimplementedmethod.

Compiling to WebAssembly

See this doc

Community

Discord Banner

Chat with us onDiscord.

Code of conduct

Our code of conductcan be found here.

Credit

The initial work was based onwindelbouwman/rspython andshinglyu/RustPython

Links

These are some useful links to related projects:

License

This project is licensed under the MIT license. Please see theLICENSE file for more details.

Theproject logo is licensed under the CC-BY-4.0license. Please see theLICENSE-logo filefor more details.

About

A Python Interpreter written in Rust

Topics

Resources

License

MIT, CC-BY-4.0 licenses found

Licenses found

MIT
LICENSE
CC-BY-4.0
LICENSE-logo

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp