命令列工具
anzellai/sky avatar
anzellai/sky

Sky:一種編譯為型別化 Go 的受 Elm 啟發的語言

此專案圍繞「Sky, an Elm-inspired language that compiles to Go. Hindley-Milner types, server-driven UI (Sky.Live), single binary output.」建置,聚焦實際場景的開源實作,提供可重用的工具鏈與整合方式。

432 個 Star10 個 ForkGoApache-2.0
GitHub

秒懂

它是什麼?
全端函數式語言,支援 Hindley-Milner 型別、伺服器驅動 UI 和單一二進位輸出。目前為 v0.19 發布候選,編譯器已改用 Rust 重寫。 本文依 README 整理可核對的入口、資料流與使用界線。
適合誰用?
anzellai/sky 適合能依 README 指定的環境、輸入和權限操作的團隊,不適合把未列出的相容性、效能或營運結果視為既定事實。先從 sky 的官方 README 入口執行最小範例,記錄命令、設定、輸出與錯誤,再決定是否擴大資料及權限範圍。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫在最近一天內有新的提交。
用什麼語言寫的?
主要是 Go(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

Sky 是什麼及其現況

Sky 是一種編譯為型別化 Go 的全端函數式語言。倉庫將其描述為一種受 Elm 啟發的語言,具有 Hindley-Milner 型別、伺服器驅動 UI (Sky.Live) 和單一二進位輸出。README 的狀態行稱其為 v0.19.x 發布候選,公共 API 在 v1.0 系列保持穩定,內部實作仍可能變化。編譯器目前以 Rust 編寫,位於 rust/ 下的 cargo 工作區;退役的 Haskell 編譯器保留在 legacy-haskell-compiler/ 下,作為差分 oracle 直到 v1 標記發布。README 稱型別化 Go 輸出和'能編譯就能工作'的保證與早期編譯器保持一致。

anzellai/sky 的 README 第 1 項核對應聚焦於 sky:先記下文件列出的輸入、啟動命令和輸出,再把錯誤訊息與生成檔案分開觀察。若流程使用 Go、網路端點或權限,測試時保留實際版本與設定值;README 沒有交代的相容性,不延伸成保證。 sky 的這個觀察點必須與上一輪結果分開記錄,避免把範例成功執行誤當成所有環境都成立。

anzellai/sky 的 README 第 7 項核對應聚焦於 sky:先記下文件列出的輸入、啟動命令和輸出,再把錯誤訊息與生成檔案分開觀察。若流程使用 Go、網路端點或權限,測試時保留實際版本與設定值;README 沒有交代的相容性,不延伸成保證。 sky 的這個觀察點必須與上一輪結果分開記錄,避免把範例成功執行誤當成所有環境都成立。

anzellai-sky-deep-analysis 第 1 節的具體核對點是 Sky 是什麼及其現況。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

語言模型與編譯期檢查

Sky 使用 Elm 風格語法,包括明確型別、窮盡模式比對和無執行時期例外。根據 README,每個副作用都回傳 Task Error a,每個可能失敗的值都回傳 Result Error a,sky check 會對產生的 Go 執行 go build,因此任何形狀不相符都會在型別檢查階段暴露。專案聲稱沒有執行時期 null、沒有未捕捉例外、沒有靜默數值強制轉換。它還表示編譯器透過 sky add 內省 Go 套件並產生型別化繫結,無需手寫 FFI 膠水程式碼,並引用一個約 76k FFI 符號的 Stripe SDK,編譯和樹搖後產生約 4k 行的 main.go。這些是專案聲明,倉庫中不包含第三方基準或對這些數字的獨立驗證。

anzellai/sky 的 README 第 2 項核對應聚焦於 sky:先記下文件列出的輸入、啟動命令和輸出,再把錯誤訊息與生成檔案分開觀察。若流程使用 Go、網路端點或權限,測試時保留實際版本與設定值;README 沒有交代的相容性,不延伸成保證。 sky 的這個觀察點必須與上一輪結果分開記錄,避免把範例成功執行誤當成所有環境都成立。

anzellai/sky 的 README 第 8 項核對應聚焦於 sky:先記下文件列出的輸入、啟動命令和輸出,再把錯誤訊息與生成檔案分開觀察。若流程使用 Go、網路端點或權限,測試時保留實際版本與設定值;README 沒有交代的相容性,不延伸成保證。 sky 的這個觀察點必須與上一輪結果分開記錄,避免把範例成功執行誤當成所有環境都成立。

anzellai-sky-deep-analysis 第 2 節的具體核對點是 語言模型與編譯期檢查。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

同一套原始碼,多種應用形態

相同的 init/update/view/subscriptions 結構可以編譯為用於伺服器渲染 Web 應用程式的 Sky.Live、用於終端介面的 Sky.Tui,以及用於原生桌面視窗的 Sky.Webview。README 的表格還列出了用於 HTTP 和 JSON API 的 Sky.Http.Server、用於 CLI 工具的 Sky.Cli,以及用於桌面的 Sky.Webview。所有形態共用 Std.Ui 進行版面配置、Std.Auth 進行工作階段、Std.Db 進行持久化、Std.Log 和 Std.Trace 進行可觀測性,以及 Sky.Core.* 提供純原語。標準程式庫包含認證、資料庫、HTTP 用戶端和伺服器、WebSocket、JSON、JWT、CSV、電子郵件、加密、快取、貨幣、十進位、分析、壓縮和設定等模組,每個模組都在 docs/stdlib.md 和 sky doc --serve 中有文件說明。

anzellai/sky 的 README 第 3 項核對應聚焦於 sky:先記下文件列出的輸入、啟動命令和輸出,再把錯誤訊息與生成檔案分開觀察。若流程使用 Go、網路端點或權限,測試時保留實際版本與設定值;README 沒有交代的相容性,不延伸成保證。 sky 的這個觀察點必須與上一輪結果分開記錄,避免把範例成功執行誤當成所有環境都成立。

anzellai-sky-deep-analysis 第 3 節的具體核對點是 同一套原始碼,多種應用形態。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

可觀測性與生產部署

Sky.Live 和 Sky.Http.Server 應用程式會自動掛載 /_sky 下的端點:console、metrics、healthz、readyz、buildinfo。主控台透過 SKY_CONSOLE_AUTH 在生產環境進行存取控制。metrics 是帶有計數器和直方圖的 Prometheus 抓取端點。執行 sky console serve 可以建立一個中心樞紐,多個應用程式透過 HubExporter (OTLP/HTTP) 向它推送遙測資料。README 表示會辨識 OTEL_EXPORTER_OTLP_ENDPOINT,以接入標準 OpenTelemetry 收集器。生產設定透過 sky.toml 管理 live、database、auth 和 log 設定,密鑰從環境變數讀取。生產模式由 ENV 控制(回退到 SKY_ENV);未設定或為 dev/development/local 時執行開發模式,其他值會鎖定開發主控台、橫幅和 metrics 端點。建置命令為 sky build src/Main.sky,產物為 ./sky-out/app。

anzellai/sky 的 README 第 4 項核對應聚焦於 sky:先記下文件列出的輸入、啟動命令和輸出,再把錯誤訊息與生成檔案分開觀察。若流程使用 Go、網路端點或權限,測試時保留實際版本與設定值;README 沒有交代的相容性,不延伸成保證。 sky 的這個觀察點必須與上一輪結果分開記錄,避免把範例成功執行誤當成所有環境都成立。

anzellai-sky-deep-analysis 第 4 節的具體核對點是 可觀測性與生產部署。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

安裝與從原始碼建置

README 提供了兩種安裝方式。對於 macOS 和 Linux,單一二進位安裝使用 curl -fsSL https://raw.githubusercontent.com/anzellai/sky/main/install.sh | sh。從原始碼建置需要 Rust 工具鏈:複製倉庫,進入 rust/,執行 cargo build --release -p sky,或者使用 cargo install --path rust/crates/sky --root ~/.local --locked 安裝到 ~/.local/bin。sky 二進位嵌入了執行時期、標準程式庫和 Sky Console。最終使用者只需要 PATH 中的 sky 和用於程式碼產生的 Go 1.21+。倉庫沒有記錄 Windows 安裝步驟或最低 Rust 版本要求。

anzellai/sky 的 README 第 5 項核對應聚焦於 sky:先記下文件列出的輸入、啟動命令和輸出,再把錯誤訊息與生成檔案分開觀察。若流程使用 Go、網路端點或權限,測試時保留實際版本與設定值;README 沒有交代的相容性,不延伸成保證。 sky 的這個觀察點必須與上一輪結果分開記錄,避免把範例成功執行誤當成所有環境都成立。

anzellai-sky-deep-analysis 第 5 節的具體核對點是 安裝與從原始碼建置。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

授權條款與歷史授權

該專案採用 Apache License 2.0,版權為 2025 至 2026 Anzel Lai。README 指出該授權條款包含專利授權和商標條款,且衍生檔案的先前歸屬說明,包括從 elm/compiler 在 BSD-3-Clause 下改編的型別推斷核心部分,存放在 NOTICE.md 中。它還說明到 v0.10.0(含)為止的版本以 MIT 授權發布,v0.10.1 起改用 Apache 2.0。授權條款文字本身授予對作品的永久、全球性、非排他、免費、免版稅、不可撤銷的版權和專利授權,並允許按照第 1 至 9 節定義的條款進行再散布。授權條款文字沒有對保固、支援或安全狀況作出聲明;這些方面的任何預期都需要在其他地方查證。

anzellai/sky 的 README 第 6 項核對應聚焦於 sky:先記下文件列出的輸入、啟動命令和輸出,再把錯誤訊息與生成檔案分開觀察。若流程使用 Go、網路端點或權限,測試時保留實際版本與設定值;README 沒有交代的相容性,不延伸成保證。 sky 的這個觀察點必須與上一輪結果分開記錄,避免把範例成功執行誤當成所有環境都成立。

anzellai-sky-deep-analysis 第 6 節的具體核對點是 授權條款與歷史授權。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

編輯結論

anzellai/sky 適合能依 README 指定的環境、輸入和權限操作的團隊,不適合把未列出的相容性、效能或營運結果視為既定事實。先從 sky 的官方 README 入口執行最小範例,記錄命令、設定、輸出與錯誤,再決定是否擴大資料及權限範圍。

官方來源

  1. Official README
  2. Project repository
  3. Release notes
社群筆記

社群筆記