Fukuoka.ts#3 Aug 23, 2021 での発表です。
Fukuoka.ts #3TSHow deno works as TS runtimeTomohisa Oda — GMO Pepabo, Inc. / Aug 23th 2021
View Slide
Fukuoka.ts #3linyows / Tomohisa OdaGMO Pepabo, Inc.: Senior Engineering LeadBlog: https://tomohisaoda.com2
Fukuoka.ts #33Private ProjectsΞϓϦέʔγϣϯ͕ࣗϦϙδτϦ͔Β࠷৽ͷίʔυΛݕͯࣗ͠ಈͰσϓϩΠͱσϦόϦʔΛߦ͏πʔϧlinuxͷuser໊લղܾΛGitHubͷTeamϝϯόʔϦϙδτϦͷΞΫηεݖݶऀ͔Βߦ͏πʔϧϝʔϧૹ৴༻ͷಁաܕSMTPϓϩΩγͰϦΫΤετͱϨεϙϯεΛϩάσʔλϕʔεʹग़ྗ͢Δ͜ͱ͕Ͱ͖ΔNew!!
Fukuoka.ts #3͓ͼɿDenoਂງΓ👉DenoͷΈ4
Fukuoka.ts #3DenoͱʁDenoɺ@ry͕nodejsͰޙչ͍ͯ͠Δ͜ͱʢgypnode_modulespromiseͳͲʣ͔ΒϓϩδΣΫτΛ։࢝ɻV8Λϥοϓͨ͠RustͷTypeScript/JavaScript ϥϯλΠϜɻϥϯλΠϜ୯ମͱ͍͏ΑΓͦΕΛؚΊͨπʔϧνΣʔϯɻҎԼɺΦϑΟγϟϧ͔Βɻhttps://deno.land/• σϑΥϧτͰηΩϡΞ 👉 deno run —allow-net —allow-read foo.ts• TypeScriptΛͦͷ··αϙʔτ 👉 tscswc͕෦ͰΘΕ͍ͯΔ• γϯάϧϑΝΠϧͷΈͰಈ͘ 👉 deno compile foo.ts => file• ґଘؔݕࠪϑΥʔϚοτ༻ͷπʔϧͳͲಉࠝ 👉 deno info, deno fmt, deno test…• ಈ࡞อূͷඪ४Ϟδϡʔϧ5
Fukuoka.ts #3Denoͷߏෳͷίϯϙʔωϯτʹׂ͞Ε͍ͯͯɺ3rd Party͕ଟ༻͞Ε͍ͯΔɻ3rdParty͕ॏཁͳϙδγϣϯʹΔͨΊɺͦΕΒΛִ͢ΔϨΠϠʔߏʹͳ͍ͬͯΔɻ deno_core(rusty_v8(v8(js & wasm))) Έ͍ͨͳײ͡ɻ• RustͷඇಉظϥϯλΠϜTokioΛ͍ͬͯΔ• RustͱV8ͷBindingsʹrusty_v8͕୲͍ͬͯͯͦΕ3rd Party• TSඪ४Ϟδϡʔϧ6
Fukuoka.ts #37https://choubey.gitbook.io/internals-of-deno/architecture/overall-architecture
Fukuoka.ts #3V8ͱRustͷׂ୲deno༷ʑͳίϯϙʔωϯτ͕͋ΓଞݴޠͰߏ͞Ε͍ͯΔɻઈࡶʹ͍͏ͱɺdenoV8ͷϥούʔͰ͋Δ͕ɺRustԿΛ͍ͯ͠Δͷ͔ɻ• V8͕Ͱ͖ΔͷSandboxͰECMAScriptͷղऍͰɺͦΕҎ֎ͷωοτϫʔΫϑΝΠϧૢ࡞ͳͲRustଆͰߦ͏• ωοτϫʔΫϑΝΠϧૢ࡞ηΩϡϦςΟͷ੍ݶΛड͚ɺ࣮ߦ࣌ʹڐՄ͓ͯ͘͠ඞཁ͕͋Δ• V8ͱRust͋Β͔͡Ίఆٛͨؔ͠Ͱ૬ޓʹΓͱΓ͢Δ͜ͱ͕Ͱ͖Δ• σʔλϙΠϯλʔΛ͍ίϐʔ͠ͳ͍ʢจࣈྻͰͳ͍ͷͰύϑΥʔϚϯεͷ͕͓͖ͳ͍ʣ• ॳظRustͰͳ͘GoͰ࣮͞Ε͍͕ͯͨGoͱV8ͷ̎ॏGCͷ͔ΒRustʹஔ͖͑ΒΕͨ8
Fukuoka.ts #39ΠϯλʔϑΣʔεOpsͱResourceͷ̎छྨhttps://www.youtube.com/watch?v=1b7FoBwxc7E
Fukuoka.ts #3DenoͷϓϩηεDenoRustϓϩηεͱͯ͠ىಈͯ͠ɺdenoͷϝΠϯεϨουͱV8ͷWorkerεϨουͱTokioͷεϨουϓʔϧʹΑΓߏ͞ΕΔɻ• tsc·ͨswcʹΑͬͯґଘղܾͱϦϞʔτϑΝΠϧͷμϯϩʔυΛߦ͍γϯάϧϑΝΠϧԽ• ͦͷjswasm͕V8ͷதͰ࣮ߦ͞ΕΔ• V8ʹͳ͍ؔRustଆΛݺͼग़͢• Event Loopͷcore෦RustଆͰ࣮͞ΕTokioεέδϡʔϥʔͱͯ͠εϨουΛཧ͢Δ10
Fukuoka.ts #311https://deno.land/[email protected]/contributing/architectureManualʹ͋ͬͨArchitectureਤʢࠓlibdeno͕rusty_v8ʹͳ͍ͬͯΔ͔Βݹ͍͔ʣ
Fukuoka.ts #3Denoͷ֦ுV8WebAssembly(wasm)࣮ߦͰ͖ΔͨΊɺwasmରԠͷͲΜͳݴޠͰ֦ு͕ՄೳͰ͋Δɻ·ͨɺ࠷ۙಋೖ͞Εͨdlopen ͰμΠφϛοΫϩʔυʹΑΔ֦ு͕Ͱ͖ΔΑ͏ʹͳ͍ͬͯΔ(v1.13)ɻ12
Fukuoka.ts #3Demo: rust(wasm-pack)Ͱdeno֦ு13
Fukuoka.ts #314ςϯϓϨʔτͰwasmͷgreetؔͰjsͷalertؔʹbind͢ΔΑ͏ʹ
Fukuoka.ts #3·ͱΊ• Denonode.jsͰͷܦݧ͔ΒV8ͱͷ݁߹ʹநϨΠϠʔΛ࡞Δ͜ͱͰ҆શʹ͍ͯ͠Δ• V8Ҏ֎ʹtokiotscɺswcͳͲ3rd Party͕ଟ͘ΘΕҰൠతͳݴޠϥϯλΠϜͰෳࡶͰ͋Δ͕ίϯϙʔωϯτΛࡉׂ͔͘͢Δ͜ͱͰӨڹΛখ͍ͯ͘͞͠Δ• ϑΝΠϧૢ࡞ωοτϫʔΫͳͲV8ͷείʔϓ֎rust͕୲͍ͬͯͯϗϫΠτϦετͷηΩϡϦςΟͰ҆શΛ୲อ͍ͯ͠Δ• V8ͱRustͷؒʹσʔλίϐʔͳͦ͘ͷଞͷύϑΥʔϚϯεʹྗͰ͖ΔΑ͏ʹ͍ͯ͠Δ15
Fukuoka.ts #316Thank You, We’re Hiring!ʮϖύϘΩϟϦΞ࠾༻ʯݕࡧ