Projeto adjacente ao Perry · Pré-1.0

Um lugar para o código Perry descansar e rodar.

Coop transforma um diretório de TypeScript compatível com Perry em uma biblioteca de aplicação nativa e a serve por HTTP, enquanto o runtime e a biblioteca padrão do Perry são fornecidos uma única vez por máquina.

Infraestrutura experimental para código próprio

Perry compila. Coop mantém rodando.

A diferença está em onde o runtime da linguagem vive. Coop mantém a imagem da aplicação pequena e fornece o runtime compatível do Perry e a biblioteca padrão no host.

Perry

Um executável Perry normal

Aplicação, runtime, coletor de lixo e recursos selecionados da biblioteca padrão são ligados em um executável específico para o destino.

app + runtime + stdlib → executable
Coop

Uma implantação Coop

A aplicação é compilada como biblioteca compartilhada contendo apenas o app. Runtimes compatíveis são construídos uma vez por máquina e sua identidade é verificada antes do mapeamento.

apps → shared runtime + stdlib

Separado por limite de falha

A máquina, cada implantação e cada requisição têm responsabilidades distintas. O código da aplicação nunca roda no daemon da máquina.

01
01

Daemon · um por máquina

Termina TLS, roteia por host e caminho e gerencia implantações, artefatos, API administrativa e métricas.

02
02

Worker · um por implantação

Carrega a biblioteca, mantém o estado do runtime Perry e executa cron e filas duráveis.

03
03

Invocação · uma por requisição

Roda como tarefa dentro do worker e compartilha seu espaço de endereçamento sem criar um processo por requisição.

O que funciona hoje

Coop é infraestrutura testada, mas ainda não é um produto de hospedagem concluído. A implementação atual inclui:

  • Compilação TypeScript, roteamento HTTP e montagens estáticas
  • Verificações de identidade dos runtimes compartilhados
  • Implantações endereçadas por conteúdo e rollback
  • Cron e fila durável
  • KV e armazenamento de objetos para workers dedicados
  • CLI, métricas Prometheus, alertas e painel Grafana

Uma superfície de implantação pequena

Uma implantação é um diretório com coop.toml e um ou mais handlers. Coop compila, armazena o resultado em cache e inicia um worker local.

coop.toml
name = "hello"
version = "0.1.0"

[hosts]
domains = ["hello.test"]

[[handlers]]
file = "handlers/hello.ts"
path = "/hello"
method = "GET"
handlers/hello.ts
import { CoopRequest, respond } from "@coop/runtime";

export function handle(reqJson: string): string {
  const req = new CoopRequest(reqJson);
  return respond(200, {}, `hello from ${req.path}`);
}
Executar localmente
$ coop-cli dev ./hello

Deliberadamente focado

Uma boa opção hoje

  • Serviços e pequenas aplicações cujo código é seu
  • Um operador executando um portfólio em uma máquina
  • Cargas que compilam no subconjunto TypeScript do Perry
  • Equipes que valorizam densidade, artefatos explícitos e rollback rápido

O que o Coop ainda não promete

  • ·Compatibilidade arbitrária com npm ou Node.js
  • ·Sandbox para código de terceiros não confiável
  • ·Substituir Kubernetes ou ser plataforma multirregião
  • ·Ganhos universais de desempenho sobre Node.js

Densidade é a tese. Benchmarks ainda são o trabalho.

As medições atuais apontam em direções diferentes conforme a carga. Coop mostrou densidade promissora em pequenas aplicações Linux, enquanto uma rota Next.js completa usou mais CPU que Node.js em outro teste. Leia a metodologia antes de citar os resultados.

Construa com Perry. Dê um Coop a ele.

Explore o código, execute a implantação de exemplo e ajude a tornar o modelo de runtime compartilhado uma infraestrutura confiável.