Rust 1.0 Release記念祝賀LT会 - connpass に参加してきたメモ

Saneyuki

  • 1.0リリース
  • Rustコミュニティはガバナンスモデルを気にしてる
    • GoとかNode.jsとか
    • ガバナンスはめっちゃ長い

Graydon Hoare

  • Rustオリジナル作者による基調講演

--

Servo - saneyuki

  • Servoのレビューア
    • DOMとのバインディング
  • Servoとはなにか
    • 並列性のあるブラウザエンジン
    • プロダクトでのシップの予定は今のところは計画してない
    • 年末にドックフード版を出す予定
  • Rust
  • Servoから出たもの
    • Kuchiki
      • Nokogiriみたいなパーサ
    • rust-selectors
    • rust-url
      • URL Standard の実装 https://url.spec.whatwg.org/
      • ブラウザの実装は変更があるかもしれないので、変更かようなのか
      • セキュリティの仕組みがちゃんとあるかどうか
  • Servoとウェブ標準
    • Servoはレガシーなウェブ標準をちゃんと仕様通りに実装してる
    • 色々な仕様バグを見つけている

--

wxRust

--

RustなNATSのClientを作ってみた

--

将来の暗号技術を支えるRust

  • 未来の暗号技術はまだ理論的な段階で実装的には何もなかったりする

--

D言語 is awesome

  • Rust書いたことがない
  • 1.0がでても標準ライブラリがunstableになってるRust
  • 言語が検索しにくい問題
  • goodbye segmented stack
    • コールスタックを伸ばす必要があるのでパフォーマンスが落ちる
    • メモリの使用量が不安定
  • パターンマッチ
    • D言語にも欲しい
  • ライフサイクル
    • 最近はエッジケースのみになって、いきなりコードベースが大きくなっておちるみたいのは減った

--

NimよりRust

  • akiradeveloper
  • D
  • Go
    • 簡単だった
  • Rust
    • coreutilsの実装
    • Rustのコンパイルが難しい
    • 安定してなかった時にさわったので大変
  • Nim
    • ドキュメントが充実してた
    • Rustを参考にしてるものがあって、Rustがよく見えてきた
    • v1.0がこなさそう
    • C言語がちょっとかっこよくなった感じ
  • Rust再び
    • ドキュメントが充実してた
    • 構文がスッキリしてた
    • 良さそうに見えてきた

--

Porting Rust - kato

  • 2010年頃にBrendan EichがECMAScriptじゃなくてRustの話しかしてなかった
  • Gecko
  • Rust
    • Android
    • BSD
    • Linux
  • GeckoのサポートしてるプラットフォームをまだRustがサポートしてない
    • Compiler
      • LLVM
      • Platform deinf
    • Runtime
      • libc binding
      • スレッドの扱いのバインディング
    • Build System
  • unsafeな部分にはsegmented stackが残ってる

--

RustからPythonを呼び出す - _sunnyone

--

Rust to SPIR - iitaku

  • RustでOpenCL?
  • SPIR
    • LLVM IRベースの中間言語仕様
  • Rust -> LLVM IR -> SPIR
    • RustからLLVM IRを吐くところをハック
  • Rustはラインタイムが小さいのでこういう事がやりやすい

--

Rustとか、Goとか、Dとか、C++とか

  • システム言語へのあこがれ
  • C++を学び始める
  • 「今ならC++よりGoでしょ」
  • C++ -> Go
  • 「今ならCoよりDでしょ」
  • Go -> D言語
  • 「今ならDよりRustでしょ」
  • 「今ならRustよりC++11でしょ」

--

プログラミング言語はいらない?

  • Opera Wiki
  • プログラミング言語は人間と機械との間で中途半端な感じ
  • 人にとってのプログラミング言語
    • 任意の入力から特定の出力を得る手続きの記法
    • 本来は人に理解されにくい訳じゃない
  • 計算機にとってのプログラミング言語
    • 地球な演算子の処理の連続に帰結する
    • 本来は計算機にとっても都合がわるいものじゃない
  • プログラミング言語
    • 言語環境は計算機を使いやすいするためのものであるという意識をする
    • 見せるところは見せる、見せないところは見せない
    • ロジックを記述しているという意識
    • 論理性の破綻はバグであり、脆弱性

--

オープンフォース

  • Windows95 20周年
  • セキュリティの担保
    • 下手に実行件を与えしまうもんだい
    • メールを開くだけで感染するのはおかしい
  • セキュリティ担保のための重要で簡単なルール
    • 余計なアクセスを許さない
  • ルールだけである程度は担保できる
    • でも、ソフトウェアのミスをつく
    • セキュリティ・ホールがある
  • セキュリティホール
    • メモリ破壊は簡単に防げない
  • メモリ破壊
    • OSレベルにも関係
    • スタックヒープを使ってるので本質的には解決できない
  • ヒープ
    • 悪影響
    • JVMはGCを気にしないといけない
  • スタック
    • スタックをなくすには、静的確保へ
    • 静的なメモリ確保によって性能が安定するのでは
    • 反応時間が安定する

--

Rustでプロセス間通信

  • mirama
  • http://www.brilliantservice.co.jp/lab/mirama.html
  • AppleがObjective-C -> Swiftへ変えたので悩んでる。
  • C+ObjC+Rust
  • プロセス間通信
    • Rustはシステム言語なので、これをどうやるかについて
    • プロセス同士の通信を行う
    • Unix Socketもできる
    • zmqのFFIも既にあった
    • borrow checkerが色々検出してくれる

--

Rust in Wearables

  • ステートは実装する方へ権限移譲する
  • Rustには継承がなくてtraitsを使う
    • コールバックも単純にできない

--

Rust

  • Rustの機能的な特徴
    • 型システム
    • タスクベースの並列
    • 高階関数、クロージャー
  • パターンマッチ
    • Lexarを書くのが簡単
  • Lifetime
    • クロージャー
      • 関数を作って返す
    • RustだとLifetimeがあるので、クロージャーできない
    • 関数型言語じゃなかった
  • ソースコード検索を作ってる
    • トピックモデル
  • rust-lang.jpで公開予定

--

Piston - cakecats

--

Rustドキュメントを訳してみた


スタッフ参加だったので雑なメモ