#tc39_study のアウトラインメモ
#tc39_study - connpassのアウトラインメモ。
littedan “how tc39 works ?”
-
TC39のミーティング
-
Q. QuickJSが中に入ってたけど、Implementationsとして認識される基準って何? A. 基準と特に決まってない。あえてぼかしてる。 Stage five by littledan · Pull Request #16 · tc39/process-document
-
Q: microsoft がchakra coreをやめることで2つ以上のブラウザの実装に関してどう変わっていくの?
A. あんまりChakraCoreが新しいもの実装してなかったのであんまり変わらない
-
Q. Feedbackって実際どうやってどういうふうに送るのがいいの?
A. オープンなので色んな面のフィードバックあるといいと思うよ。
Leko Hashbang Grammar
- スライド: https://gist.github.com/Leko/ea379ba259e90ea9d2b33ac0e8bf19ff
#!
について#!/usr/bin/env node
みたいなのが行頭に書くとコマンドとして実行できる- Node.jsはコードとして評価する前にshbangを取り除いている
- そのままコードを評価できるようにECMAScriptの仕様にいれようとう話
- V8には既に入ってていてNode.jsは使ってる
hiroppy top level await
- Top-Levelで
await
を書ける cosnt dynamic = await import("./file.js")
みたいにいきなり書ける- Variantsでどう処理をしていくかを決めていく
- A: 順番に評価する
- B: Promise.all的に実行される
- C: x
- Top-level await · V8を見る
- Top-Level awaitによって循環参照のデットロックが発生するようになった
- webpack@next
- ビルド時に参照の解決とかを行う
- webpackからはそのモジュールは同期か非同期かわからない
import await
という標準化されてない構文を使える- mport await by littledan · Pull Request #60 · tc39/proposal-top-level-await
otolab WeakRefs
- GCを妨げないRef
new WeakRef
ref.deref()
同じスレッドならなんど読んでも同じものが変える- Finalization
- 参照が開放されたときに呼ばれるかもしれない処理
Leko Nullish coalescing Operator
??
null undefinedだけ弾いてくれる
brn0227 throw expressions
throw
式- 全部式にしようというProposalから切り出されたやつ
- tc39/proposal-do-expressions: Proposal for
do
expressions - でも
do
式があれば全部解決する
likr New Set methods
- Setに色々メソッドが増える
antidotech iterator helpers
- コレクションのlazyなメソッドを追加するInterface
- Asyncなmapとか
- よく見る非同期コレクション(色んな言語とかパッケージを参照にしてる)
haormauyraa String.prototype.replaceAll
- スライド: https://qiita.com/arayaryoma/items/4352a97e6674dfcb1749
- “xxx”.split(“x”).join(“y”)`
- オーバヘッドがある
- いい感じに文字列全置換する
sasurau4 Temporal
- Dateの代わり
- Moment
- Documentがout of dateになってる
natural_clar BigInt
- Danさんが話してた
- 使いましょう
kt3k decorators
@hoge
- デコレータ
- 長い歴史があった
- BabelとかTypeScriptとかに入ったのは素朴なデコレータ
- クラスの中の評価で詰まって止まっった
- Descriptor-based デコレータ
- Babel 7.1で入ったやつ
- 複雑化した
- Transpilerしたら巨大なコードができた
teatwo realms
-
Reams API
-
Sandbox
-
DOMなしのIframe
sottar Array.isTemplateObject
- Stage 2
- タグ付きテンプレートリテラルの引数をTrustedかを判定する関数
- Trusted Types起因で提案された
Leko Explicit Resource Management
try...resource
構文- disposeというsymbolで開放処理する
- asyncdisposeというのもあるけど、non-blockingじゃなくなってしまう
simochee collection normalization
- MapとSetのkeyの正規化する仕様
coerceKey
でkeyを正規化するhookを書けるcoercevalue
で値のvalidateとかできる
brn0227 Richer Keys
- compositekeyとcompositeValue
- toKeyだけStage 2になっている
likr Math Extensions
Math.clamp
min
とmax
する
Math.scale
- Math.radian
- Math degress
technohippy Extensible numeric literals
- デコレータで数字の単位を独自実装できる
antidotech export default from
export A from "./file.js"
の追加- default exportをそのままできる
brn0227 class Access Expressions
class.f()
でプロパティにアクセスできるthis.constructor
の代わりKlass.f()
でもいいんじゃないか?というが代案
sakito partial application
?
でplaceholder的にできる
chikoski Emitter
- Reactive Programmingをstdだけでできるよ
- Stream API的なもの(DOM依存)
- ECMAScriptレイヤーなのでDOM依存してない
kazuyoshi_kawakami cancellation
- Cancel
likr Math.seededRandoms()
- seed付きなrandom
Math.seededRandoms()
okunokentato Pipeline Operator
- スライド: https://speakerdeck.com/okunokentaro/pipeline-operator
- |>`
- pipeline operator
- 関数でもメソッドチェーン的なことをしたい
sakito slice notation
- スライド: https://qiita.com/__sakito__/items/684651168de5d19a9387
- slide notation
array[1:4]
みたいなやつ- PythonとかRuby
- とかのやつ
- マイナス表記もサポート
array[-1]
saneyuki JavaScript Standard Library
- JavaScriptに標準ライブラリがない
import {} from "js:xxx"
- prefixとかはまだ決まってない
- importしたものはfreezeされる
- Monkey patchは困る
sasurau4 Binary AST
- Faster script loading with BinaryAST?
- Facebook’s open source browser contributions - Facebook Engineering
- ネットワークに依存せずに0.4秒とか早くなる
- Firefox NightlyだとBinary ASTをサポートしてる
sottar Asset References
assert Logo from "./logo.gif"
- アセットのロードタイミング
- 構文的な定義
technohippy Dynamic Code Brand Checks
eval
をもう少し安全にしたいIsCodeLike
というinternal function
tsuyoshiwada Block Params
- Kotlin, Swiftみたいな 関数の引数を最後にかけるやつ
fn { }
- 構文的なやつ
- 他の言語の書き方が色々できるよ
- testに理想が書かれてる
chikoski first class protocols
- Traitみたいなもの
antidotech pattern matching
- パターンマッチ
case…when
を追加する- 最初は
match
だったけどcase
に変わった
technohippy new.initialize
new.initialize
- Private Fieldも継承できるようにしたい
likr do expressions
- スライド: https://qiita.com/_likr/items/e48c076962d470ee833b
do { … }
- 即時関数でやってることができる
- 文を式的に書ける
do do
とかの問題がある
haormauyraa Const Value Types: Record & Tuple
- 言語レベルでImmutableなデータ型が欲しい
- 別の提案があったけど、複雑すぎて廃棄
#{}
と#[]
- RecordとTuple
kt3k standard library UUID
- UUIDが使える
- グローバル
UUID
- Std
import uid from "std:uuid"
- UUID v4を実装しようとしてる
ShoOishi shorthand improvements
- プロパティ割当の省略記法
const a = { o.x }
({ a.x } = o)
sakito Nested import declarations
- スライド: https://qiita.com/__sakito__/items/8ba62d99eb90c2868c3e
- ずっと放置されている
tsuyoshiwada Infix Bang
- Promise pileline
~.
wave- 使う場所によって内部処理が切り替わる
jxck Object.map
- Mapはシリアライズできない
- Objectで欲しい
Float16
- 小さくて便利 float 16
Cancellable Promise
furukawa - function (const a ){}
- 僕が欲しい
- functionのargumentsを
const
にしたい function (const a) {}
jxck - Defensible class
- harmony時代からある
const class{}
のProposal- prototypeとかもfrozonになる
mizchi - Optional Types
-
型の構文定義
-
samuelgoto/proposal-optional-types: A proposal for an optional type system for JS.
-
Stage 0で進んでない
Bind Operator ::
- Stage 0
- Infix Operator とかにProposalを分割するらしい
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。