Autocxx -RustからC++を安全かつ楽に-
by
minami
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
Autocxx - RustからC++を安全かつ楽に - minaminao @vinami - 下町.rs #3 1
Slide 2
Slide 2 text
自己紹介 ● 岡南 直哉 (@vinami) ● LayerX Labs リサーチャー ○ ブロックチェーンのスケーラビリティ、 特にシャーディング ● 未踏2020で『Shargri-La』開発中 ○ シャーディングプロトコル開発を支援 するソフトウェア ○ Rustです 2
Slide 3
Slide 3 text
Autocxxとは? 3
Slide 4
Slide 4 text
4 RustからC++を安全かつ楽に呼ぶツール https://github.com/google/autocxx
Slide 5
Slide 5 text
とりあえず試してみる(定義側) Autocxxとは? 5 再帰で階乗
Slide 6
Slide 6 text
とりあえず試してみる(呼び出し側) Autocxxとは? 6
Slide 7
Slide 7 text
とりあえず試してみる(実行) Autocxxとは? 7 できた!簡単 Source: https://github.com/minaminao/autocxx/tree/shitamachi/demo
Slide 8
Slide 8 text
仕組み 8
Slide 9
Slide 9 text
三段階の Procedural macro 仕組み 9 1. bindgen でバインディングを生成 2. それを解釈し cxx::bridge に適したバインディングへ変換 3. cxx::bridge を実行
Slide 10
Slide 10 text
1. bindgen でバインディングを生成 仕組み 10 ● bindgen (https://github.com/rust-lang/rust-bindgen) ○ C(C++)のヘッダファイルからRust FFIバインディングを自動 的に生成してくれるツール
Slide 11
Slide 11 text
2. cxx::bridge に適したバインディングへ変換 仕組み 11 ● CXX (https://github.com/dtolnay/cxx) ○ RustからC++をunsafeなしに呼び出せるツール ○ C++からRustも可能
Slide 12
Slide 12 text
開発状況 12
Slide 13
Slide 13 text
対応済み 開発状況 13 ● Primitives (u8, etc.) ● Plain-old-data structs ● std::unique_ptr of POD ● std::unique_ptr of std::string ● Reference to POD ● Reference to std::string
Slide 14
Slide 14 text
未対応 開発状況 14 ● std::unique_ptr of opaque types ● Methods ● #defines ● Constants ● Enums ● Structs containing UniquePtr ● Structs containing strings ● make_unique
Slide 15
Slide 15 text
RustからC++を呼ぶ重要性 15
Slide 16
Slide 16 text
例: Chromium RustからC++を呼ぶ重要性 16 ● 2015年度以降のインパクト高のバグの内訳 https://www.chromium.org/Home/chromium-security/memory-safety
Slide 17
Slide 17 text
例: Chromium RustからC++を呼ぶ重要性 17 https://www.chromium.org/Home/chromium-security/memory-safety/rust-and-c-interoperability
Slide 18
Slide 18 text
例: Chromium RustからC++を呼ぶ重要性 18 ● ChromiumのコアはC++ ● RustからC++の呼び出しが重要視されている https://www.chromium.org/Home/chromium-security/memory-safety
Slide 19
Slide 19 text
まとめ 19
Slide 20
Slide 20 text
20 ● AutocxxはRustからC++を安全かつ楽に呼ぶツール ○ 絶賛開発中 ○ C++ベースのプロジェクトは、RustからC++を呼ぶ機能を 求めており、注目されている まとめ