![]()
在軟件開發領域,技術迭代和更新是常態。最近,Node.js社區發生了一些重大變化,這些變化可能會對JavaScript開發者產生深遠影響。Node.js計劃移除自16.13.0版本以來一直包含的工具Corepack,這一決定在開發者中引起了廣泛的討論。
Corepack是一個簡化了管理不同Node.js版本和包管理器(如npm、yarn和pnpm)的工具,它允許開發者在不同項目中輕松切換,同時解決了兼容性問題和手動配置的繁瑣。然而,Corepack的命運在經歷了一番波折后,最終決定被移除。這一決定背后的故事頗為曲折,原本計劃將Corepack默認啟用,但后來卻出現了180度大轉彎,決定將其移除。許多web開發者對此表示失望,因為Corepack曾是他們處理npm問題的一大助力。
與此同時,Bun這個集成了JavaScript運行時、打包器、測試運行器和包管理器的工具,現在提供了一個實驗性功能,允許從JavaScript直接編譯和運行原生C代碼。Bun的這一新特性引發了社區的廣泛關注,因為它打開了JavaScript與系統級編程語言C之間的直接通道。
Bun的創建者Jarred Sumner表示,世界上從壓縮算法到密碼學,再到網絡,甚至是你正在閱讀這篇文章的web瀏覽器,幾乎都是用C語言編寫的。如果它們不是用C語言編寫的,那么它們就是使用CABI(例如C++、Rust、Zig等)編寫的,并以C庫的形式提供。C語言及其ABI是系統編程的過去、現在和未來。
Sumner指出,通過C語言,開發者可以以低門檻的方式使用C庫和系統庫,這一特性允許運行JavaScript的同一項目也能夠運行C代碼,而無需單獨的構建步驟。他舉例說,使用Bun可以通過ffmpeg將短視頻轉換速度提高三倍,這得益于避免了為每個視頻生成新進程和分配大量內存的開銷。此外,還可以通過macOSKeychainAPI安全地保存和加載密碼。
Bun的這一新特性對于那些希望從JavaScript使用C庫或系統API的開發者來說是一個福音。盡管如此,Sumner也提醒說,開發者可能并不需要用這種方式來編譯大型項目,如PostgreSQL或SQLite。因為TinyCC編譯的C代碼雖然性能尚可,但它不會進行像Clang或GCC那樣的高級優化,例如自動向量化或非常專業的CPU指令集。
在技術快速迭代的今天,Node.js和Bun的這些變化標志著JavaScript生態系統正在不斷進化,以滿足開發者日益增長的需求。對于Node.js來說,移除Corepack可能是為了簡化其工具鏈,讓開發者更專注于使用npm、yarn或pnpm等成熟的包管理器。而對于Bun,支持原生C代碼的運行則展示了其在提升性能和功能性方面的雄心。
這些變化對于JavaScript開發者來說是一個雙刃劍。一方面,他們可能需要重新評估自己的工具選擇和開發流程,以適應Node.js的新方向;另一方面,Bun的新特性為他們提供了更強大的工具,以構建性能更優和功能更全的應用。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.