Slide 1

Slide 1 text

TC39 x JSConf.jp October 7th, 2024 Yosuke Furukawa Panel Talk

Slide 2

Slide 2 text

which propsals are you most excited about? Ͳͷϓϩϙʔβϧʹظ଴Λ͍ͯ͠·͔͢ʁ ɾ Call This Operator x 6 ɾ Temporal x 6 ɾ Pipeline Operator x 5 ɾ Promise.try x 4 ɾ Record & Tuple x 3 ɾ Pattern Matching x 2 ɾJSON Modules x 3 ɾModule Declarations x 2

Slide 3

Slide 3 text

which propsals are you most excited about? Ͳͷϓϩϙʔβϧʹظ଴Λ͍ͯ͠·͔͢ʁ ɾ Call This Operator x 6 ɾ Temporal x 6 ɾ Pipeline Operator x 5 ɾ Promise.try x 4 ɾ Record & Tuple x 3 ɾ Pattern Matching x 2 ɾJSON Modules x 3 ɾModule Declarations x 2 Data f low Proposals i18n Pattern Match Module Harmony Promise utilities

Slide 4

Slide 4 text

Data f low Proposals intro • https://zenn.dev/yuku/articles/b169ac62ac3271 // Before const publicArticles1 = (await fetch("/articles", { headers: { Authorization: await getIdTokenFromAuth.call(getAuth()) }, })).filter((a) => isPublic(a)); // After const publicArticles2 = getAuth() ~> getIdTokenFromAuth() |> await fetch("/articles", { headers: Authorization: @ }) .filter(isPublic~(?));

Slide 5

Slide 5 text

Data f low Proposals Discussion • When introducing new operators, how is it typically discussed within TC39? I'm concerned that since the combinations of operators are f inite, it might be challenging to add new ones. • ৽نͰԋࢉࢠΛ͍͔ͭ͘௥Ճ͍ͯ͠Δ͕ɺԋࢉࢠΛ৽͘͠௥Ճ͢ΔͷͬͯͲ ͏͍͏෩ʹTC39Ͱ͸࿩͞ΕͯΔͷ͔ʁԋࢉࢠͷ૊Έ߹Θ͕ͤ༗ݶͳͷͰɺ௥ Ճ͕೉͍͠ͷͰ͸ͳ͍͔ͱݒ೦͍ͯ͠·͢ • pipeline operator |> • call this operator ~>

Slide 6

Slide 6 text

Data f low Proposals Discussion • Have you ever heard opinions from JS engine implementers regarding this? Are there concerns that optimizations, such as JIT, might become more di ff icult with the introduction of new operators? • JS Engine ࣮૷ऀͷਓͨͪ͸Ͳ͏͍͏ҙݟΛ࣋ͬͯΔ͔ฉ͍ͨ͜ͱ͸͋Γ· ͔͢ʁJITͳͲͷ࠷దԽ͕೉͘͠ͳΔͳͲͷݒ೦͸͋Γ·ͤΜ͔ʁ

Slide 7

Slide 7 text

i18n intro • Temporal https://tc39.es/proposal-temporal/docs/ console.log('Initialization complete', Temporal.Now.instant()); // example output: // Initialization complete 2021-01-13T20:57:01.500944804Z

Slide 8

Slide 8 text

i18n Discussion • How are things progressing? Stage 3 seems to be taking a bit longer than expected. • Stage3 গ͚ͩ͠௕͘ͳ͍Ͱ͔͢ʁ • Are there any blockers currently preventing progress? • ϒϩοΧʔʹͳ͍ͬͯΔ΋ͷ͕͋Ε͹ڭ͑ͯԼ͍͞ • As a Japanese developer, I'm particularly excited about this because issues like time and locale are crucial and cannot be ignored due to the nature of the services we work with. • ೔ຊਓͱͯ͠͸ඇৗʹظ଴͍ͯ͠·͢ɻͳͥͳΒ࣌ؒ΍ϩέʔϧͷ໰୊͕αʔϏεͷಛ ੑ্ແࢹͰ͖ͳ͍͔ΒͰ͢ɻ

Slide 9

Slide 9 text

Module Harmony intro • Module Harmony https://docs.google.com/presentation/d/ 1mZrAHHimtM_z_8fM9L3DUXFz5bjlJPxx8VrwsC68hmk/edit#slide=id.p

Slide 10

Slide 10 text

Module Harmony discussion • I imagine things have become quite complex at this point. Do you have any plans or ideas on how to approach the situation and where to start? • ݁ߏෳࡶʹͳͬͪΌͬͯΔͱࢥ͏ΜͰ͚͢ͲɺͲ͔͜ΒͲ͏΍ͬͯखΛ෇͚ ͍ͯ͜͏͔ͳɺΈ͍ͨͳߏ૝͸͋Γ·͔͢ʁ • JSON Modules / import defer will be upgraded soon? • JSON Modules / import defer ลΓ͕ࠓճมΘΓͦ͏

Slide 11

Slide 11 text

Pattern Matching intro • https://github.com/tc39/proposal-pattern-matching match() { when : ; when : ; ... default: ; }

Slide 12

Slide 12 text

Pattern Matching discussion • Stage 1? • How are things progressing? • etc

Slide 13

Slide 13 text

What do you think are the weaknesses of JavaScript? ͲΜͳ఺͕JavaScriptͷऑ఺ͩͱࢥ͍·͔͢ʁ ɾ Hard to introduce features based on type information while TypeScript is de-facto in the major development scene. ɾLack of common FFI standard ɾ The need to be backwards-compatible ("don't break the web") ɾ core types like Result are missing leading to many incompatible userland implementations ɾ Types ɾ non consistent APIs ɾ script tag would be better to separate the context ɾ modules import apis are complicated.