Slide 1

Slide 1 text

Node.js v12 Notable Changes ؔ੢NodeֶԂ 6࣌ݶ໨ Masashi Hirano(@shisama)

Slide 2

Slide 2 text

ฏ໺ ণ࢜ / Masashi Hirano ɹɹɹɹ Kyoto office @shisama_ @shisama Node.js Core Collaborator ؔ੢NodeֶԂOrganizer

Slide 3

Slide 3 text

4/23ʹ12.0.0͕ϦϦʔε͞Ε·ͨ͠

Slide 4

Slide 4 text

https://nodejs.org/en/blog/release/v12.0.0/ ݄຤ʹ-54ʹ

Slide 5

Slide 5 text

https://nodejs.org/en/blog/release/v12.0.0/ W͸&0-ʹ

Slide 6

Slide 6 text

Node.js v12ͷಛʹؾʹͳͬͨ มߋ఺Λ঺հ͠·͢ʂ

Slide 7

Slide 7 text

https://nodejs.org/en/blog/release/v12.0.0/ /PEFKTͷެࣜϖʔδ΍(JU)VCͷ3FMFBTFϖʔ δʹ͸1VMM3FRVFTU΁ͷϦϯΫ͕షͬͯ͋Δ

Slide 8

Slide 8 text

https://github.com/nodejs/node/pull/26685

Slide 9

Slide 9 text

V8(JSΤϯδϯ)͕7.4ʹ • Node.js v10ͷV8͸6.8 • JavaScript(ECMAScript)৽ػೳ͕௥Ճ • async / await͕ߴ଎Խ • async-stack-trace͕௥Ճ
 etc…

Slide 10

Slide 10 text

https://twitter.com/mathias/status/1120700101637353473 JavaScript৽ػೳ

Slide 11

Slide 11 text

Array#{flat,flatMap} var arr1 = [1, 2, [3, 4]]; arr1.flat(); // [1, 2, 3, 4] arr1.flatMap(x => [x * 2]); // [2, 4, 6, 8]

Slide 12

Slide 12 text

Private Class Field class Counter { #count = 0; get value() { return this.#count; } increment() { this.#count++; } } const counter = new Counter(); counter.increment(); counter.#counter; // Error counter.value; // OK QSJWBUFʹ͍ͨ͠ϑΟʔϧυʹ͸Λ͚ͭΔ

Slide 13

Slide 13 text

https://twitter.com/mathias/status/1120700101637353473 ଞʹ΋ͨ͘͞Μ͋Γ·͢ʂଓ͖͸WebͰʂ

Slide 14

Slide 14 text

https://speakerdeck.com/ajido/callback-to-promise-and-beyond લճˏAjido͞Μ͕ൃදͯ͘͠Ε·ͨ͠ʂ

Slide 15

Slide 15 text

https://blog.risingstack.com/node-js-12-new-features/ Async Stack Trace

Slide 16

Slide 16 text

https://blog.risingstack.com/node-js-12-new-features/ Async Stack Trace v11 V12

Slide 17

Slide 17 text

https://github.com/nodejs/node/pull/26685

Slide 18

Slide 18 text

llhttp • HTTPύʔαͷσϑΥϧτ͕http_parser͔Βllhttpʹ • http_parserվྑΛࢼΈ͚ͨͲ೉͔ͬͨ͠ • llhttp͸TypeScriptͰॻ͔Ε͍ͯͯϝϯς͠΍͘͢ͳ͍ͬͯΔ • http_parserΑΓ࣮ߦ଎౓͕଎͍ • llparseͰCݴޠ΍LLVMϏοτίʔυʹม׵

Slide 19

Slide 19 text

llhttp https://github.com/nodejs/llhttp

Slide 20

Slide 20 text

https://github.com/nodejs/node/pull/26209 εΫϦʔϯγϣοτ 2019-05-08 02.51.41.png

Slide 21

Slide 21 text

https://github.com/nodejs/node/pull/23814

Slide 22

Slide 22 text

tls • TLS 1.3Λ৽͘͠αϙʔτ • TLS1.0ɺ1.1͸σϑΥϧτͰαϙʔτର৅֎ʹ • 2020/03ʹϝϯς͞Εͳ͘ͳΔ • v12͸LTSͰ2022/04ͰEOL

Slide 23

Slide 23 text

https://github.com/nodejs/node/pull/25576

Slide 24

Slide 24 text

σϑΥϧτͷheapͷ࠷େ஋ • ैདྷ͸700MB(32bit) / 1400MB(64bit)ݻఆͩͬͨ • v12͔Β͸࢖༻ՄೳͳϝϞϦ༰ྔʹ߹Θͤͯ૿ݮ

Slide 25

Slide 25 text

https://github.com/nodejs/node/pull/23027 ͜ͷޙɺొஃ༧ఆʂ

Slide 26

Slide 26 text

https://github.com/nodejs/node/pull/27361 /PEFKTWͰ͸ ྩ࿨ରԠ͞Εͨ

Slide 27

Slide 27 text

Node.js v12ʹͳΔ͜ͱͰಈ͔ͳ͘ͳ Δύοέʔδ΋ଘࡏ͢Δ

Slide 28

Slide 28 text

https://github.com/nodejs/node/issues/25060

Slide 29

Slide 29 text

Node.js v12ͰյΕΔύοέʔδ͕͋Δ • uglify-js΍bcryptͳͲ༗໊ͳͱ͜Ζ͕ର৅ • طʹରԠࡁͷ΋ͷ΋͋Δ • CITGMͱ͍͏Node.js CoreͷCIδϣϒͰᖰΓग़͍ͯ͠Δ • Α͘࢖ΘΕΔύοέʔδͷςετ͕௨Δ͔ݕূ • https://github.com/nodejs/citgm • ੈͷதͷશͯͷnpmύοέʔδΛݕূ͍ͯ͠ΔΘ͚Ͱ͸ͳ͍

Slide 30

Slide 30 text

npmʹύοέʔδΛެ։͍ͯ͠Δਓ͸ Node.jsͷϝδϟʔόʔδϣϯ͕ϦϦʔ ε͞ΕͨΒݕূͯ͠Έ·͠ΐ͏ʂ

Slide 31

Slide 31 text

·ͱΊ • V8ͷόʔδϣϯΞοϓͰJavaScriptͷ৽ػೳ͕௥Ճ͞Εͨ • Node.js Core΋಺෦తʹΞοϓσʔτ͞Ε͍ͯΔ • ϝδϟʔόʔδϣϯ͸npmύοέʔδ͕յΕͨΓ͢ΔͷͰݕূ ͕ඞཁ

Slide 32

Slide 32 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ @shisama_ @shisama