Un posto dove il codice Perry può riposare ed essere eseguito.
Coop trasforma una directory di TypeScript compatibile con Perry in una libreria applicativa nativa e la serve via HTTP, fornendo runtime e libreria standard di Perry una sola volta per macchina.
Infrastruttura sperimentale per codice di tua proprietà
Perry compila. Coop mantiene in esecuzione.
La differenza è dove risiede il runtime del linguaggio. Coop mantiene piccola l'immagine applicativa e fornisce il runtime Perry compatibile e la libreria standard a livello host.
Un normale eseguibile Perry
Applicazione, runtime, garbage collector e funzioni selezionate della libreria standard vengono collegati in un eseguibile specifico per il target.
Un deployment Coop
L'applicazione viene compilata come libreria condivisa contenente solo l'app. I provider compatibili vengono costruiti una volta per macchina e la loro identità è verificata prima del mapping.
Separato per confine di errore
Macchina, deployment e richiesta hanno responsabilità distinte. Il codice applicativo non viene mai eseguito nel daemon della macchina.
Daemon · uno per macchina
Termina TLS, instrada per host e percorso e gestisce deployment, artefatti, API amministrativa e metriche.
Worker · uno per deployment
Carica la libreria applicativa, possiede lo stato del runtime Perry ed esegue cron e code durevoli.
Invocazione · una per richiesta
Viene eseguita come task nel worker e ne condivide lo spazio di indirizzamento senza creare un processo per richiesta.
Cosa funziona oggi
Coop è infrastruttura testata, ma non ancora un prodotto di hosting completo. L'implementazione attuale include:
- ✓Compilazione TypeScript, routing HTTP e mount statici
- ✓Controlli di identità dei provider condivisi
- ✓Deployment indirizzati dal contenuto e rollback
- ✓Cron e coda durevole
- ✓KV e object storage per worker dedicati
- ✓CLI, metriche Prometheus, alert e dashboard Grafana
Una superficie di deployment ridotta
Un deployment è una directory con coop.toml e uno o più handler. Coop la compila, mette il risultato in cache e avvia un worker locale.
name = "hello"
version = "0.1.0"
[hosts]
domains = ["hello.test"]
[[handlers]]
file = "handlers/hello.ts"
path = "/hello"
method = "GET"import { CoopRequest, respond } from "@coop/runtime";
export function handle(reqJson: string): string {
const req = new CoopRequest(reqJson);
return respond(200, {}, `hello from ${req.path}`);
}$ coop-cli dev ./helloVolutamente ristretto
Adatto oggi a
- ✓Servizi e piccole applicazioni di cui possiedi il codice
- ✓Un operatore con un portafoglio su una macchina
- ✓Carichi che compilano nel sottoinsieme TypeScript di Perry
- ✓Team che apprezzano densità, artefatti espliciti e rollback rapido
Cosa Coop non promette ancora
- ·Compatibilità arbitraria con npm o Node.js
- ·Sandbox per codice terzo non attendibile
- ·Sostituto di Kubernetes o piattaforma multi-regione
- ·Vantaggi prestazionali universali su Node.js
La densità è la tesi. I benchmark restano il lavoro.
Le misure attuali vanno in direzioni diverse a seconda del carico. Coop ha mostrato una densità promettente su piccole app Linux, mentre una route Next.js completa ha usato più CPU di Node.js in un altro test. Leggi la metodologia prima di citare i risultati.
Costruisci con Perry. Dagli un Coop.
Esplora il sorgente, avvia il deployment di esempio e contribuisci a rendere affidabile il modello di runtime condiviso.