Présentation d'un langage compilé, self-hosted, qui transpile vers du C portable puis vers un vrai binaire — sans runtime ni machine virtuelle.
En une phrase
Amalgame est un langage à typage statique dont le compilateur émet du C portable, ensuite transformé en exécutable natif par gcc. Pas de VM, pas de runtime à installer chez l'utilisateur final : le binaire produit se déploie comme n'importe quel programme C. Le compilateur, amc, est lui-même écrit en Amalgame (il est self-hosted) et se recompile, suite de tests comprise, en quelques secondes.
L'objectif assumé : retrouver le confort syntaxique des langages modernes (pattern matching, null-safety, lambdas, génériques, compréhensions de listes) tout en conservant la vitesse et la portabilité d'un binaire C classique.
Le principe : C comme cible d'assemblage portable
L'idée n'est pas neuve — Nim, V, ou historiquement Vala l'ont exploitée — mais elle reste pertinente. Plutôt que de cibler directement un jeu d'instructions ou de s'appuyer sur LLVM, Amalgame génère du C lisible, puis délègue à gcc toute l'optimisation et la portabilité (Linux, macOS, Windows). Les avantages concrets :
- Portabilité maximale : partout où il y a un compilateur C, le code tourne.
- Interopérabilité native : lier une bibliothèque C/C++ (SQLite, DuckDB…) ne demande pas de FFI complexe, puisqu'on est déjà en C en sortie.
- Pas de runtime imposé : le livrable est un exécutable autonome, pas un bundle accompagné d'un interpréteur.
Le revers, comme pour tout langage transpilé vers C, c'est que le débogage au niveau du C généré peut être déroutant, et qu'on hérite des contraintes de la chaîne C sous-jacente. Le pari d'Amalgame est que le C lisible émis limite cette friction.
Un aperçu de la syntaxe
La syntaxe puise dans C# et Kotlin. Voici un exemple complet, tiré de la documentation :
namespace App
import Amalgame.IO
public class Greeter {
public Name: string
public Greeter(string name) {
this.Name = name
}
public string Hello() {
guard String.Length(this.Name) > 0 else {
return "Hello, stranger!"
}
return "Hello, {this.Name}!"
}
}
On y reconnaît plusieurs choix de conception :
- les namespaces et un système d'import explicite ;
- la clause guard … else (familière aux développeurs Swift) pour sortir tôt d'une fonction et garder le chemin nominal à plat ;
- l'interpolation de chaînes avec la syntaxe {expression} ;
- une déclaration de type postfixée (Name: string).
Au-delà de cet exemple, le langage propose pattern matching, sûreté face au null, lambdas, génériques et compréhensions de listes — l'ergonomie attendue d'un langage récent, mais résolue à la compilation et sans coût à l'exécution.
Un compilateur self-hosted
C'est sans doute le point le plus parlant pour un public technique : amc est écrit en Amalgame. Le langage est donc capable de se compiler lui-même, ce qui constitue une preuve de maturité (le fameux bootstrap). Le cycle complet — recompilation du compilateur et exécution de la suite de tests — tient en quelques secondes, ce qui rend les itérations confortables.
La suite de tests qui valide le compilateur compte près de 480 cas à l'heure où j'écris ces lignes. Le langage en est encore à une version 0.8.x : il est utilisable et éprouvé sur lui-même, mais pas encore stabilisé en 1.0.
L'outillage : tout dans amc
Plutôt que d'éparpiller les fonctions dans une constellation d'outils, Amalgame regroupe l'essentiel dans le binaire amc :
- Tests : amc test parcourt le dossier, repère les fichiers *_test.am, les compile et les exécute en parallèle, puis agrège les résultats. Pas de framework à apprendre : chaque fichier de test est un programme Amalgame normal qui imprime [PASS]/[FAIL]/[SKIP], et le code de sortie se propage à n'importe quel pipeline CI (GitHub Actions, GitLab CI…).
- Formatage : amc fmt -w src/ réémet l'AST de façon canonique (idempotent).
- Lint : amc --lint src/main.am.
- Gestion de paquets : amc package (alias amc pkg) fonctionne comme cargo ou npm — manifeste TOML, lockfile (amalgame.lock), index curé, résolution automatique de la dernière version compatible. Les paquets embarquent leur propre runtime C/C++, ce qui permet de lier un backend comme SQLite ou DuckDB sans effort de configuration.
amc test
amc fmt -w src/
amc --lint src/main.am
amc package add duckdb
L'angle « ère des agents »
Amalgame intègre trois sous-commandes pilotées par LLM, avec votre propre clé d'API (Anthropic, OpenAI ou Google), sans serveur intermédiaire :
amc migrate app.ts # migration depuis 21 langages sources vers Amalgame
amc generate "REST CRUD users" # génération de code à partir d'un prompt
amc explain main.am # explication en langage naturel d'un fichier
amc migrate auto-détecte 21 langages sources (TypeScript, Python, Java, C#, Go, Rust…) à partir de l'extension, avec récursion sur dossier, cache SHA-256 et validation automatique du résultat via amc --check.
L'argument de fond mérite d'être posé clairement, car c'est là que le typage statique reprend du sens à l'heure des assistants de code : un modèle qui génère du code « halluciné » produit, dans un langage strictement typé compilé, une erreur de compilation plutôt qu'un bug silencieux à l'exécution. Le compilateur devient un garde-fou pour le code produit par une IA. C'est un positionnement, pas une démonstration définitive — mais l'argument est cohérent.
Site et documentation : amalgame.me
Dépôt et binaires (publiés à chaque tag) : github.com/amalgame-lang/Amalgame
Le projet est open source ; les retours, issues et PR (notamment sur la stdlib) sont les bienvenus.
# Pitié
Posté par gUI (Mastodon) . Évalué à 10 (+11/-0).
Vibe codeurs du monde entier, gardez vos trucs pour vous. On ne peut plus s'extasier sur une nouveauté.
Pissez votre code dans votre coin (ou plutôt, tenez le sexe de Claude pendant qu'il pisse) (la vanne n'est pas de moi), mais arrêtez ensuite de venir nous bassiner avec.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Pitié
Posté par amalgame.me (site web personnel) . Évalué à -8 (+0/-8). Dernière modification le 29 juin 2026 à 11:29.
Que de belles phrases et ouverture d'esprit sur ce site qui ce veux par ailleurs ouvert.
Bastien
[^] # Re: Pitié
Posté par gUI (Mastodon) . Évalué à 4 (+1/-0). Dernière modification le 29 juin 2026 à 12:09.
Le problème c'est que vibe coder ça va vite. Par contre si tu avais dû le coder à la main, tu aurais d'abord cherché et peut-être que Zig aurait répondu à ton besoin ?
Écrire un journal sur zig, nim et odin (c'est Claude qui m'a dit que en gros ton truc n'apporte rien), leurs limitations et pourquoi tu as décidé de faire autre chose (et le vibe coder à y être, pourquoi pas), ça aurait été intéressant.
Mais un journal vibe écrit vers du code vibe codé non, c'est pas intéressant.
On voit que t'es nouveau ici ^^
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Pitié
Posté par barmic 🦦 . Évalué à 3 (+1/-0).
L’IA ici n’est pas un problème pour moi, il augmente juste le problème.
Ça fait 30 ans si ce n’est 40 qu’on voit débarquer des C killer beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup d’approches existent à l’heure actuelle. Venir la bouche en fleure expliquer que tu as une énième tentative sans expliquer en quoi elle serait remarquable est un vrai gros problème.
L’idée n’est pas d’interdire de le faire, ça peut être un toy project, ça peut être une expérimentation, mais soit il faut le dire soit il faut vraiment potasser l’état de l’art. Dans un monde où nim, zig, C2, haxe,… Il faut plus d’explication de ce qu’est la valeur de ton projet.
Dans ce context le fait que le projet soit essentiellement codé par un LLM ajoute à l’impression de désinvolture. On a toujours eu pleins de projets « codé avant de réfléchir » ou le premier commentaire c’est « qu’est-ce que ça apporte par rapport au projet qui est largement plus mature qui fait la même chose mais qui est supporté par une communauté depuis des années et que tu a vraisemblablement ignoré ? » avec l’IA c’est pire.
Si tu veut t’inscrire dans une démarche de contribution en partageant ton projet, il faut évaluer ce qu’il apporte par rapport à l’existant.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Pitié
Posté par Colin Pitrat (site web personnel) . Évalué à 2 (+0/-0).
Pour répondre à cette question je suggère la lecture de ce fichier qui est instructive: https://raw.githubusercontent.com/amalgame-lang/Amalgame/refs/heads/main/src/amc_lib.c
Hop hop -> []
# Comme d’habitude...
Posté par impromptux (site web personnel) . Évalué à 2 (+1/-0).
[^] # Re: Comme d’habitude...
Posté par amalgame.me (site web personnel) . Évalué à -2 (+0/-2).
Alors si mon article n'est pas conforme supprimer le !
Mais la politesse devrais également faire partie des règles, voir commentaire de gUI !
Bastien
[^] # Re: Comme d’habitude...
Posté par Colin Pitrat (site web personnel) . Évalué à 2 (+0/-0).
Ben ça me paraît plutôt positif comme résultat : 5% de commits par des LLMs et 0% de LLMs parmis les 100 contributeurs les plus actifs.
C'est aussi bizarre comme résultat, donc je n'y crois pas trop. Mais ça semble aller à l'encontre d'un projet complètement/principalement vibe codé.
Même si je doute plutôt de la fiabilité de l'outil que de la conclusion.
[^] # Re: Comme d’habitude...
Posté par impromptux (site web personnel) . Évalué à 1 (+0/-0). Dernière modification le 29 juin 2026 à 12:34.
L’outil se base sur les commits marqués comme assistés par IA par l’outil utilisé (ici Claude). De nombreux commits sont probablement assistés par IA sans être marqués comme tel.
Oui c’est un outil programmé par moi-même donc il a évidemment des défauts. Le 0% de contributeurs étant des LLM est un bug. Je m’en vais de ce pas le corriger…
# Aller, voyons
Posté par Aldebaran (site web personnel) . Évalué à 2 (+1/-0).
Salut, le projet à l'air intéressant même si Claude a été utilisé dès le début visiblement.
Ce qui n'est pas éliminatoire, mais on a vu tellement de m*rdes faites par IA pour tenter de nous extorquer ne serait ce qu'une vu sur un repo qu'on est devenu un peu aigris.
Concrètement, je pense que ce serait plus pertinent d'avoir une vrai présentation du langage, les paradigmes, concepts etc.
Parce que j'avoue qu'on s'y perd un peu avec la prose de l'article (qui encore une fois possède la pâte de Claude). Quel est le but de ce projet ? C'est pour le fun, y a une vision derrière, c'est pour un projet ?
Il donne quoi le code C intermédiaire ?
# Opportunité ratée
Posté par Colin Pitrat (site web personnel) . Évalué à 3 (+1/-0).
Avec un nom comme ça, c'est amalga.me qu'il fallait prendre comme nom de domaine, pas amalgame.me !
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.