職場から近いので Roppoingi.rs に来ました。自分のためにメモを残しておきます。ハッシュタグは #roppongirs 。
Rustがいかにエンジニアの脳を楽にさせているかをC++初心者が語る〜関数篇〜 / @natsu_no_yuki さん
- C++歴15年の初心者
- rvalue reference, template特殊化などが使えるのは初心者らしい
- rust歴は3日
- プログラミングの歴史からrustの良さを考える
- C言語: メモリ管理を何もしてくれない
- C++ と rust の比較
- C++で関数呼び出しをすると、コピーされてコンストラクタが二回呼ばれる例
- スタックにローカル変数、戻り先アドレス、引数を積む
- 引数を積むために2回インスタンスが作られるので、無駄
- よって、参照渡しをする
- C++で関数の戻り値で二度コンストラクタが呼ばれる例
delete
をどうするか- 同じレイヤで開放するのが鉄則
destroyedXxx
のような名前の関数を用意する- C++ を書いているひとは、この問題とずっと戦っている
- rust の場合は、普通に返すだけで所有権が移るので問題ない
- 脳が嬉しい → Rust いいね
なぜBlockchainはRustを選ぶのか / @jkcomment さん
- Blockchain の話は多いけど、細かい話はしない
- rust について
- なぜ rust の知名度が低いのか
- Blockchainのプロジェクトでは、rustの採用率が高い
- Blockchainとは?
- なぜrust?
- 特に理由はない
- blockchain そのものは、言語はなんでもよい
- rust のプロジェクトも、理由は明確にしてない
- それでも理由を考えてみると
- 性能
- Blockchain に必要なモジュールが用意されている
- Networking(P2P), Cryptography, Consensus, Storage などに関する処理が必要
- P2P (Peer to Peer)
- 対等なやり取り。オーバレイネットワーク。実現するために必要な機能が多い
- Transport, Discovery, Peer Routing, NAT超え
libp2p
- すべてのPJが採用しているわけでもないが、多くのPJで採用
- もともとrustが一番いい実装だったが、今はgo
- Cryptography / 791 crateも登録されている
- wasm / WebAssembly
- Substrate
- Parity社が開発した Blockchain Framework (wordpress的なもの)
- 簡単に独自の Blockchain が作れる
- Substrate ベースのプロジェクトは増えている (zero-chain, Plasm, Edgeware, shasper, ChainX ...)
- rust の悪い使い方
- Substrate ... マクロ使い過ぎ、トレイト地獄、 match 地獄
- マクロは展開後のコードでエラーが起きるのでわかりにくい
- rustの使いみち
- OSが作れる
- Webアプリケーションも作れる (Rocket, Iron, actix-web)
- フロントエンド開発 feat wasm
- rustがいいと思う理由
- (個人的に) OOPが好きじゃない
- 速さ、堅牢さは正義
- rustで苦労した点
- まとめ
- ものづくりは楽しむべき。rustで楽しむ、Blockchainも楽しい
(LT) rustで実装されたLibra Move言語とは
- Libra : FB の金融プラットフォーム。2019年6月
- BFTモデルの Libra Blockchain が基盤
- 組んでいるメンバーが強い
- Move : Libra 上でスマートコントラクトを書く言語
- 安全とセキュリティを重視
- バイトコードを利用 : bytecode verifier でチェックするので安全
- アセットをオープンシステムに乗せるの難しさ
- block chain言語の問題
- 資産をInteger で表現、型がない、エラーハンドリング
- Scarcityの責任が開発者に
- Access control が柔軟じゃない
- Move での解決策
- 開発のエコシステムはまだこれから
- Libra Blockchain へデプロイはできない
- ドキュメントや開発ツールがない。
- Collection や Generics は今はない