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

RustPython

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

Build StatusBuild StatuscodecovLicense: MITContributorsGitter

Usage

Check out ouronline demo running on WebAssembly.

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

Disclaimer

RustPython is in a development phase and should not be used in production or a fault intolerant setting.

Our current build supports only a subset of Python syntax.

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

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 an early phase.

You can read theonline documentation for the latest code on master.

You can also generate documentation locally by running:

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

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

If you wish to update the online documentation, push directly to therelease branch (or ask a maintainer to do so). This will trigger a Travis build that updates the documentation and WebAssembly demo page.

Code organization

  • parser/src: python lexing, parsing and ast
  • vm/src: python virtual machine
    • builtins.rs: Builtin functions
    • compile.rs: the python compiler from ast to bytecode
    • obj: python builtin types
  • src: using the other subcrates to bring rustpython to life.
  • docs: documentation (work in progress)
  • py_code_object: CPython bytecode to rustpython bytecode converter (work in progress)
  • wasm: Binary crate and resources for WebAssembly build
  • tests: integration test snippets

Contributing

Contributions are more than welcome, and in many cases we are happy to guide contributors through PRs or on gitter.

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

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

Another approach is to checkout the source code: builtin functions and object methods are often the simplestand easiest way to contribute.

You can also simply run./whats_left.sh 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 install$ pipenv run pytest -v

There also are some unit tests, you can run those with cargo:

$ cargotest --all

Using a standard library

As of now the standard library is under construction. You canuse a standard library by setting the RUSTPYTHONPATH environmentvariable.

To do this, follow this method:

$export RUSTPYTHONPATH=~/GIT/RustPython/Lib$ cargo run -- -c'import xdrlib'

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

Compiling to WebAssembly

See this doc

Code style

The code style used is the defaultrustfmt codestyle. Please format your code accordingly.We also useclippy to detect rust code issues.

Community

Chat with us ongitter.

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:

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