Autocxx -RustからC++を安全かつ楽に-
by
minami
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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++を呼ぶ機能を 求めており、注目されている まとめ