amalgame v0.8.36 · publiée

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.

⚡ IA-ready, intégré au compilateur

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.

📦 Gestionnaire de paquets natif

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.

✓ Tests intégrés au compilateur

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.