Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions CalcPi.jl/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# CalcPi.jl

JuliaからRustで実装されたMonte Carlo法によるπ計算ライブラリ(`calcpi-rs`)を呼び出すためのJuliaパッケージです。

## 概要

`CalcPi.jl`は、`calcpi-rs`ライブラリへのJuliaバインディングを提供します。Monte Carlo法を使用してπの値を計算できます。

## インストール

```julia
using Pkg
Pkg.add(url="path/to/CalcPi.jl")
```

または、開発モードでインストール:

```julia
using Pkg
Pkg.develop(path="path/to/CalcPi.jl")
```

## ビルド

パッケージをビルドすると、Rustライブラリが自動的にコンパイルされ、C APIバインディングが生成されます:

```julia
using Pkg
Pkg.build("CalcPi")
```

## 使い方

```julia
using CalcPi

# MonteCarloPiインスタンスを作成
calc = CalcPi.MonteCarloPi()

# 100万サンプルでπを計算
result = CalcPi.calculate(calc, UInt64(1_000_000))
println("π ≈ $result")

# リソースを解放
CalcPi.release(calc)
```

## プロジェクト構造

```
CalcPi.jl/
├── deps/
│ ├── build.jl # ビルドスクリプト
│ └── libcalcpi_rs.* # ビルドされたライブラリ(自動生成)
├── src/
│ ├── CalcPi.jl # 高レベルAPI
│ └── C_API.jl # C APIバインディング(自動生成)
├── test/ # テストファイル
└── utils/ # C API生成ユーティリティ
```

## 開発

開発ガイドについては`DEVELOPMENT.md`を参照してください。

## テスト

```julia
using Pkg
Pkg.test("CalcPi")
```

## 依存関係

- `CEnum.jl` - C enumのサポート
- `RustToolChain.jl` - Rust toolchainの管理(ビルド時のみ)

## ライセンス

このプロジェクトのライセンス情報については、ルートディレクトリのREADMEを参照してください。
37 changes: 37 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,38 @@
# RustToolChainExamples.jl

このリポジトリは、JuliaからRustコードを呼び出す方法を示すサンプルプロジェクトのコレクションです。

## プロジェクト構成

### メインプロジェクト

- **`calcpi-rs/`** - Rustで実装されたMonte Carlo法によるπ計算ライブラリ
- **`CalcPi.jl/`** - `calcpi-rs`をJuliaから呼び出すためのJuliaパッケージ

### サンプルプロジェクト

- **`cargo_example/`** - Cargoを使ったRustプロジェクトの例
- **`rustc_example/`** - rustcを直接使ったRustプロジェクトの例

## セットアップ

### 前提条件

- Julia 1.6以上
- Rust toolchain (rustc, cargo)
- [RustToolChain.jl](https://github.com/AtelierArith/RustToolChain.jl) パッケージ

### インストール

```julia
using Pkg
Pkg.add("RustToolChain")
```

## 使い方

各サンプルプロジェクトのREADMEを参照してください。

## ライセンス

このプロジェクトのライセンス情報については、各サブディレクトリのREADMEを参照してください。
57 changes: 57 additions & 0 deletions calcpi-rs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# calcpi-rs

Monte Carlo法を使用してπ(円周率)を計算するRustライブラリです。

## 概要

このライブラリは、Monte Carlo法を用いてπの値を推定します。ランダムに生成した点が単位円内に含まれる確率からπを計算します。

## ビルド

### 通常のビルド

```bash
cargo build --release
```

### Cヘッダーファイルの生成

ビルド時に`cbindgen`が自動的にCヘッダーファイル(`include/calcpi.h`)を生成します。

## 出力ファイル

ビルド後、以下のファイルが生成されます:

- **ライブラリファイル**:
- Linux: `target/release/libcalcpi_rs.so`
- macOS: `target/release/libcalcpi_rs.dylib`
- Windows: `target/release/calcpi_rs.dll`

- **Cヘッダーファイル**: `include/calcpi.h`

## ライブラリタイプ

このプロジェクトは以下の3つのライブラリタイプを生成します:

- `cdylib` - C互換の動的ライブラリ(Juliaから呼び出すために使用)
- `staticlib` - 静的ライブラリ
- `rlib` - Rustライブラリ

## 依存関係

- `rand = "0.8"` - 乱数生成
- `cbindgen = "0.29"` - Cヘッダーファイル生成(ビルド時のみ)

## Juliaパッケージとの連携

このライブラリは`CalcPi.jl`パッケージから使用されます。詳細は`../CalcPi.jl/README.md`を参照してください。

## テスト

```bash
cargo test
```

## ライセンス

このプロジェクトのライセンス情報については、ルートディレクトリのREADMEを参照してください。
48 changes: 45 additions & 3 deletions cargo_example/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,47 @@
Just run:
# cargo_example

```sh
$ julia run.jl
Cargoを使用してRustプロジェクトをビルドし、Juliaから実行する例です。

## 概要

このサンプルは、Cargoで管理されたRustプロジェクトをJuliaからビルド・実行する方法を示します。

## プロジェクト構造

```
cargo_example/
├── Cargo.toml # Rustプロジェクトの設定
├── Project.toml # Juliaプロジェクトの設定
├── run.jl # 実行スクリプト
└── src/
└── main.rs # Rustのメインコード
```

## 使い方

### 実行

```bash
julia run.jl
```

または、Julia REPLから:

```julia
include("run.jl")
```

## 動作の仕組み

1. `RustToolChain.jl`の`cargo()`関数を使用してCargoコマンドを取得
2. `cargo build --release`でRustプロジェクトをビルド
3. ビルドされたバイナリを実行

## 依存関係

- `RustToolChain.jl` - Rust toolchainの管理

## 関連プロジェクト

- `rustc_example/` - rustcを直接使用する例
- `calcpi-rs/` - より複雑なライブラリプロジェクトの例
47 changes: 45 additions & 2 deletions rustc_example/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,50 @@
# Usage
# rustc_example

Just run:
rustcを直接使用してRustコードをコンパイルし、Juliaから実行する例です。

## 概要

このサンプルは、Cargoを使わずにrustcを直接使用してRustコードをコンパイル・実行する方法を示します。シンプルな単一ファイルのRustプログラムに適しています。

## プロジェクト構造

```
rustc_example/
├── main.rs # Rustのソースコード
├── main.jl # Juliaの実行スクリプト
└── Project.toml # Juliaプロジェクトの設定
```

## 使い方

### 実行

```bash
julia main.jl
```

または、Julia REPLから:

```julia
include("main.jl")
```

## 動作の仕組み

1. `RustToolChain.jl`の`rustc()`関数を使用してrustcコマンドを取得
2. `rustc main.rs`でRustコードをコンパイル(`main`という実行ファイルが生成される)
3. コンパイルされたバイナリ(`./main`)を実行

## Cargoとの違い

- **rustc**: 単一ファイルのコンパイルに適している。依存関係管理なし。
- **Cargo**: プロジェクト管理、依存関係管理、ビルドシステムを含む。

## 依存関係

- `RustToolChain.jl` - Rust toolchainの管理

## 関連プロジェクト

- `cargo_example/` - Cargoを使用する例
- `calcpi-rs/` - より複雑なライブラリプロジェクトの例