Node学園 25時限目でECMAScriptの国際標準化の話をした
Node学園 25時限目 - connpassに受付として参加してきて、ついでにECMAScript Specification SuiteについてのLTをしました。
ECMAScript Specification Suite
スライド– https://azu.github.io//slide/2017/node/ecmascript-specification-suite.html
ECMAScript Specification Suiteは現在議論中のECMAScriptの新しい国際標準候補です。
どういうものかは次の記事でも書いています。
以下はメモです。
受付をやっていたのでかなり断片的です。
[email protected]
Introduction to Rust by Akito0107
- Rustとは
- Rustが新しいところ = メモリ管理
- 所有権の概念
- メモリ領域の種類
- Stack
- 1つの関数とかサブルーチンとか1つのブロックの中のメモリ
- ブロックから抜けるとポップする
- 基本的に高速
- Heap
- 複数のサブルーチンとか、関数で使いまわしたりする
- 明示的な管理が必要
- Stackに比べるメモリ管理のコストが高い
- メモリ管理
- 手動でmalloc/free
- Stack
- GC
- 自動でメモリ管理 確保と解放を行う
- 生きてるオブジェクト死んでるオブジェクトを判別して処理する
- 参照してるかどうか
- GC中は他の処理ができなくなることがある
- Rustのアプローチ
- 手動/GCでもなく所有権でメモリ管理を解決
- RustのデフォルトはStackでallocate
- Heap Allocation
- Box::newするとHeapへ確保
let foo = boxed_foo()
fooはheap領域を参照- Stackから抜けるときにheap領域のものも消す
- Rustのコンパイルエラー
- 所有権 = オブジェクトを開放する権利
- Rustはオブジェクトの所有権は基本的に1つオブジェクトがもつ
- 既に所有権をもってないものが触ろうとしたらコンパイルエラー
- Rust における
=
は「代入」じゃなくて「移譲」となる - 所有権を「移譲」してる
- 参照と借用 = read onlyの参照は許可する概念がある
- 寿命
- 借用先の寿命 > 借用元の寿命
- デフォルトはスタックであることを思い出す
- メモリ安全、データ競合安全
- コンパイラがチェックしてくれる
- 言語機能
- パターンマッチ、エラー処理などがある
- Rustのユースケースについて
- Tokio
- hyperium/hyper: An HTTP library for Rust
Cycle.js
- Cycle.js
- Rx的なものをラップしたフレームワーク
- staltz/xstream: An extremely intuitive, small, and fast functional reactive stream library for JavaScript
- RxJSのoperatorを減らしたり、変更したもの
- Cycle.jsの設計
- Applicationを
main()
とdriver()
に分割 driver()
DOM、APIを叩いたりするmain()
副作用のないRxの世界
- Applicationを
初めてのOSS初めてのnode contribute - chiiia12
- OSS勉強会
- Node.jsへのPRする
- 3回目でやっとマージされた
- 大きい所にPRすることで自信を持てた
- レビューしてもらえる
- 運用方法が参考になる
V8 Interpreter Ignitionについて by brn0227
- V8のインタープリタ
- 昔は常にfull codegenだった
- ファイルがサイズがでかい、時間がかかる
- 関数を実行するときにコンパイルようにした
- Facebookでなんか遅い
- Ignition
- ピーク時はfull codegenよりは遅い
- 平常時はまあまあな速度がある
今までのビルドパス
- JavaScript -> AST -> アーキテクチャ毎のバイトコード
Ignition
- JavaScript -> AST -> Ignition -> 中間コード -> アーキテクチャ毎のバイトコード
TurboFun
- Ignitionの中間コードを最適化するオプティマイズコンパイラ
- Ignitionで実行中のプロファイルを取って、最適化する
- 最適化パスが間違っていた場合は、de-optsして戻す
- 小さな単位でやるので、de-opt時に戻りやすい(中間コードに戻す)
IC(Inlining Cache)
- キャッシュミス時の劣化があった
- missとfound の2種類のみあった
- fast path/no inlined/miss の3パターンになった
- キャッシュミスを減らすことでICの効率を下げないような工夫が入った
Hello, MobX! by leader22
- MobX
- state管理ライブラリ
- どういうものなのか?
- autorun -> stateをなんとかする
- state管理に絞ってる
- アーキテクチャ自体は自分で決める
Slack CodeGolf by darai0512
お疲れ様でした。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。