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

NotificationsYou must be signed in to change notification settings

coolcoder613eb/RustPython

Repository files navigation

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

Build StatusLicense: MIT

Usage

To test RustPython, do the following:

$ git clone https://github.com/RustPython/RustPython$ cd RustPython$ cargo run demo.pyHello, RustPython!

Or use the interactive shell:

$ cargo runWelcome to rustpython>>>>> 2+24

Goals

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

Documentation

Currently the project is in an early phase, and so is the documentation.

You can generate documentation by running:

$ cargo doc

Documentation HTML files can then be found in thetarget/doc directory.

Code organization

  • parser: python lexing, parsing and ast
  • vm: python virtual machine
  • src: using the other subcrates to bring rustpython to life.
  • docs: documentation (work in progress)
  • py_code_object: CPython bytecode to rustpython bytecode convertor (work in progress)
  • wasm: Binary crate and resources for WebAssembly build
  • tests: integration test snippets

Contributing

To start contributing, there are a lot of things that need to be done.Most tasks are listed in theissue tracker.Another approach is to checkout the sourcecode: builtin functions and object methods are often the simplestand easiest way to contribute.

You can also simply runcargo run tests/snippets/todo.py to assist in finding anyunimplemented method.

Testing

To test rustpython, there is a collection of python snippets located in thetests/snippets directory. To run those tests do the following:

$cd tests$ pipenv shell$ pytest -v

There also are some unittests, you can run those will cargo:

$ cargotest --all

Using another standard library

As of now the standard library is under construction.

You can play aroundwith other standard libraries for python. For example,theouroboros library.

To do this, follow this method:

$cd~/GIT$ git clone git@github.com:pybee/ouroboros.git$export PYTHONPATH=~/GIT/ouroboros/ouroboros$cd RustPython$ cargo run -- -c'import statistics'

Compiling to WebAssembly

Setup

Usingrustup add the compile targetwasm32-unknown-emscripten. To do so you will need to haverustup installed.

rustup target add wasm32-unknown-emscripten

Next, installemsdk:

curl https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz| tar -zxvcd emsdk-portable/./emsdk update./emsdk install sdk-incoming-64bit./emsdk activate sdk-incoming-64bitsource ./emsdk_env.sh

Build

Move into thewasm directory. This contains a custom binary crate optimized for a web assembly build.

cd wasm

From here run the build. This can take several minutes depending on the machine.

cargo build --target=wasm32-unknown-emscripten --release

Upon successful build, the following files will be available:

target/wasm32-unknown-emscripten/release/rustpython_wasm.wasmtarget/wasm32-unknown-emscripten/release/rustpython_wasm.js
  • rustpython_wasm.wasm: the wasm build for rustpython. It includes both an parser and virtual machine.
  • rustpython_wasm.js: the loading scripts for the above wasm file.

You will also findindex.html in thewasm directory.From here, you can copy these 3 files into the static assets directory of your web server and you should beable to see the ouput in the web console of your browser.

Hello RustPython!

Code style

The code style used is the default rustfmt codestyle. Please format your code accordingly.

Community

Chat with us ongitter.

Credit

The initial work was based onwindelbouwman/rspython andshinglyu/RustPython

Links

These are some useful links to related projects:

About

A Python Interpreter written in Rust

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C70.3%
  • Rust24.9%
  • Python4.6%
  • JavaScript0.2%
  • EJS0.0%
  • CSS0.0%

[8]ページ先頭

©2009-2025 Movatter.jp