last_modified: 2026-04-07
※この記事は、生成AIによって自動生成された。
1. 序論:Maturinのアーキテクチャと目的
Maturinは、Rust言語で記述されたコードをPythonの拡張モジュールとしてコンパイルし、パッケージ化するためのビルドシステムである。PyO3やrust-cpython等のバインディングライブラリと連携し、Rustの所有権モデルによる安全性と実行速度をPython環境に統合する目的で使用される。
従来、Pythonの性能クリティカルな処理はCythonやCFFIを用いてC言語で実装されることが多かった。しかしRustの台頭により、メモリ安全性とゼロコスト抽象化を備えた代替手段として、RustベースのPython拡張モジュール開発が現実的な選択肢となりつつある。Maturinはこの文脈において、RustのビルドシステムであるCargoとPythonパッケージングエコシステム(PEP 517/518/621等)の間を橋渡しするツールとして位置づけられる。
本稿では、MaturinのCLIによるビルドプロセスの制御、配布用パッケージの生成手法、および各種オプションの仕様について、事実と公式ドキュメントに基づき体系的に解説する。
1.1 開発パイプラインの基本構造
Maturinの操作は、主に以下の2つのフェーズに大別される。
開発フェーズ(ローカル環境での動作確認)
develop コマンドを用いて、ビルドされた共有ライブラリを現在のPython仮想環境(venv または conda)に直接インストールする。これにより、pip install -e . に相当する開発用インストールが実現される。
maturin develop # デバッグビルド(非最適化、シンボル情報付き)
maturin develop --release # リリースビルド(最適化済み)
デバッグビルドはコンパイル速度が速い反面、実行速度は低下する。--release フラグはCargoの --release オプションに対応し、LLVM最適化が有効化されたバイナリを生成する。実行速度のプロファイル取得や本番環境に近い条件でのテスト時に利用される。
配布フェーズ(パッケージ生成・公開)
build コマンドを用いて、Python Package Index(PyPI)等のリポジトリへアップロードするためのWheel(.whl)ファイルを生成する。デフォルトでは、実行環境のアーキテクチャおよびPythonバージョンに依存したWheelが target/wheels/ ディレクトリに出力される。
maturin build # デバッグビルドのWheel生成
maturin build --release # リリースビルドのWheel生成
maturin publish # ビルド + PyPIへのアップロード
publish コマンドは内部的に build を実行した後、twine 相当のアップロード処理を行う。PyPIのAPIトークンは環境変数 MATURIN_PYPI_TOKEN または ~/.pypirc から読み込まれる。なお、maturin b は maturin build の、maturin dev は maturin develop の短縮エイリアスとして利用できる。
2. 本論:出力制御とソース配布の仕様
ビルド成果物の配置先や生成されるアーカイブの形式は、CLIオプションによって細かく制御される。
2.1 出力ディレクトリ指定(-o / --out)
生成されたWheelファイルやソース配布パッケージの保存先ディレクトリを指定する。CI/CDパイプラインにおいて、アーティファクトの収集場所を固定する際に有用である。
maturin build --release -o dist/
上記の例では、デフォルトの target/wheels/ ではなく、指定した dist/ ディレクトリにバイナリ成果物が配置される。GitHub ActionsやGitLab CI等のパイプラインでは、アーティファクトのアップロードパスを固定するためにこのオプションを明示的に指定するケースが多い。
2.2 ソース配布パッケージ生成(--sdist)
バイナリ形式のWheelに加えて、ソース配布(Source Distribution, sdist)である .tar.gz アーカイブを生成するオプションである。
maturin build --release --sdist -o dist/
# sdistのみを生成する場合
maturin sdist -o dist/
sdistの内容物
sdistにはプラットフォーム固有のバイナリは含まれず、以下のファイル群が収録される。
| ファイル/ディレクトリ | 役割 |
|---|---|
Cargo.toml / Cargo.lock | Rustパッケージマネージャの設定・依存ロック |
src/ | Rustソースコード |
pyproject.toml | Pythonビルドシステム設定(PEP 518) |
PKG-INFO | パッケージメタデータ(PEP 241) |
sdistからのインストールにはユーザー環境にRustツールチェイン(rustc、cargo)が必要となるため、配布先ユーザーの技術水準を考慮した上で採用を判断することが望ましい。sdistは、プラットフォーム対応Wheelが存在しない環境へのフォールバックとしても機能する。
3. CLIオプションの詳細仕様
3.1 コンパイル制御オプション
-r / --release
Cargoのリリースモードを有効にする。LLVMによる最適化(インライン展開、デッドコード除去等)が適用され、デバッグビルドと比較して実行速度が大幅に向上する一方、コンパイル時間は増加する。
-j / --jobs <N>
並列コンパイルジョブ数を指定する。デフォルトはCPU論理コア数と同数である。ビルドサーバーのリソース制約に合わせて調整する場合に使用する。
maturin build --release -j 4
--profile <PROFILE-NAME>
Cargoの任意のビルドプロファイルを指定する。Cargo.toml の [profile.<n>] セクションで定義したカスタムプロファイル(例: profiling、lto 等)を使用できる。--release と --profile は排他的であり、同時に指定することはできない。
# Cargo.toml でのカスタムプロファイル定義例
[profile.profiling]
inherits = "release"
debug = true
maturin build --profile profiling
--target-dir <DIRECTORY>
Cargoが生成するすべての中間成果物(.o ファイル、.rlib 等)の出力先ディレクトリを指定する。デフォルトは target/。ディスクスペースの管理や複数プロジェクトでのキャッシュ共有に利用する。
--timings=<FMTS>
ビルドのタイミング情報を出力する(unstable機能)。html または json 形式を指定でき、コンパイルのボトルネック分析に使用する。
3.2 フィーチャーフラグ制御オプション
CargoのフィーチャーフラグはMaturinからも直接制御できる。これにより、ビルド時に有効化する機能セットを細かく調整することが可能である。
-F / --features <FEATURES>
有効化するCargoフィーチャーをスペースまたはカンマ区切りで指定する。
# pyo3のabi3機能とカスタムフィーチャーを同時に有効化する例
maturin build --release --features "pyo3/abi3-py38,my_feature"
--all-features
Cargo.toml で定義されているすべてのフィーチャーを有効化する。
--no-default-features
デフォルトで有効化されるフィーチャー([features] セクションの default キー)を無効化する。特定の機能のみを選択的に有効化したい場合に --features と組み合わせて使用する。
3.3 バインディング種別の指定(-b / --bindings)
MaturinがRustとPythonの間で使用するバインディングの種類を明示的に指定する。通常はプロジェクトの依存関係から自動検出されるが、自動検出が機能しない場合や特定のバインディングを強制する場合に指定する。
| 値 | 説明 |
|---|---|
pyo3 | PyO3バインディング(最も一般的) |
pyo3-ffi | PyO3のFFI層を直接使用するバインディング |
cffi | C FFIバインディング。cffi Pythonパッケージを介した呼び出し |
uniffi | Mozilla UniFFIバインディング。スキーマ定義ファイルから自動生成 |
bin | Pythonモジュールではなくバイナリとして配布する場合 |
cffi と bin の場合、pyproject.toml の [tool.maturin] セクションで bindings キーを明示的に指定する必要がある。
# pyproject.toml(cffiバインディングの例)
[tool.maturin]
bindings = "cffi"
3.4 インタープリタ指定オプション
-i / --interpreter [<INTERPRETER>...]
Wheelをビルドする対象のPythonインタープリタを実行ファイルのパスまたは名前で指定する。複数指定することで、各バージョン向けのWheelを一括生成できる。
maturin build --release -i python3.9 python3.10 python3.11 python3.12
-f / --find-interpreter
ホストマシンにインストールされているすべてのPythonインタープリタを自動検出し、それぞれに対応したWheelを生成する。CI環境で複数Pythonバージョン向けのWheelを網羅的に生成する際に有用である。
maturin build --release --find-interpreter
3.5 プラットフォーム互換性オプション
--compatibility [<compatibility>...]
生成されるWheelのプラットフォームタグを制御する。
| 値 | 説明 |
|---|---|
manylinux2014 | glibc 2.17以上。現在の最低要件(Rust 1.64以降) |
musllinux_1_2 | musllibc 1.2以上。Alpine Linux等の musl ベース環境向け |
linux | 互換性チェックなし。実行環境を限定する場合 |
pypi | PyPIが受け付けるすべての互換プラットフォームに限定 |
maturin build --release --compatibility manylinux2014
--auditwheel <AUDITWHEEL>
manylinuxコンプライアンスの検査・修正動作を制御する。
| 値 | 説明 |
|---|---|
repair | コンプライアンス違反の共有ライブラリをWheelに同梱して修正 |
check | コンプライアンスの検査のみを行い、修正はしない |
skip | コンプライアンス検査をスキップする |
repair を使用してリンクしている共有ライブラリをWheelに同梱する場合、patchelf が必要となる(pip install maturin[patchelf])。
--zig
ZigコンパイラをCリンカとして使用し、manylinux互換のWheelをホスト環境から直接生成する。事前に pip install maturin[zig](またはシステムへのzig本体のインストール)が必要である。
maturin build --release --target aarch64-unknown-linux-gnu --zig
3.6 ストリップとデバッグ情報
--strip
生成されるバイナリからデバッグシンボルを除去し、ファイルサイズを最小化する。本番配布時のWheelサイズ削減に有効である。--include-debuginfo と同時には使用できない。
--include-debuginfo
デバッグ情報ファイル(Windows: .pdb、macOS: .dSYM、Linux: .dwp)をWheelに同梱する。有効にすると、Maturinは自動的に split-debuginfo=packed を設定して分離デバッグ情報ファイルを生成する。本番環境でのクラッシュ解析やプロファイリングに使用する。
3.7 マニフェスト・ロックファイル制御
-m / --manifest-path <PATH>
使用する Cargo.toml のパスを明示的に指定する。デフォルトではカレントディレクトリまたは親ディレクトリの Cargo.toml が使用される。ワークスペース構成のリポジトリで特定のクレートをビルドする場合に指定する。
maturin build --release -m crates/my_extension/Cargo.toml
--frozen
Cargo.lock およびキャッシュの内容が最新であることを要求する。Cargo.lock が最新でない場合はビルドを失敗させる。再現可能なCIビルドを強制する場合に有用である。
--locked
Cargo.lock の内容のみが最新であることを要求する(キャッシュは対象外)。--frozen より制約が緩い。
--offline
ネットワークへのアクセスなしでビルドを実行する。すべての依存クレートがローカルキャッシュに存在する必要がある。オフライン環境やネットワーク制限のあるCIで使用する。
3.8 出力・診断オプション
-q / --quiet
Cargoのログメッセージを表示しない。CIログを簡潔に保ちたい場合に使用する。
-v / --verbose
詳細なログを出力する。-vv でさらに詳細な(build.rs の出力を含む)ログが表示される。ビルド問題のデバッグに使用する。
--color <WHEN>
出力のカラーリングを制御する。auto(デフォルト)、always、never から選択する。CI環境でANSIエスケープコードが問題になる場合に never を指定する。
--compression-method <COMPRESSION_METHOD>
Wheelアーカイブ(ZIP形式)の圧縮アルゴリズムを指定する。デフォルトは deflated(Deflate圧縮)。
| 値 | 説明 |
|---|---|
deflated | Deflate圧縮(デフォルト。標準的な互換性) |
stored | 無圧縮。解凍速度が最速だがファイルサイズは大きくなる |
zstd | Zstandard圧縮。高い圧縮率と展開速度を両立 |
3.9 develop コマンド固有のオプション
-E / --extras <EXTRAS>
pip install の extras に相当する、オプション依存グループを指定する。pyproject.toml の [project.optional-dependencies] で定義したグループを有効化する。
maturin develop --extras=test,docs
--skip-install
ビルドは行うが、仮想環境へのインストールはスキップし、共有ライブラリをその場(in-place)に生成するのみとする。Python/RustのMixed Layoutプロジェクト(一部のコードがPythonで記述されている場合)でのみ動作する。
--uv
パッケージのインストールに pip ではなく uv を使用する。uv がシステムにインストールされている環境でインストール速度を向上させる場合に指定する。
--pip-path <PIP_PATH>
仮想環境の pip が見つからない場合等に、使用する pip の実行ファイルパスを明示的に指定する。
3.10 CI設定生成コマンド(generate-ci)
MaturinはCI設定ファイルの雛形を自動生成する generate-ci コマンドを提供している。
mkdir -p .github/workflows
maturin generate-ci github > .github/workflows/CI.yml
generate-ci のオプションには以下のものがある。
| オプション | 説明 |
|---|---|
--platform <platform>... | 対象プラットフォームを指定(linux, musllinux, windows, macos, emscripten, all) |
--pytest | pytestを用いたテストステップを追加 |
--zig | クロスコンパイルにZigを使用するよう設定 |
--skip-attestation | アーティファクトのアテステーションステップをスキップ |
-o / --output <PATH> | 出力先ファイルパスを指定(デフォルトは標準出力) |
4. 追加の主要な技術仕様
4.1 PEP 621準拠のメタデータ管理
Maturinは、プロジェクトのメタデータの管理について、以下2種類の構成をサポートしている。
Cargo.toml 単一管理構成
[package.metadata.maturin] セクションにPythonパッケージ固有のメタデータを記述する従来方式。設定ファイルが1つにまとまるという利点がある一方、PythonツールチェインとRustツールチェインの管理が混在する。
pyproject.toml + PEP 621構成
[project] テーブルを用いてPEP 621に準拠した形式でメタデータを記述する方式。pip、build、uv 等の標準的なPythonツールチェインとの統合が容易であり、現在推奨される構成である。Maturin固有の設定(フィーチャー、バインディング種別、manylinux設定等)は [tool.maturin] セクションに記述する。
# pyproject.toml(PEP 621準拠)
[build-system]
requires = ["maturin>=1.0,<2.0"]
build-backend = "maturin"
[project]
name = "example_module"
version = "0.1.0"
requires-python = ">=3.8"
dependencies = ["numpy>=1.24"]
classifiers = [
"Programming Language :: Rust",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
]
[tool.maturin]
features = ["pyo3/abi3-py38"]
bindings = "pyo3"
compatibility = "manylinux2014"
pip install . を実行した際、pipはPEP 517に従い maturin をビルドバックエンドとして呼び出し、ビルドおよびWheelの生成を自動的に処理する。
4.2 クロスコンパイルの実装
ビルドを実行するホスト環境とは異なるターゲットアーキテクチャ向けのWheel生成をサポートしている。--target オプションにRustのターゲットトリプルを指定することでクロスコンパイルが実行される。
# x86_64環境からAArch64 Linux向けのWheelを生成する例
maturin build --release --target aarch64-unknown-linux-gnu --zig
クロスコンパイルを実行するためには、以下の前提が必要となる。
rustup target add aarch64-unknown-linux-gnuによるターゲットツールチェインの追加- ターゲットアーキテクチャ向けのCクロスコンパイラ(リンカ)の設定(
.cargo/config.tomlの[target.XXX] linkerキー) - ターゲット向けのPythonヘッダまたはABIスタブ(
abi3Wheelを使用する場合は省略可能)
Windowsクロスコンパイルについては、PyO3の generate-import-lib フィーチャーと cargo-xwin を組み合わせることで、Linux/macOSホストからWindowsターゲット向けWheelを生成できる。ただし、MSVC向けビルドにはMicrosoft CRTライセンスへの同意が必要となる点に注意が必要である。
4.3 manylinux コンプライアンスの確保
Linux向けのバイナリを配布する際、古いglibc環境でも動作を保証するための規格として manylinux(PEP 513/571/599/600)がある。PyPIにLinux向けWheelをアップロードするためには、この規格への準拠が必須となる。Rust 1.64以降はglibc 2.17を最低要件とするため、少なくとも manylinux2014 に準拠したビルドが必要となる。
Dockerによる準拠確認(従来手法)
docker run --rm \
-v $(pwd):/io \
ghcr.io/pyo3/maturin build --release --manylinux 2014
ghcr.io/pyo3/maturin イメージは manylinux2014(glibc 2.17以降)対応のビルド環境を提供する。
Zigリンカを用いたホスト環境からのビルド
--zig オプションは内部的に zig cc をリンカとして使用し、ターゲットのglibcバージョンを固定したビルドを実現する。CIパイプラインでDockerを使用できない環境(GitHub ActionsのmacOSランナー等)での manylinux Wheel生成に特に有用である。
pip install maturin[zig]
maturin build --release --zig
4.4 複数Pythonバージョンへの対応
PyO3の abi3 機能(pyo3 = { version = "...", features = ["abi3-py38"] })を有効にした場合、単一のWheelで指定バージョン以降のすべてのCPythonに対応するバイナリが生成されるため、バージョンごとのビルドが不要となる。生成されるWheelのファイル名は my-extension-1.0-cp38-abi3-manylinux_2_17_x86_64.whl のような形式となる。
5. CI/CDパイプラインへの統合
5.1 GitHub Actionsを用いたマルチプラットフォームビルドの例
# .github/workflows/release.yml
name: Build and Release
on:
push:
tags:
- "v*"
jobs:
build:
strategy:
matrix:
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
- os: ubuntu-latest
target: aarch64-unknown-linux-gnu
- os: macos-latest
target: x86_64-apple-darwin
- os: macos-latest
target: aarch64-apple-darwin
- os: windows-latest
target: x86_64-pc-windows-msvc
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist/ --find-interpreter
sccache: "true"
manylinux: auto
- uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.target }}
path: dist/
publish:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
pattern: wheels-*
merge-multiple: true
path: dist/
- uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --non-interactive --skip-existing dist/*
maturin-action はPyO3プロジェクトが提供する公式のGitHub Action実装であり、manylinux 対応コンテナの自動選択や、--find-interpreter によるPythonバージョンの自動検出等の機能を持つ。
PyPIのTrusted Publishing(OpenID Connect)を使用する場合は、MATURIN_PYPI_TOKEN を削除し、id-token: write パーミッションを追加することで対応できる。
5.2 CI設定ファイルの自動生成
maturin generate-ci コマンドにより、推奨構成のGitHub Actions設定ファイルを自動生成できる。
mkdir -p .github/workflows
maturin generate-ci github --platform linux musllinux windows macos \
--pytest --zig > .github/workflows/CI.yml
6. 結論
Maturinは、RustのビルドシステムであるCargoとPythonパッケージングエコシステムを統合するビルドツールである。出力先制御(-o)、sdist生成(--sdist)、フィーチャーフラグ(-F)、バインディング種別(-b)、インタープリタ指定(-i、-f)、プラットフォーム互換性(--compatibility)、ストリップ(--strip)、Zigリンカ(--zig)等の多様なオプション群が、現代的なマルチプラットフォーム配布の要求に応えるための柔軟な制御を可能にしている。
開発フェーズにおける develop コマンドによる高速イテレーションと、配布フェーズにおける build / publish コマンドによるマルチプラットフォームWheel生成という2フェーズの設計は、Rustの型安全性とPythonの利便性を組み合わせたソフトウェア開発における一貫したワークフローを提供する。
付録A:CLIオプション完全一覧表
A.1 maturin build オプション一覧
| オプション | 短縮形 | 引数 | デフォルト | 説明 |
|---|---|---|---|---|
--release | -r | — | off | Cargoリリースモード(最適化ビルド) |
--jobs | -j | <N> | CPUコア数 | 並列ジョブ数 |
--profile | — | <PROFILE-NAME> | — | Cargoビルドプロファイル指定 |
--target | — | <TRIPLE> | ホスト環境 | ターゲットアーキテクチャ(Rustトリプル) |
--target-dir | — | <DIRECTORY> | target/ | 生成物の出力ディレクトリ |
--out | -o | <OUT> | target/wheels/ | Wheelの保存先ディレクトリ |
--features | -F | <FEATURES> | — | 有効化するCargoフィーチャー(カンマ/スペース区切り) |
--all-features | — | — | off | すべてのフィーチャーを有効化 |
--no-default-features | — | — | off | デフォルトフィーチャーを無効化 |
--bindings | -b | <BINDINGS> | 自動検出 | バインディング種別(pyo3, cffi, uniffi, bin) |
--interpreter | -i | [<INTERPRETER>...] | — | ビルド対象Pythonインタープリタ |
--find-interpreter | -f | — | off | インタープリタを自動検出 |
--sdist | — | — | off | ソース配布パッケージ(.tar.gz)も生成 |
--compatibility | — | [<compatibility>...] | 自動判定 | プラットフォームタグ制御 |
--auditwheel | — | <AUDITWHEEL> | repair | manylinuxコンプライアンス動作(repair/check/skip) |
--zig | — | — | off | Zigリンカを使用してmanylinux互換ビルド |
--strip | — | — | off | バイナリからデバッグシンボルを除去 |
--include-debuginfo | — | — | off | デバッグ情報ファイルをWheelに同梱 |
--manifest-path | -m | <PATH> | 自動探索 | Cargo.toml のパス |
--frozen | — | — | off | Cargo.lock とキャッシュが最新であることを要求 |
--locked | — | — | off | Cargo.lock が最新であることを要求 |
--offline | — | — | off | ネットワークアクセスなしでビルド |
--quiet | -q | — | off | Cargoログを非表示 |
--verbose | -v | — | off | 詳細ログ(-vv でさらに詳細) |
--color | — | <WHEN> | auto | 出力カラーリング(auto/always/never) |
--compression-method | — | <METHOD> | deflated | Wheel ZIP圧縮方式(deflated/stored/zstd) |
--timings | — | =<FMTS> | — | ビルドタイミング出力(html/json、unstable) |
--config | — | <KEY=VALUE> | — | Cargo設定値のオーバーライド(unstable) |
A.2 maturin develop 固有オプション一覧
| オプション | 短縮形 | 引数 | デフォルト | 説明 |
|---|---|---|---|---|
--extras | -E | <EXTRAS> | — | オプション依存グループの有効化 |
--skip-install | — | — | off | インストールをスキップし共有ライブラリのみ生成 |
--uv | — | — | off | pip の代わりに uv を使用してインストール |
--pip-path | — | <PIP_PATH> | 自動探索 | 使用する pip の実行ファイルパス |
A.3 主要コマンドと用途の早見表
| コマンド | 用途 |
|---|---|
maturin develop | デバッグビルドを仮想環境にインストール |
maturin develop --release | リリースビルドを仮想環境にインストール |
maturin develop --extras=test | オプション依存込みで仮想環境にインストール |
maturin build --release | リリースビルドのWheelを生成 |
maturin build --release -o dist/ | 出力先を dist/ に指定してWheel生成 |
maturin build --release --sdist | WheelとsdistをともにP生成 |
maturin build --release -F "my_feature" | フィーチャー有効化してWheel生成 |
maturin build --release -b cffi | CFFFIバインディングでWheel生成 |
maturin build --release --find-interpreter | 全Pythonバージョン向けWheel一括生成 |
maturin build --release --strip | シンボル除去して最小サイズのWheel生成 |
maturin build --target aarch64-unknown-linux-gnu --zig | AArch64向けmanylinux互換クロスコンパイル |
maturin build --release --compatibility manylinux2014 | manylinux2014タグを明示してWheel生成 |
maturin sdist -o dist/ | sdistのみ単独で生成 |
maturin publish | ビルドしてPyPIに公開 |
maturin generate-ci github | GitHub Actions CI設定ファイルを自動生成 |
付録B:Maturinプロジェクトの設定および実装例
B.1 設定ファイル
# pyproject.toml
[build-system]
requires = ["maturin>=1.0,<2.0"]
build-backend = "maturin"
[project]
name = "example_module"
version = "0.1.0"
requires-python = ">=3.8"
classifiers = [
"Programming Language :: Rust",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
]
[tool.maturin]
features = ["pyo3/abi3-py38"]
# Cargo.toml
[package]
name = "example_module"
version = "0.1.0"
edition = "2021"
[lib]
name = "example_module"
crate-type = ["cdylib"]
[dependencies]
pyo3 = { version = "0.21", features = ["extension-module"] }
B.2 Rustソースコード
// src/lib.rs
use pyo3::prelude::*;
/// Pythonから呼び出し可能な関数の定義
#[pyfunction]
fn compute_value(x: f64) -> PyResult<f64> {
Ok(x * 2.0)
}
/// Pythonモジュールのエントリポイント
#[pymodule]
fn example_module(_py: Python, m: &PyModule) -> PyResult<()> {
m.add_function(wrap_pyfunction!(compute_value, m)?)?;
Ok(())
}
参考文献
-
PyO3/maturin — GitHub リポジトリ https://github.com/PyO3/maturin
-
Maturin User Guide(公式ドキュメント) https://www.maturin.rs/
-
Maturin User Guide — Distribution https://www.maturin.rs/distribution.html
-
Maturin User Guide — Local Development https://www.maturin.rs/local_development.html
-
Maturin User Guide — Configuration https://www.maturin.rs/config
-
maturin — PyPI https://pypi.org/project/maturin/
-
PyO3 User Guide — Building and Distribution https://pyo3.rs/latest/building-and-distribution
-
PEP 517 — A build-system independent format for source trees https://peps.python.org/pep-0517/
-
PEP 518 — Specifying Minimum Build System Requirements for Python Projects https://peps.python.org/pep-0518/
-
PEP 621 — Storing project metadata in pyproject.toml https://peps.python.org/pep-0621/
-
PEP 599 — The manylinux2014 Platform Tag https://peps.python.org/pep-0599/
-
Andrew Kelley — “zig cc: a Powerful Drop-In Replacement for GCC/Clang” https://andrewkelley.me/post/zig-cc-powerful-drop-in-replacement-gcc-clang.html
-
Rust Blog — “Increasing glibc and Linux kernel requirements” https://blog.rust-lang.org/2022/08/01/Increasing-glibc-kernel-requirements.html