Amalgame Lab
Un langage ne vaut que par ce qu'on construit avec. Voici l'atelier : des projets réels, certains en production, d'autres encore sur l'établi — chacun choisi pour prouver un point précis. Le serveur web qui sert cette page. Un orchestrateur P2P. Une station météo sur Raspberry Pi. Le même amc, du datacenter au capteur.
Mosaic — le web, servi par Amalgame
La page que tu lis est servie par un unique binaire natif écrit en Amalgame. Pas de Node, pas de nginx devant, pas de reverse proxy : le binaire termine le TLS lui-même, choisit le bon site d'après le Host (SNI), et sert le tout sur le port 443. Le certificat HTTPS est obtenu et renouvelé par une state machine ACME pure-Amalgame (RFC 8555, Let's Encrypt) — sans certbot, sans sous-process.
Un seul process, plusieurs domaines, contenu statique et dynamique (la page Versions est remplie en direct depuis l'API GitHub, le formulaire de contact vérifie un reCAPTCHA côté serveur puis envoie un mail SMTP/TLS). C'est le dogfooding ultime : si Mosaic ne tenait pas, ce site tomberait.
L'ossature, telle qu'elle tourne ici — un binaire, plusieurs hôtes. (Le code sensible — clés reCAPTCHA, identifiants SMTP — vit hors source, jamais dans le dépôt.)
let server = SiteServer.New() // Un site = un dossier. Plusieurs domaines peuvent pointer dessus. server.Register(["docs.amalgame.me"], "sites/docs.amalgame.me") server.Register(["demo.amalgame.me"], "sites/demo.amalgame.me") server.RegisterAmalgameWithContact( ["amalgame.me", "www.amalgame.me"], "sites/www.amalgame.me", releases, cfg) // cfg = secrets chargés à l'exécution, hors dépôt // ACME natif par domaine, puis un seul listener HTTPS + SNI. server.EnsureCerts() server.ListenHttps(443) // le :80 redirige en 301 vers https://
Pollen — orchestration P2P, sans broker
Là où Mosaic prouve qu'Amalgame fait du web, Pollen prouve qu'il fait du système distribué. C'est un bus de données pair-à-pair et son orchestrateur : pas de broker à provisionner, pas de cluster à maintenir. Les nœuds se parlent en direct (TCP + ACK applicatif), et un fichier workflow.json partagé dit à chacun quoi faire à chaque étape — call, if, for, while, goto, état persistant.
Pollen est un projet exigeant — concurrence, réseau bas niveau, machine à états — exactement le genre de chose pour laquelle on choisit habituellement Go ou Rust. Le fait qu'il avance en Amalgame, package après package, est la démonstration. Le runtime vit dans amalgame-pollen ; une interface web (elle-même en Mosaic) édite les workflows visuellement.
Station météo — Amalgame sur Raspberry Pi
Le web et le distribué, c'est du logiciel. Restait à prouver qu'Amalgame descend jusqu'au matériel. Le banc d'essai : une station météo bâtie sur un Raspberry Pi Zero W et ses capteurs (température, humidité, pression), pilotés directement depuis Amalgame. Le même .am que tu écris sur ton poste se compile en binaire natif ARM64 et tourne sur le Pi — pas d'interpréteur embarqué, pas de couche Python.
Les broches passent par amalgame-hardware-gpio, premier package de la famille Amalgame.Hardware : GPIO numérique via libgpiod v2 (l'API noyau, valable du Pi 1 au Pi 5), avec une forme d'API calquée sur le futur HAL bare-metal MCU. I2C, SPI, PWM et UART — donc les capteurs de la station — arrivent dans les phases suivantes. La réalisation est en cours ; le pipeline ARM64 (CI + releases) est déjà vert.
.amLe GPIO, à la HAL — la même API lira un capteur sur le Pi aujourd'hui et un MCU bare-metal demain.
import Amalgame.Hardware let gpio = Gpio.New().AutoChip() // détecte RP1 (Pi 5) vs Pi 4- gpio.PinMode(17, PinMode.Output) gpio.DigitalWrite(17, Level.High) // LED témoin : mesure en cours // I2C arrive en phase 2 → lecture directe d'un capteur T°/humidité.
Ce que l'atelier démontre
Trois projets, trois niveaux de la pile, un seul langage et un seul compilateur. C'est l'argument : Amalgame n'est pas une démo de syntaxe, c'est un outil avec lequel on livre.
Ça sert des sites
Ce site, sa doc, sa démo et des sites clients tournent sur un binaire Mosaic unique, HTTPS automatique compris.
Ça orchestre
Pollen fait du pair-à-pair et du workflow sans broker — le terrain habituel de Go/Rust, en Amalgame.
Ça pilote du matériel
Binaire natif ARM64 sur Raspberry Pi, GPIO via libgpiod — du datacenter au capteur, un seul code.
Envie d'ajouter ton projet à l'atelier ?
Amalgame est libre (Apache-2.0) et s'installe en 30 secondes. Construis quelque chose — et raconte-le.