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>
31 lines
1.2 KiB
Markdown
31 lines
1.2 KiB
Markdown
# 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`/`rustix` para
|
|
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 `hammer` en Rust, el lab
|
|
invoca `zig cc` para compilar C/C++ upstream. Sin conflicto (ver [ADR 0003](0003-zig-cc-builder.md)).
|
|
- Perfil `release` ya configurado para binarios pequeños (`opt-level=z`, `lto`, `strip`,
|
|
`panic=abort`).
|