[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-why-brush-v0-4-matters-more-than-another-rust-shell-zh":3,"tags-why-brush-v0-4-matters-more-than-another-rust-shell-zh":34,"related-lang-why-brush-v0-4-matters-more-than-another-rust-shell-zh":45,"related-posts-why-brush-v0-4-matters-more-than-another-rust-shell-zh":49,"series-tools-eb77fb2d-7c9a-49e9-90c4-ed1160873b3b":86},{"id":4,"title":5,"content":6,"summary":7,"source":8,"source_url":9,"author":10,"image_url":11,"keywords":12,"language":18,"translated_content":10,"views":19,"is_premium":20,"created_at":21,"updated_at":21,"cover_image":11,"published_at":22,"rewrite_status":23,"rewrite_error":10,"rewritten_from_id":24,"slug":25,"category":26,"related_article_id":27,"status":28,"google_indexed_at":29,"x_posted_at":10,"tweet_text":10,"title_rewritten_at":10,"title_original":10,"key_takeaways":30,"topic_cluster_id":10,"embedding":10,"is_canonical_seed":20},"eb77fb2d-7c9a-49e9-90c4-ed1160873b3b","為什麼 Brush v0.4 比另一個 Rust Shell 更重要","\u003Cp data-speakable=\"summary\">Brush v0.4 之所以重要，不是因為它又是一個 \u003Ca href=\"\u002Ftag\u002Frust\">Rust\u003C\u002Fa> shell，而是因為它開始像 Bash 和 POSIX 的可信替代品。\u003C\u002Fp>\u003Cp>Brush v0.4 的價值在於，它把自己從「可展示的原型」推進到「可以放進日常工作流」的層級：它補上 set -e、set -u、pi\u003Ca href=\"\u002Fnews\u002Fspeckv-adaptive-speculative-decoding-gamma-zh\">pe\u003C\u002Fa>fail、failglob、ERR trap、coprocesses 等 Bash 行為，也修掉關閉管線、stdout 損壞、非 UTF-8 history、\u003Ca href=\"\u002Fnews\u002Ffinding-structural-anomalies-regional-stats-zh\">異常\u003C\u002Fa>檔案描述元狀態這類邊角錯誤。對殼層來說，這不是小修小補，而是能不能被信任的分水嶺。\u003C\u002Fp>\u003Ch2>第一個論點\u003C\u002Fh2>\u003Cp>Brush v0.4 最重要的不是新增功能，而是補齊語義。對 shell 來說，兼容性就是產品本身，因為使用者不是來學一套新語言，而是要既有腳本照常運作。像 set -e、pipefail、ERR trap 這類行為，只要有一個細節和 Bash 不同，腳本就會在最意想不到的地方失敗。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1777969246720-94h3.png\" alt=\"為什麼 Brush v0.4 比另一個 Rust Shell 更重要\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>這種失敗不是理論問題，而是維運成本。很多 shell 專案卡住，不是因為大架構不好，而是卡在「一個 trap 沒觸發」「一個管線回傳值不一樣」「一個 glob 行為不一致」。Brush v0.4 把力氣花在這些地方，表示它理解真正的遷移門檻不是宣稱現代化，而是讓舊世界的腳本少出錯。\u003C\u002Fp>\u003Ch2>第二個論點\u003C\u002Fh2>\u003Cp>Brush v0.4 也證明 Rust 在 shell 這個場景裡不是裝飾品，而是處理失效邊界的工具。關閉的 pipe、壞掉的 stdout、非 UTF-8 history 檔、奇怪的 file descriptor 狀態，這些情境不會出現在漂亮的 demo 裡，卻會出現在真實終端機裡。殼層不是在正常情況下被評價，而是在一切都不正常時被評價。\u003C\u002Fp>\u003Cp>它也把 login shell 可用性拉到更實際的位置，尤其在 macOS 這類使用者把 shell 當入口的環境裡。Rust 不會自動保證正確性，但它至少提供更好的記憶體安全與錯誤處理基礎。對一個每天都會啟動、也會拿來跑腳本的工具來說，少一次 crash、少一次未定義行為，比多一個花俏功能更有價值。\u003C\u002Fp>\u003Ch2>反方可能怎麼說\u003C\u002Fh2>\u003Cp>反對者會說得很直接：使用者不需要另一個 shell，他們需要 Bash、POSIX sh 或 zsh 繼續穩定運作。兼容性專案常常花很多年追 ed\u003Ca href=\"\u002Fnews\u002Fwhy-kimi-k25-changes-open-source-agent-race-zh\">ge\u003C\u002Fa> case，最後還是活在主流 shell 的陰影下。從這個角度看，Brush 只是又一個「快好了」的重寫專案，市場上已經不缺這類東西。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1777969250773-4dca.png\" alt=\"為什麼 Brush v0.4 比另一個 Rust Shell 更重要\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>這個批評有它的道理，因為 shell 專案最後都要付 compatibility debt，Brush 也不例外。但這不構成否定 v0.4 的理由。相反地，當一個 shell 已經明確往 Bash\u002FPOSIX 對齊，還先把最容易炸掉工作流的語義與失敗處理補起來，它就不是在追求新奇，而是在建立可信替代品的最低門檻。Brush 仍然要持續交付，但 v0.4 已經證明它在解對問題。\u003C\u002Fp>\u003Ch2>你能做什麼\u003C\u002Fh2>\u003Cp>如果你是工程師，別把 Brush 當成玩具，直接拿你最常壞的腳本測它：失敗處理、trap、pipe、login shell 啟動、跨平台路徑與編碼。若你是 PM 或創辦人，這個版本的訊號更清楚：基礎設施工具的信任，不是靠宣傳功能建立，而是靠把邊角故障先消掉。Brush v0.4 提醒我們，在系統軟體裡，可靠性就是產品，兼容性就是證據。\u003C\u002Fp>","Brush v0.4 之所以重要，不是因為它又是一個 Rust shell，而是因為它開始像 Bash 和 POSIX 的可信替代品。","www.phoronix.com","https:\u002F\u002Fwww.phoronix.com\u002Fnews\u002FBrush-0.4-Shell-Released",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1777969246720-94h3.png",[13,14,15,16,17],"Brush","Rust shell","Bash compatibility","POSIX","shell reliability","zh",2,false,"2026-05-05T08:20:26.165236+00:00","2026-05-05T08:20:26.003+00:00","done","a7690dc1-5d11-4d9c-ba03-b120942bd0c1","why-brush-v0-4-matters-more-than-another-rust-shell-zh","tools","ad4b44cf-6b1c-49e9-941f-e6939f5a9a12","published","2026-05-05T09:00:16.576+00:00",[31,32,33],"Brush v0.4 的核心價值是兼容性，不是新奇感。","它把 shell 從 demo 推向可日常使用的可信替代品。","Rust 的意義在於提升邊界情境下的可靠性與跨平台穩定性。",[35,37,39,41,43],{"name":17,"slug":36},"shell-reliability",{"name":13,"slug":38},"brush",{"name":15,"slug":40},"bash-compatibility",{"name":16,"slug":42},"posix",{"name":14,"slug":44},"rust-shell",{"id":27,"slug":46,"title":47,"language":48},"why-brush-v0-4-matters-rust-shell-en","Why Brush v0.4 Matters More Than Another Rust Shell","en",[50,56,62,68,74,80],{"id":51,"slug":52,"title":53,"cover_image":54,"image_url":54,"created_at":55,"category":26},"d058a76f-6548-4135-8970-f3a97f255446","why-gemini-api-pricing-is-cheaper-than-it-looks-zh","為什麼 Gemini API 定價其實比看起來更便宜","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778869845081-j4m7.png","2026-05-15T18:30:25.797639+00:00",{"id":57,"slug":58,"title":59,"cover_image":60,"image_url":60,"created_at":61,"category":26},"68e4be16-dc38-4524-a6ea-5ebe22a6c4fb","why-vidhub-huiyuan-hutong-bushi-quan-shebei-tongyong-zh","為什麼 VidHub 會員互通不是「買一次全設備通用」","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778789450987-advz.png","2026-05-14T20:10:24.048988+00:00",{"id":63,"slug":64,"title":65,"cover_image":66,"image_url":66,"created_at":67,"category":26},"7a1e174f-746b-4e82-a0e3-b2475ab39747","why-buns-zig-to-rust-experiment-is-right-zh","為什麼 Bun 的 Zig-to-Rust 實驗是對的","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778767879127-5dna.png","2026-05-14T14:10:26.886397+00:00",{"id":69,"slug":70,"title":71,"cover_image":72,"image_url":72,"created_at":73,"category":26},"e742fc73-5a65-4db3-ad17-88c99262ceb7","why-openai-api-pricing-is-product-strategy-zh","為什麼 OpenAI API 定價是產品策略，不是註腳","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778749859485-chvz.png","2026-05-14T09:10:26.003818+00:00",{"id":75,"slug":76,"title":77,"cover_image":78,"image_url":78,"created_at":79,"category":26},"c757c5d8-eda9-45dc-9020-4b002f4d6237","why-claude-code-prompt-design-beats-ide-copilots-zh","為什麼 Claude Code 的提示設計贏過 IDE Copilot","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778742645084-dao9.png","2026-05-14T07:10:29.371901+00:00",{"id":81,"slug":82,"title":83,"cover_image":84,"image_url":84,"created_at":85,"category":26},"4adef3ab-9f07-4970-91cf-77b8b581b348","why-databricks-model-serving-is-right-default-zh","為什麼 Databricks Model Serving 是生產推論的正確預設","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778692245329-a2wt.png","2026-05-13T17:10:30.659153+00:00",[87,92,97,102,107,112,117,122,127,132],{"id":88,"slug":89,"title":90,"created_at":91},"de769291-4574-4c46-a76d-772bd99e6ec9","googles-biggest-gemini-launches-in-2026-zh","Google 2026 最大 Gemini 盤點","2026-03-26T07:26:39.21072+00:00",{"id":93,"slug":94,"title":95,"created_at":96},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":98,"slug":99,"title":100,"created_at":101},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":103,"slug":104,"title":105,"created_at":106},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":108,"slug":109,"title":110,"created_at":111},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":113,"slug":114,"title":115,"created_at":116},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":118,"slug":119,"title":120,"created_at":121},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":123,"slug":124,"title":125,"created_at":126},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":128,"slug":129,"title":130,"created_at":131},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":133,"slug":134,"title":135,"created_at":136},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00"]