gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Definitions

⎇ 08510c042412e6a408d531c5d125dce7eac588bd docs/adr/0001-rust-for-tooling.md Markdown · 30 lines · 1.2 KB History raw

Scaffold inicial: workspace Rust + SDDs completos 8bf162304 · sergio ·

1# ADR 0001 — Rust para el tooling y los daemons
2
3- **Estado:** aceptada
4- **Fecha:** 2026-06-06
5
6## Contexto
7
8Necesitamos un lenguaje para `hammerd`, las CLIs y el daemon del diario. Candidatos: Rust, Go,
9Zig. El sistema manipula ELF, sockets UNIX, `fanotify`, `overlayfs`, namespaces, y produce
10binarios que deben correr en un userland musl, posiblemente estáticos.
11
12## Decisión
13
14**Rust** para todo el tooling y los daemons.
15
16## Razones
17
18- **Binarios estáticos-musl** de primera (`x86_64-unknown-linux-musl`), justo nuestro target.
19- Ecosistema fuerte para lo que hacemos: parsing/edición ELF, sockets, `nix`/`rustix` para
20  syscalls (`fanotify`, namespaces), `blake3`, `serde`.
21- Seguridad de memoria sin GC; importante en un daemon de larga vida con privilegios.
22- El autor lo eligió explícitamente.
23
24## Consecuencias
25
26- Curva de entrada más alta que Go; asumida.
27- Compilación del compilador del lab es **ortogonal**: escribimos `hammer` en Rust, el lab
28  invoca `zig cc` para compilar C/C++ upstream. Sin conflicto (ver [ADR 0003](0003-zig-cc-builder.md)).
29- Perfil `release` ya configurado para binarios pequeños (`opt-level=z`, `lto`, `strip`,
30  `panic=abort`).

0001-rust-for-tooling.md

ADR 0001 — Rust para el tooling y los daemons

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

Consecuencias