raylib 6.0:無 GPU 的純軟體渲染器與三個新平台後端
GitHub Releases · 2026-04-24
raylib 6.0 是此遊戲/多媒體程式庫迄今規模最大的一次版本更新,核心亮點是在不需要任何 GPU 的條件下完成渲染。
軟體渲染器 rlsw
新增 rlsw(raylib software renderer) 模組,讓 raylib 在缺少 GPU 或 OpenGL 支援的嵌入式環境中也能正常運行。rlsw 實作了與 OpenGL 相容的渲染管線,包含頂點變換、光柵化與片段著色,全部在 CPU 上執行,並輸出至標準幀緩衝。
三個新平台後端
- Win32:原生 Windows 實作,不依賴 GLFW,減少外部依賴。
- Emscripten:網頁部署後端,不需額外外部依賴即可編譯至 WebAssembly。
- Memory:無頭渲染後端,直接輸出到記憶體幀緩衝,適合伺服器端圖像生成與測試自動化。
API 擴充
此次版本總計新增 20 個新函數,使 API 達到 600 個。其中:
- 40+ 檔案系統管理函數整合入核心模組(原分散於 utils)
- 30+ 文字處理函數
- 骨骼動畫新增幀間與不同動畫間的混合(blending)支援
- 全螢幕模式與 High-DPI 縮放全部重寫,優先採用無邊框模式
建置簡化
raylib 6.0 刪除了 utils 模組,整個函式庫精簡為 6–7 個 C 檔案。建置設定透過改進的 feature flags 管理,降低從源碼整合的複雜度。
規模指標
自上一版本以來,專案累積 2,000 次 commit(總計 9,760 次)、70 個新範例(總計 215 個)、210 位新貢獻者(總計 850 位)、關閉 330 個 issue(累計 2,150 個)。
Gleam 1.16.0:JavaScript Source Maps 讓偵錯回到原始碼
gleam.run · 2026-04-24
Gleam v1.16.0 帶來了 JavaScript 目標最受期待的功能:Source Maps 支援。Gleam 以靜態型別為核心,編譯至 JavaScript(或 Erlang),過去在瀏覽器或 Node.js 執行期的錯誤訊息只能顯示編譯後的 JS 行號,導致偵錯困難。
啟用方式
在專案的 gleam.toml 設定中加入:
[javascript]
source_maps = true編譯器會在 JavaScript 輸出旁生成對應的 .map 檔案。使用 Lustre dev-tools 或直接服務 build 目錄時,瀏覽器自動讀取映射;其他部署環境需確保 .map 檔案可公開存取。
偵錯效果
啟用後,瀏覽器開發者工具(已在 Safari 確認)與 Node.js 的例外堆疊追蹤可直接顯示原始 Gleam 程式碼的行號與函數名稱,並支援在原始碼設定中斷點進行互動式偵錯。
效能優化
編譯器新增對單字元字串前綴匹配的特化處理:JavaScript 輸出中以字元碼比較取代字串切片,相關套件的執行期效能提升約 30%。
其他變更
- 套件級容錯編譯:單一模組失敗不再中止整個套件的編譯流程。
- Language Server 改進:新增匿名函數增刪、
extract function、type hole 填充等 code actions。 - 格式化:改進巢狀 tuple 排版;支援 TypeScript 與 JSX 副檔名。