Le meilleur de chaque langage,
en un seul.
Un langage statiquement typé qui compile vers du C portable, puis vers un vrai binaire natif. Self-hosted, multi-plateforme.
curl -sSL https://amalgame.me/install.sh | sh
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}!" } }
Un aperçu
Pattern matching, null-safety, lambdas, comprehensions, génériques. Le confort moderne, à la vitesse du C natif.
Self-hosted
Le compilateur amc est écrit en Amalgame et se recompile en cinq secondes, suite de tests incluse.
Compile vers C, puis vers un vrai binaire
amc émet du C lisible, gcc le transforme en exécutable natif standard. Un vrai binaire, déployable comme un programme C classique, sans Amalgame installé chez l'utilisateur.
Multi-plateforme
Linux, macOS, Windows. Binaires produits à chaque tag.
L'IA n'est pas un plug-in, c'est une commande amc
Le compilateur amc embarque trois sous-commandes pilotées par LLM : migration de 21 langages sources vers Amalgame, génération depuis un prompt, et explication d'un fichier .am en langage naturel. Tu choisis le provider (Anthropic, OpenAI, Google) avec ta propre clé API — aucun serveur Amalgame entre toi et le LLM.
amc migrate · Migrer
Auto-détection de 21 langages (TS, Python, Java, C#, Go, Rust…) à partir de l'extension. Récursion sur dossier, cache SHA-256, validation par amc --check, estimation de coût en --dry-run.
amc generate · Générer
Du prompt en langage naturel à du code Amalgame idiomatique. Streaming via le CLI claude pour passthrough direct sur stdout — idéal pour scaffolder un point de départ.
amc explain · Expliquer
Direction inverse : émet une explication en langage naturel d'un fichier .am. Option --lang pour traduire l'explication dans n'importe quelle langue. Pour le code legacy, l'onboarding, la review.
amc migrate app.ts · amc generate "REST CRUD users" · amc explain main.am
Providers : ANTHROPIC_API_KEY → Claude · OPENAI_API_KEY → ChatGPT · GEMINI_API_KEY → Gemini · fallback CLI claude. Détails dans docs/guide/08-llm-commands.md.
Un package manager intégré, pas un outil tiers
amc package (alias amc pkg) gère les dépendances comme cargo ou npm : manifeste TOML, lockfile, index curé, résolution automatique de la dernière version compatible. Les packages vendor leur propre runtime C/C++ — backends comme SQLite ou DuckDB linkent sans effort.
amc package add
Clone, valide et enregistre une dépendance. Sur les shortnames indexés, le tag est optionnel : amc résout automatiquement la dernière version compatible avec ton amc.
amc package search
Recherche par sous-chaîne dans l'index curé (cache 30 min). Affiche tous les tags connus avec leur statut de compat (✓/✗) et le marqueur ← latest compatible.
amalgame.toml
Manifeste minimal : [package] (name, version, required-amalgame), [dependencies], et pour les libs [stdlib] (header, sources C/C++, cflags, libs). Lockfile amalgame.lock pour la reproductibilité.
amc package add duckdb · amc package list · amc test
amc test installe les deps manquantes automatiquement. Index public : github.com/amalgame-lang/packages-index — PR pour publier ton package.
Une commande, zéro framework, 480/480
Le compilateur amc embarque son propre runner : amc test découvre les *_test.am, les compile, les exécute, et agrège les résultats. Pas de DSL, pas de macros, pas de runner externe. Le compilateur lui-même est validé par 480 tests via cette même commande.
amc test · Découverte auto
amc test parcourt le dossier courant (ou celui que tu passes), trouve tous les fichiers *_test.am, les compile et les exécute en parallèle. Exit non-zéro si un seul cas échoue ou si un fichier ne compile pas.
[PASS] [FAIL] [SKIP]
Pas de framework à apprendre. Chaque fichier de test est un programme Amalgame normal qui imprime [PASS]/[FAIL]/[SKIP] depuis Main. amc parse stdout et agrège. Tu écris des assertions en code Amalgame, point.
CI-friendly
Sortie déterministe et grep-able. Exit code propage à n'importe quel pipeline (GitHub Actions, GitLab CI, etc.). Auto-installe les dépendances de packages avant de lancer la suite.
amc test · amc test ./tests/lexer · amc fmt -w src/ · amc --lint src/main.am
amc fmt re-émet l'AST canoniquement (idempotent). amc --lint signale code mort, locals inutilisés, shadowing — non-fatal.