Files
hammer/docs/adr/0001-rust-for-tooling.md
sergioandClaude Opus 4.8 8bf1623044 Scaffold inicial: workspace Rust + SDDs completos
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>
2026-06-06 19:06:04 +00:00

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/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).
  • Perfil release ya configurado para binarios pequeños (opt-level=z, lto, strip, panic=abort).