Rust
RustPythonには、Rustの最新の安定バージョンが必要です(例:2022年11月10日の1.65.0)。 Rustのバージョンを確認するには:更新する場合は、.
rustc --version
rustup update stable
RustPython をローカルでビルドするには、次の手順を実行します。
$ git clone https://github.com/RustPython/RustPython $ cd RustPython # --release is needed (at least on windows) to prevent stack overflow $ cargo run --release demo.py Hello, RustPython!
または、対話型シェルを使用します。
$ cargo run --release Welcome to rustpython >>>>> 2+2 4
注:Windowsユーザーの場合は、環境変数をプロジェクトディレクトリのパスとして設定してください。 (例:RustPythonディレクトリが の場合、
RUSTPYTHONPATH
Lib
C:\RustPython
RUSTPYTHONPATH
C:\RustPython\Lib)
次のようにしてRustPythonをインストールして実行することもできます。
$ cargo install --git https://github.com/RustPython/RustPython $ rustpython Welcome to the magnificent Rust Python interpreter >>>>>
(木枠は現在、外出しているため crates.io から引っ張られています 日付のものであり、新しいRustバージョンに基づいて構築されていません。新しいものをリリースしたいと考えています バージョンはすぐに™)
rustpython-*
httpsリクエストを行う場合は、この機能を有効にして、 パッケージマネージャーをインストールすることもできます。Windowsでは、次のことができることに注意してください。 OpenSSLをインストールするか、代わりに機能を有効にする必要があります。 OpenSSLをコンパイルしますが、Cコンパイラ、perl、および.
ssl
pip
ssl-vendor
make
SSLサポート付きのrustpythonをインストールしたら、次の方法でpipをインストールできます ランニング:
$ rustpython --install-pip
パッケージマネージャーからRustPythonをインストールすることもできますが これは公式にサポートされておらず、古くなっている可能性があります。
conda
$ conda install rustpython -c conda-forge $ rustpython
RustPython をスタンドアロンの WebAssembly WASI モジュールにコンパイルして、どこでも実行できるようにすることができます。
建てる
$ cargo build --target wasm32-wasi --no-default-features --features freeze-stdlib,stdlib --release
ワスマーが運営
$ wasmer run --dir . target/wasm32-wasi/release/rustpython.wasm extra_tests/snippets/stdlib_random.py
実行元 wapm
$ wapm install rustpython
$ wapm run rustpython
>>>>> 2+2
4
WebアセンブリWASIファイルは、次のようにしてビルドできます。
cargo build --release --target wasm32-wasi --features="freeze-stdlib"
注:バイナリ内に標準ライブラリを含めるために使用します。あなたも一度実行する必要があります。
freeze-stdlibrustup target add wasm32-wasi
RustPythonには、Python関数をネイティブコードにコンパイルする非常に実験的なJITコンパイラがあります。
既定では、JIT コンパイラは有効になっていませんが、cargo 機能で有効になっています。
jit
$ cargo run --features jit
これには、autoconf、automake、libtool、および clang がインストールされている必要があります。
関数をコンパイルするには、関数を呼び出します。
__jit__()
def foo():
a = 5
return 10 + a
foo.__jit__() # this will compile foo to native code and subsequent calls will execute that native code
assert foo() == 15
Rustで書かれたアプリケーションでPythonスクリプトを公開することに興味があります。 おそらく、Rustのコンパイル時間が阻害されるロジックをすばやく調整できるようにするためですか? その後、いくらかの助けになるかもしれません。
examples/hello_embed.rs
examples/mini_repl.rs
RustPythonは開発中であり、インタプリタは確かに使用できますが WASMでPythonを実行し、Rustに埋め込むなどの興味深いユースケースで プロジェクトでは、RustPythonが完全に本番環境に対応しているわけではないことに注意してください。
貢献は大歓迎です!詳細については、貢献セクションを参照してください これに関する情報。
会議に関するそれらの講演をチェックしてください:
RustPythonはかなり若いプロジェクトですが、少数の人々がそれを使用して クールなプロジェクトを作る:
現在、プロジェクトの他の領域とともに、ドキュメントはまだ 初期段階。
のオンラインドキュメントを読むことができます。 最新リリース、またはユーザーガイド。
次のコマンドを実行して、ローカルでドキュメントを生成することもできます。
$ cargo doc # Including documentation for all dependencies
$ cargo doc --no-deps --all # Excluding all dependencies
ドキュメント HTML ファイルは、ディレクトリにあります。
target/doc
貢献は大歓迎です、そして多くの場合、私たちは喜んで導きます PRまたはDiscordを介した寄稿者。開発のヒントについては、開発ガイドも参照してください。
そのことを念頭に置いて、このプロジェクトはボランティアによって維持されていることに注意してください。 開始するための最良の方法は次のとおりです。
ほとんどのタスクは課題トラッカーにリストされます。問題を確認する コーディングを開始したい場合は、最初の問題でラベル付けされています。
CPythonの互換性を高めるには、この記事をチェックしてユニットテストのカバレッジを増やしてみてください: CPythonユニットテストでRustPythonに貢献する方法
別のアプローチは、ソースコードをチェックアウトすることです:組み込み関数とオブジェクト 多くの場合、メソッドは貢献するための最も簡単で簡単な方法です。
また、単に実行して、未実装を見つけるのを支援することもできます 方式。
./whats_left.py
Discordで私たちとチャットしてください。
当社の行動規範はこちらをご覧ください。
最初の作業は、windelbouwman/rspythonとshinglyu/RustPythonに基づいていました。
これらは、関連プロジェクトへのいくつかの便利なリンクです。
このプロジェクトはMITライセンスの下でライセンスされています。詳細については、LICENSE ファイルを参照してください。
プロジェクトのロゴはCC-BY-4.0の下でライセンスされています ライセンス。ライセンスロゴファイルを参照してください 詳細については。