Arranque del proyecto hammer (distro AI-nativa: laboratorio funcional en el sótano, terminal mutable clásica arriba, integración de IA programadora). - Workspace Rust (compila, tests verdes): hammer-core, hammer-build, hammer-cli (bin `hammer`), hammerd. - SDDs 00-10 + 6 ADRs en docs/ con toda la arquitectura. - Esqueletos navegables mapeados a las fases del roadmap; Fase 0/1 listas para implementar el sandbox real. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.2 KiB
1.2 KiB
ADR 0001 — Rust para el tooling y los daemons
- Estado: aceptada
- Fecha: 2026-06-06
Contexto
Necesitamos un lenguaje para hammerd, las CLIs y el daemon del diario. Candidatos: Rust, Go,
Zig. El sistema manipula ELF, sockets UNIX, fanotify, overlayfs, namespaces, y produce
binarios que deben correr en un userland musl, posiblemente estáticos.
Decisión
Rust para todo el tooling y los daemons.
Razones
- Binarios estáticos-musl de primera (
x86_64-unknown-linux-musl), justo nuestro target. - Ecosistema fuerte para lo que hacemos: parsing/edición ELF, sockets,
nix/rustixpara syscalls (fanotify, namespaces),blake3,serde. - Seguridad de memoria sin GC; importante en un daemon de larga vida con privilegios.
- El autor lo eligió explícitamente.
Consecuencias
- Curva de entrada más alta que Go; asumida.
- Compilación del compilador del lab es ortogonal: escribimos
hammeren Rust, el lab invocazig ccpara compilar C/C++ upstream. Sin conflicto (ver ADR 0003). - Perfil
releaseya configurado para binarios pequeños (opt-level=z,lto,strip,panic=abort).