Node Congress 2023 議程筆記
type
status
date
slug
summary
tags
category
icon
password
在經歷 COVID-19 帶給世界的災難後,很多 Conference 終於在今年陸續改回實體的會議了,雖然在遙遠的 TW 的我一向都只能看到會後的錄影,不過能看到實體聚會的熱絡也是蠻令人開心的。
這邊也照慣例,收集一些剛結束的 Node Congress 2023 的議程資料(應該沒辦法全部收集到,我也會挑一些比較感興趣的題目),不過有看到部分議程的錄影檔出現了,所以有興趣又沒機會與會的,可以開來聽聽看。😄

Forced Optimization

Video preview
原本最期待這個議程,結果看到錄影才發現他改了題目😢。不過還是跟即將到來的 Deno2 有點相關啦,會中公開了 Deno Deploy 即將增加了儲存端功能 - Deno KV
notion image
沒想到它是基於 FoundationDB 的,我還以為會是類似 Cloudflare D1 用 SQLite。Ryan 也提到這只是開始,還有需要功能會陸續開發,諸如 Cache、Queue、Background workers等,對即將釋出的 Deno 2 有興趣的可以切到上面的議程短段落聽聽。
不過我自己是對下面這個比較感興趣😄。看起來 Deno 的定位會是在相容 Node.js 生態的前提下,更專注於 Cloud、Edge Computing 這部分了。
notion image
如果對這個新功能 KV 感興趣的話,除了文件之外,Deno 官方最近也釋出一個範例程式 tic-tac-toe 就是基於 KV 實作的,Show me the code!😆

Startup Snapshot in Node.js

這場的講者 - Joyee Cheung 也是 Node.js 知名的核心貢獻者之一,經常可以看他許多在效能相關的 issue 的貢獻。這場也是提到近期針對 Node.js startup 的優化,從運作的機制,到如何透過 V8 snapshot 提升目前的冷啟動效能,介紹的非常熬詳細,值得一聽!
What are V8 startup snapshots? - v8 heap states serialized into a binary blob - Isolate snapshot: shared by main instance and workers - Context snapshot: main context, vm contexts, worker context
notion image
除了增進 startup 的效能之外,還可以利用 snapshot 的功能預先編譯用戶開發的應用端程式,一樣透過 snapshot 可以一定程度增加其執行效率。這個功能在 v17 就加入了,不過那時候是最早期的 build-time generation(必須要在編輯 Node.js 時一併處理),到 v18 支援 run-time generation,最後 Joyee 有提到目前進行中的,會將 snapshot 與之前提過的 Single Executable Application (SEA) 功能結合,相當值得期待阿。🤩🤞
notion image
notion image

The road to Async Context

這篇主要是在闡述 Node.js 實作的 AsyncContext 的前因後果跟實作細節,因為是講者本身就是身兼 Node.js core team & Cloudflare workers 主力作者 James M Snell 內容 非常紮實。😆
這功能目前也納入 WinterCG 的討論,所以可以期望各 runtime 都會一定程度的支援。
proposal-async-context
tc39Updated Jun 1, 2023
備註:AsyncContext 原本叫 AsyncLocalStorage,有興趣的可以直接參考 repo,至於這東西是在做什麼的,主要應用是在 async 情境下的 tracking,透過這個功能就可以實作(如下例)。
const requestId = new AsyncContext(); function log(msg) { console.log(requestId.get(), msg); } function doSomething(res) { log('did something'); setTimeout(() => doSomethjingElse(res), 1000); } let counter = 0; const server = http.createServer((req, res) => { requestId.run(++counter, () => { setTimeout(() => doSomething(res, 1000); }); });

The tale of avoiding a time-based DDOS attack in Node.js

看題目應該就可以猜出這場是跟安全性相關的議程,主要是針對 Slowloris 這種攻擊方式的介紹,然後提及如果應對以及 Node.js 裡面一些相關的安全性參數。
What is a Slowloris DDoS attack? Slowloris is a denial-of-service attack program which allows an attacker to overwhelm a targeted server by opening and maintaining many simultaneous HTTP connections between the attacker and the target. - Cloudflare
notion image
notion image

The State of Node.js Core

這個幾乎是每年的慣例議程了,總是會有一場是解說目前 Node.js 的現況,LTS以及未來即將(或討論中)加上的新功能,當然通常都會是核心開發者來擔任這場的議程,看來今年輪到 Colin Ihrig 了😄。
現有功能就不一一贅述了,之前週報或多或少都有提過,不過開發中的新功能可以留意一下⬇️
notion image

還有幾個感興趣的題目

不過目前找不到錄影檔(或還沒時間聽),如果等之後如果官方有放出或聽過有值得記錄的部分再找時間補上(希望,也可能這篇就不再更新了😆)

JS character Encodings

Type-safe bindings for Node.js with Rust and WebAssembly

AWS Lambda under the hood

Bring Node.js into your browser with WebContainers

  • Utterance
  • WebMention

© sy 2021-2023