sky : analyse pratique pour un usage documenté
Ce projet transforme « Sky, an Elm-inspired language that compiles to Go. Hindley-Milner types, server-driven UI (Sky.Live), single binary output. » en une solution open source exploitable, avec une chaîne d’outils réutilisable et des moyens d’intégration pour des cas d’usage concrets.
En bref
- De quoi s’agit-il ?
- Sky, an Elm-inspired language that compiles to Go. Hindley-Milner types, server-driven UI (Sky.Live), single binary output. Ce que le README permet de vérifier en français.
- À qui s’adresse-t-il ?
- sky s'adresse aux équipes dont le besoin correspond exactement au périmètre décrit dans le README. Il ne faut pas le traiter comme une garantie de production : commencez par le scénario propre à anzellai/sky, la commande ou le fichier documenté, puis observez la sortie, les erreurs, les permissions et les ressources consommées.
- Puis-je l’utiliser commercialement ?
- Oui. Apache-2.0 est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Le dépôt a reçu de nouveaux commits au cours des dernières 24 heures.
- En quel langage est-il écrit ?
- Principalement Go, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Ce qu'est Sky et où il en est
Sky est un langage fonctionnel full-stack qui compile vers du Go typé. Le dépôt le décrit comme un langage inspiré d'Elm avec des types Hindley-Milner, une UI pilotée par serveur (Sky.Live) et une sortie binaire unique. La ligne de statut de la README le qualifie de candidat de version v0.19.x, avec des API publiques stables pour la ligne v1.0 et des internes encore susceptibles de changer. Le compilateur est désormais écrit en Rust, dans un espace de travail cargo sous rust/. L'ancien compilateur Haskell reste sous legacy-haskell-compiler/ comme oracle différentiel jusqu'au tag de v1. La sortie Go typée et la garantie 'si ça compile, ça marche' sont décrites comme conservées à l'identique par rapport à l'ancien compilateur.
Modèle de langage et vérifications à la compilation
Sky utilise une syntaxe de type Elm avec des types explicites, du filtrage par motif exhaustif et aucune exception à l'exécution. Selon la README, chaque effet de bord renvoie Task Error a, chaque valeur faillible renvoie Result Error a, et sky check invoque go build sur le Go généré afin que toute incompatibilité de forme apparaisse au moment de la vérification de types. Le projet affirme qu'il n'y a ni null à l'exécution, ni exception non attrapée, ni conversion numérique silencieuse. Il indique aussi que le compilateur introspecte les paquets Go via sky add et génère des liaisons typées sans colle FFI écrite à la main, citant un SDK Stripe d'environ 76 000 symboles FFI qui compile et est réduit par tree-shaking en un main.go d'environ 4 000 lignes. Ce sont des affirmations du projet ; le dépôt ne contient pas de benchmarks tiers ni de vérification indépendante de ces chiffres.
Une seule source, plusieurs formes d'application
La même structure init/update/view/subscriptions compile vers Sky.Live pour les applications web rendues côté serveur, Sky.Tui pour les interfaces terminal et Sky.Webview pour les fenêtres de bureau natives. Le tableau de la README liste aussi Sky.Http.Server pour les API HTTP et JSON, Sky.Cli pour les outils en ligne de commande et Sky.Webview pour le bureau. Toutes les formes partagent Std.Ui pour la mise en page, Std.Auth pour les sessions, Std.Db pour la persistance, Std.Log et Std.Trace pour l'observabilité, et Sky.Core.* pour les primitives pures. La bibliothèque standard inclut des modules pour l'authentification, la base de données, le client et serveur HTTP, WebSocket, JSON, JWT, CSV, e-mail, chiffrement, cache, monnaie, décimal, analytique, compression et configuration, chacun documenté dans docs/stdlib.md et via sky doc --serve.
Observabilité et déploiement en production
Les applications Sky.Live et Sky.Http.Server montent automatiquement des points de terminaison sous /_sky : console, metrics, healthz, readyz, buildinfo. La console est contrôlée en production via SKY_CONSOLE_AUTH. metrics est un point de terminaison de scraping Prometheus avec compteurs et histogrammes. Lancer sky console serve crée un hub central vers lequel plusieurs applications envoient de la télémétrie via HubExporter (OTLP/HTTP). La README indique que OTEL_EXPORTER_OTLP_ENDPOINT est respecté pour les collecteurs OpenTelemetry standard. Pour la production, sky.toml gère les paramètres live, database, auth et log, avec les secrets lus depuis des variables d'environnement. Le portail de production est ENV (avec repli sur SKY_ENV) ; non défini ou dev/development/local déclenche le mode développement, toute autre valeur verrouille la console de développement, la bannière et le point de terminaison metrics. La commande de build est sky build src/Main.sky, produisant un exécutable dans ./sky-out/app.
Installation et compilation depuis le code source
La README donne deux chemins d'installation. Pour macOS et Linux, une installation binaire unique utilise curl -fsSL https://raw.githubusercontent.com/anzellai/sky/main/install.sh | sh. Pour compiler depuis le code source, une toolchain Rust est nécessaire : cloner le dépôt, entrer dans rust/, puis exécuter cargo build --release -p sky, ou installer vers ~/.local/bin avec cargo install --path rust/crates/sky --root ~/.local --locked. Le binaire sky embarque le runtime, la bibliothèque standard et la Sky Console. Les utilisateurs finaux n'ont besoin que de sky dans le PATH et de Go 1.21+ pour la génération de code. Le dépôt ne documente pas d'étapes d'installation pour Windows ni de version minimale de Rust.
Licence et historique des licences
Le projet est sous licence Apache License 2.0, copyright 2025 à 2026 Anzel Lai. La README indique que la licence comprend une concession de brevets et une clause de marque, et que l'attribution des antériorités pour les fichiers dérivés, y compris des parties du noyau d'inférence de types adapté de elm/compiler sous BSD-3-Clause, se trouve dans NOTICE.md. Elle précise aussi que les versions jusqu'à v0.10.0 incluse étaient sous MIT, et que v0.10.1 et suivantes sont sous Apache 2.0. Le texte de la licence accorde lui-même une licence de droit d'auteur et de brevet perpétuelle, mondiale, non exclusive, gratuite, sans redevance et irrévocable sur l'œuvre, et autorise la redistribution selon les conditions définies dans les sections 1 à 9. Le texte de la licence ne fait aucune déclaration sur la garantie, le support ou la posture de sécurité ; toute attente sur ces points devrait être vérifiée ailleurs.
Test ciblé de sky
Sky est un langage fonctionnel full-stack inspiré d'Elm qui compile vers du Go typé. La source partage init, update, view et subscriptions entre Sky.Live côté serveur et Sky.Spa côté client wasm. Les types Hindley-Milner, le filtrage exhaustif, Task Error a et Result Error a forment le contrat de programmation annoncé. sky check appelle go build sur le Go produit, ce qui déplace une partie des erreurs de forme vers la vérification. Ces garanties sont celles du README et ne constituent pas un audit indépendant.
La version v0.23.x stabilise les API publiques pour la ligne v1, tandis que les internes peuvent encore changer. Le compilateur Rust se trouve dans rust/ et l'ancien compilateur Haskell dans legacy-haskell-compiler/ sert d'oracle différentiel. L'installation macOS ou Linux peut utiliser install.sh ; une compilation source passe par cargo build --release -p sky. Pour un essai, sky init hello && cd hello && sky run src/Main.sky permet d'observer l'application, puis sky build src/Main.sky produit ./sky-out/app. Les variables ENV et SKY_ENV, sky.toml, SKY_CONSOLE_AUTH et OTEL_EXPORTER_OTLP_ENDPOINT deviennent importantes dès que l'application quitte le mode de développement. Apache-2.0, ainsi que NOTICE.md pour les attributions, encadre la redistribution ; les anciennes versions jusqu'à v0.10.0 inclus étaient MIT.
Conclusion éditoriale
sky s'adresse aux équipes dont le besoin correspond exactement au périmètre décrit dans le README. Il ne faut pas le traiter comme une garantie de production : commencez par le scénario propre à anzellai/sky, la commande ou le fichier documenté, puis observez la sortie, les erreurs, les permissions et les ressources consommées.
Notes de la communauté