[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-why-rust-workers-need-panic-unwind-zh":3,"tags-why-rust-workers-need-panic-unwind-zh":35,"related-lang-why-rust-workers-need-panic-unwind-zh":46,"related-posts-why-rust-workers-need-panic-unwind-zh":50,"series-industry-98084b77-6eb1-4d6f-99b5-7fb102cabe1f":87},{"id":4,"title":5,"content":6,"summary":7,"source":8,"source_url":9,"author":10,"image_url":11,"keywords":12,"language":19,"translated_content":10,"views":20,"is_premium":21,"created_at":22,"updated_at":22,"cover_image":11,"published_at":23,"rewrite_status":24,"rewrite_error":10,"rewritten_from_id":25,"slug":26,"category":27,"related_article_id":28,"status":29,"google_indexed_at":30,"x_posted_at":10,"tweet_text":10,"title_rewritten_at":10,"title_original":10,"key_takeaways":31,"topic_cluster_id":10,"embedding":10,"is_canonical_seed":21},"98084b77-6eb1-4d6f-99b5-7fb102cabe1f","為什麼 Rust Workers 需要 panic unwind，而不只是 a…","\u003Cp data-speakable=\"summary\">\u003Ca href=\"\u002Ftag\u002Frust\">Rust\u003C\u002Fa> Workers 要真正可靠，必須同時支援 panic unwind\u003Ca href=\"\u002Fnews\u002Fwhy-ethereum-treasury-buying-is-a-bad-bet-zh\">ing\u003C\u002Fa> 與 abort recovery，否則一次失敗就可能污染整個執行個體。\u003C\u002Fp>\u003Cp>我站在這一邊：對 Rust Workers 而言，panic unwind 不是錦上添花，而是處理有狀態工作負載的基本能力；abort recovery 只能當最後防線，不能當主方案。\u003Ca href=\"\u002Ftag\u002Fcloudflare\">Cloudflare\u003C\u002Fa> 已經把問題說得很清楚：在共享執行個體裡，一次未處理的 Rust abort 不只會打掉當前請求，還可能影響鄰近請求，甚至讓後續新請求持續出錯。\u003C\u002Fp>\u003Ch2>第一個論點：沒有 unwind，就沒有真正的狀態保護\u003C\u002Fh2>\u003Cp>如果你的 Worker 內部保存了可觀的記憶體狀態，像 Durable Objects 這類模式，一次 panic 不是單一請求失敗而已，而是整個執行個體的狀態連續性被打斷。對這種 workload 來說，單純重建應用不等於恢復，因為你已經失去那個 request 之前累積的上下文。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778391034291-ms3i.png\" alt=\"為什麼 Rust Workers 需要 panic unwind，而不只是 a…\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>\u003Ca href=\"\u002Fnews\u002Fwhy-webassembly-is-killing-server-side-browser-tools-zh\">WebA\u003C\u002Fa>ssembly Exception Handling 在 2023 年獲得主流引擎支援，這件事很關鍵。當 Rust 能用 \u003Ccode>panic=unwind\u003C\u002Fcode>，解構子會正常執行，\u003Ccode>catch_unwind\u003C\u002Fcode> 也能工作，Rust 與 JavaScript 的邊界就能把失敗轉成可處理的 \u003Ccode>PanicError\u003C\u002Fcode>，而不是把執行個體留在未定義狀態。這不是語法糖，而是把「失敗」和「資料損壞」分開。\u003C\u002Fp>\u003Ch2>第二個論點：abort recovery 仍然必要，但它解決的是另一種問題\u003C\u002Fh2>\u003Cp>即使有 unwind，abort 依然會出現，最典型的就是 out-of-memory。abort 本來就無法展開堆疊，也就無法保留當前執行狀態，所以平台仍需要一條硬恢復路徑，能偵測 abort、阻止壞狀態擴散，並確保下一次操作從有效基線開始。\u003C\u002Fp>\u003Cp>Cloudflare 的做法不是把問題包裝成「重試就好」，而是加上 abort hooks、re\u003Ca href=\"\u002Fnews\u002Fanthropic-10-finance-ai-agents-zh\">ent\u003C\u002Fa>rancy guards 與 exception tagging，讓 runtime 能分辨真正的 abort 和跨邊界傳來的外部例外。這很重要，因為 JavaScript 可以在任意深度重新進入 Wasm。少了這些機制，一個壞 stack frame 就可能污染同一個 instance 裡的其他工作。\u003C\u002Fp>\u003Ch2>反方可能怎麼說\u003C\u002Fh2>\u003Cp>最強的反對意見是：這些複雜度應該留在應用層，不該塞進工具鏈。工程師可以自己包住高風險操作、在失敗後重啟 Worker，或乾脆設計成無狀態服務。從這個角度看，unwind、exception tag、reset hooks 都像是為了補救本來就該避免的架構問題。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778391032567-znno.png\" alt=\"為什麼 Rust Workers 需要 panic unwind，而不只是 a…\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>另一個真實顧慮是可攜性。WebAssembly exception handling 曾經有多種變體，Rust 在某些 target 上也還保留舊行為，不同 runtime 的支援節奏未必一致。若生態系還在分裂，押注 panic recovery 看起來像把可靠性綁在一個尚未完全收斂的標準上。\u003C\u002Fp>\u003Cp>但這個反對意見忽略了核心事實：共享執行個體本來就是共享狀態，單靠應用層紀律無法把 poisoned instance 完全隔離。當平台允許並發任務、JS 與 Wasm 深度交錯、又有長壽命記憶體狀態時，失敗語意本來就屬於 runtime 與工具鏈。Cloudflare 把它往上游推是對的，因為「失敗就整個重啟」對有狀態系統根本不是完整答案。\u003C\u002Fp>\u003Ch2>你能做什麼\u003C\u002Fh2>\u003Cp>如果你是工程師，別再把 \u003Ccode>panic=abort\u003C\u002Fcode> 當成預設安全解法；在有狀態邏輯上改用 unwind，明確劃出 exported boundary，並把 abort recovery 視為最後防線而不是可省略功能。如果你是 PM 或創辦人，直接問你的 Wasm stack：一次壞請求會不會拖垮其他工作、會不會丟掉記憶體狀態、會不會讓後續請求繼續錯下去。只要答案有一個是「會」，可靠性就還沒做完。\u003C\u002Fp>","Rust Workers 要真正可靠，不能只靠 abort recovery；必須同時支援 panic unwinding，才能在失敗後保住狀態並安全恢復。","blog.cloudflare.com","https:\u002F\u002Fblog.cloudflare.com\u002Fmaking-rust-workers-reliable\u002F",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778391034291-ms3i.png",[13,14,15,16,17,18],"Rust Workers","panic unwind","abort recovery","WebAssembly","Cloudflare","stateful workloads","zh",1,false,"2026-05-10T05:30:17.662702+00:00","2026-05-10T05:30:17.64+00:00","done","592626de-7020-4e91-b4f5-67acea960675","why-rust-workers-need-panic-unwind-zh","industry","aca19a27-f914-402d-9484-0290f74ade1f","published","2026-05-10T09:00:11.465+00:00",[32,33,34],"panic unwind 是保護有狀態 Rust Workers 的核心機制，不只是錯誤處理細節。","abort recovery 需要保留，因為 OOM 等情況無法靠 unwind 解決。","真正的可靠性要由 runtime 與工具鏈提供，而不是只靠應用層紀律。",[36,38,40,42,44],{"name":17,"slug":37},"cloudflare",{"name":16,"slug":39},"webassembly",{"name":14,"slug":41},"panic-unwind",{"name":15,"slug":43},"abort-recovery",{"name":13,"slug":45},"rust-workers",{"id":28,"slug":47,"title":48,"language":49},"why-rust-workers-need-panic-unwind-en","Why Rust Workers need panic unwind, not just abort recovery","en",[51,57,63,69,75,81],{"id":52,"slug":53,"title":54,"cover_image":55,"image_url":55,"created_at":56,"category":27},"e6379f8a-3305-4862-bd15-1192d3247841","why-nebius-ai-pivot-is-more-real-than-hype-zh","為什麼 Nebius 的 AI 轉型比炒作更真實","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778823044520-9mfz.png","2026-05-15T05:30:24.978992+00:00",{"id":58,"slug":59,"title":60,"cover_image":61,"image_url":61,"created_at":62,"category":27},"66c4e357-d84d-43ef-a2e7-120c4609e98e","nvidia-backs-corning-factories-with-billions-zh","Nvidia 出資 Corning 工廠擴產","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778822450270-trdb.png","2026-05-15T05:20:27.701475+00:00",{"id":64,"slug":65,"title":66,"cover_image":67,"image_url":67,"created_at":68,"category":27},"31d8109c-8b0b-46e2-86bc-d274a03269d1","why-anthropic-gates-foundation-ai-public-goods-zh","為什麼 Anthropic 和 Gates Foundation 應該投資 A…","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778796636474-u508.png","2026-05-14T22:10:21.138177+00:00",{"id":70,"slug":71,"title":72,"cover_image":73,"image_url":73,"created_at":74,"category":27},"17cafb6e-9f2c-43c4-9ba3-ef211d2780b1","why-observability-is-critical-cloud-native-systems-zh","為什麼可觀測性是雲原生系統的生存條件","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778794245143-tfqn.png","2026-05-14T21:30:25.97324+00:00",{"id":76,"slug":77,"title":78,"cover_image":79,"image_url":79,"created_at":80,"category":27},"2fb441af-d3c6-4af8-a356-a40b25a67c00","data-centers-pushing-homeowners-to-solar-zh","資料中心推升房主裝太陽能","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778793651300-gi06.png","2026-05-14T21:20:40.899115+00:00",{"id":82,"slug":83,"title":84,"cover_image":85,"image_url":85,"created_at":86,"category":27},"387bddd8-e5fc-4aa9-8d1b-43a34b0ece43","how-to-choose-gpu-for-yihuan-zh","怎麼選《异环》GPU","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778786461303-39mx.png","2026-05-14T19:20:29.220124+00:00",[88,93,98,103,108,113,118,123,128,133],{"id":89,"slug":90,"title":91,"created_at":92},"ee073da7-28b3-4752-a319-5a501459fb87","ai-in-2026-what-actually-matters-now-zh","2026 AI 真正重要的事","2026-03-26T07:09:12.008134+00:00",{"id":94,"slug":95,"title":96,"created_at":97},"83bd1795-8548-44c9-9a7e-de50a0923f71","trump-ai-framework-power-speech-state-preemption-zh","川普 AI 框架瞄準電力、言論與州權","2026-03-26T07:12:18.695466+00:00",{"id":99,"slug":100,"title":101,"created_at":102},"ea6be18b-c903-4e54-97b7-5f7447a612e0","nvidia-gtc-2026-big-ai-announcements-zh","NVIDIA GTC 2026 重點拆解","2026-03-26T07:14:26.62638+00:00",{"id":104,"slug":105,"title":106,"created_at":107},"4bcec76f-4c36-4daa-909f-54cd702f7c93","claude-users-spreading-out-and-getting-better-zh","Claude 用戶更分散，也更會用","2026-03-26T07:22:52.325888+00:00",{"id":109,"slug":110,"title":111,"created_at":112},"bd903b15-2473-4178-9789-b7557816e535","openclaw-raises-hard-question-for-ai-models-zh","OpenClaw 逼問 AI 模型價值","2026-03-26T07:24:54.707486+00:00",{"id":114,"slug":115,"title":116,"created_at":117},"eeac6b9e-ad9d-4831-8eec-8bba3f9bca6a","gap-google-gemini-checkout-fashion-search-zh","Gap 把結帳搬進 Gemini","2026-03-26T07:28:23.937768+00:00",{"id":119,"slug":120,"title":121,"created_at":122},"0740e53f-605d-4d57-8601-c10beb126f3c","google-pushes-gemini-transition-to-march-2026-zh","Google 把 Gemini 轉換延到 2026 年 3…","2026-03-26T07:30:12.825269+00:00",{"id":124,"slug":125,"title":126,"created_at":127},"e660d801-2421-4529-8fa9-86b82b066990","metas-llama-4-benchmark-scandal-gets-worse-zh","Meta Llama 4 分數風波又擴大","2026-03-26T07:34:21.156421+00:00",{"id":129,"slug":130,"title":131,"created_at":132},"183f9e7c-e143-40bb-a6d5-67ba84a3a8bc","accenture-mistral-ai-sovereign-enterprise-deal-zh","Accenture 攜手 Mistral AI 賣主權 AI","2026-03-26T07:38:14.818906+00:00",{"id":134,"slug":135,"title":136,"created_at":137},"191d9b1b-768a-478c-978c-dd7431a38149","mistral-ai-faces-its-hardest-year-yet-zh","Mistral AI 迎來最硬的一年","2026-03-26T07:40:23.716374+00:00"]