rust samurai lightning talk
DESCRIPTION
TRANSCRIPT
2
Who’s Guy?
Naruto TAKAHASHI(@TNaruto)
•Mail: [email protected]
• Blog: http://eflmemo.hatenablog.com/
• Company: Turbo Systems Co, Ltd.
Interesting Keyboards
• EFL(Enlightenment Foundation Libraries)
• Tizen
•WebKit
3
思うところ
• アプリ層はそろそろ C/C++ 以外で記述したい。
• メモリ管理したくないし、速度も欲しい。(せめてバイナリで)
• LL じゃ速度が足りない
• C/C++ で書かれたライブラリを使いたい。
• Ffi がある言語が良い。
• つまり Rust が良い。
4
Rust に注目するところ
• ffi が標準搭載
• Rust Foreign Function Interface Tutorial
• http://static.rust-lang.org/doc/tutorial-ffi.html
• Syntax が C に近い。
• 予約語が C に似てる
• Ffi も書きやすい。
1 Python, ruby の ffi のコード見たけど・・・(-_-;
5
なぜ Go ではない?
• Rust は標準で ffi が搭載している。
• Go は別モジュール扱いのはず。
• 言語設計のうちから ffi を検討している Rust の方が扱いやすい?
6
FFI でやりたいこと
• EFL の Rust バインディング
• 水色のダイヤログをバインディングしたい
7
Eet バインディングを試したよ。
• EET
• シリアライズライブラリ。
• 構造体をファイルに落とせたりも出来るよ。
• 戻すのも出来るよ。
• Enlightenment の設定ファイルは全部 eet 使われてるよ。
8
Eet バインディング 3,4時間ぐらい悩んでみました。
9
10
バインディング結果
• 動かせませんでした。
• Rust 難しくね?
11
何が難しかった?
• ハンドラ(構造体の実態を見せないための手法)のポインタを Rust 側でどう持って良いのかわからない。
• ライブラリで内部宣言している構造体とかを Rust 側で宣言する必要があるの?
• ライブラリの Enum 宣言
• Rust 側でも同じ値で宣言しないといけないの?
• Rust の知識をそんなに持ってなかった。
• Rust のヒープメモリの扱いとか把握できないと触れないかも。
12
Rust の FFI のチュートリアルが update したので見てみます。• Snappy という圧縮ライブラリの ffi の作成方法に変わってる!
• 参考になることがあるかも!