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]

abouthiroppy/node8

Introduction to Rust by Akito0107

  • Rustとは
  • Rustが新しいところ = メモリ管理
  • 所有権の概念
  • メモリ領域の種類
    • Stack
      • 1つの関数とかサブルーチンとか1つのブロックの中のメモリ
      • ブロックから抜けるとポップする
      • 基本的に高速
    • Heap
      • 複数のサブルーチンとか、関数で使いまわしたりする
      • 明示的な管理が必要
      • Stackに比べるメモリ管理のコストが高い
    • メモリ管理
      • 手動でmalloc/free
  • 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


初めてのOSS初めてのnode contribute - chiiia12

初めてのOSS初めてのNode.js Contribute#tng25 // Speaker Deck

  • OSS勉強会
  • Node.jsへのPRする
  • 3回目でやっとマージされた
  • 大きい所にPRすることで自信を持てた
  • レビューしてもらえる
  • 運用方法が参考になる

V8 Interpreter Ignitionについて by brn0227

V8 Iginition Interpreter

  • 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

Hello, MobX!

  • MobX
  • state管理ライブラリ
  • どういうものなのか?
  • autorun -> stateをなんとかする
  • state管理に絞ってる
  • アーキテクチャ自体は自分で決める

Slack CodeGolf by darai0512


お疲れ様でした。