«simi» es boca/lengua en quechua. Es el sh que el frente C necesitaba: busybox está en la raíz de confianza del arranque (STAGE1_COMPONENTS, ATTEST_PATHS) y en el exec de cada card, y el candidato ajeno que se midió —brush 0.4.0— pesa 6,9 MB, arranca 4x más lento que el ash y trae dos divergencias medidas (#1394, #1396). Alcance MEDIDO, no supuesto: las 23 cards con shell (8 builtins, 13 construcciones), los 21 /init empotrados de las imágenes (+ if, funciones, case, aquí-documentos) y el POSIX de takana-live-install.sh. Resultado del banco diferencial, 159 casos contra el ash de busybox 1.36.1 (10 fixtures de regresión, 107 de tortura de comillas, 23 fragmentos de cards, 19 /init empotrados): simi DIVERGE=0 bash DIVERGE=8 brush DIVERGE=35 Incluye el bucle REAL de config.status que genera cualquier configure de autotools — el que tumbó a brush. 499 KB release, 1,4x la latencia del ash (brush: 4,1x). 47 pruebas propias en verde. Seis bugs que el banco destapó, y ninguno se veía sin un control al lado: 1. El lexer fundía lo entrecomillado con lo desnudo, así que x="a b" se ejecutaba como ORDEN y el error decía «no encontrado» — mandando a buscar al lugar equivocado. Ahora el comillado es por carácter. 2. Usaba la barra invertida como marca interna y la quitaba al final, así que una barra PRODUCIDA por una sustitución se perdía. La quita de comillas es sobre las comillas de la palabra, nunca sobre el resultado de una expansión: hace falta una máscara de protección, no un escape dentro del texto. 3. set -e no se suspendía dentro del cuerpo de una función llamada desde una condición. Ahora es un contador dinámico, que entra solo donde corresponde. 4. Los delimitadores de la sustitución de orden y de ${ } no respetaban la barra invertida: un paréntesis escapado cerraba la sustitución. 5. Las clases entre corchetes no entendían la barra invertida — y la del config.status de libtool es literalmente una clase con cuatro escapes. 6. Dentro de comillas dobles el cuerpo de un backtick sigue entre comillas, así que la barra también se elimina ante la comilla doble. Y uno que el banco NO vio y sí vio la prueba de regresión: el trap EXIT HEREDADO se disparaba en el subshell. POSIX §2.12 manda resetearlo — es la mitad complementaria del #1396 de brush, y al revés. Los dos oráculos hacen falta; el caso quedó agregado al fixture 08.
69 lines
2.2 KiB
TOML
69 lines
2.2 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"crates/takana-core",
|
|
"crates/takana-build",
|
|
"crates/takana-bootstrap",
|
|
"crates/takana-overlay",
|
|
"crates/takana-journal",
|
|
"crates/takana-mirror",
|
|
"crates/takana-upgrade",
|
|
"crates/takana-recover",
|
|
"crates/takana-agent",
|
|
"crates/takana-cli",
|
|
"crates/hammerd",
|
|
"crates/netup",
|
|
"crates/simi",
|
|
]
|
|
|
|
[workspace.package]
|
|
version = "0.0.1"
|
|
edition = "2021"
|
|
license = "MIT"
|
|
authors = ["sergio <gerencia@jlsoltech.com>"]
|
|
repository = "https://git.gioser.net/sergio/takana"
|
|
|
|
[workspace.dependencies]
|
|
takana-core = { path = "crates/takana-core" }
|
|
takana-build = { path = "crates/takana-build" }
|
|
takana-bootstrap = { path = "crates/takana-bootstrap" }
|
|
takana-overlay = { path = "crates/takana-overlay" }
|
|
takana-journal = { path = "crates/takana-journal" }
|
|
takana-mirror = { path = "crates/takana-mirror" }
|
|
takana-upgrade = { path = "crates/takana-upgrade" }
|
|
takana-agent = { path = "crates/takana-agent" }
|
|
|
|
# shared third-party deps, pinned at the workspace level
|
|
anyhow = "1"
|
|
thiserror = "2"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
serde_yaml = "0.9"
|
|
toml = "0.8"
|
|
# postcard + ulid: SÓLO para releer el frame del bus de arje (hammerd::arje_link). Versiones
|
|
# alineadas con las que usa arje-bus (postcard 1.1.x, ulid 1.2.x) para garantizar el mismo wire.
|
|
postcard = { version = "1", features = ["use-std"] }
|
|
ulid = { version = "1", features = ["serde"] }
|
|
blake3 = "1"
|
|
sha2 = "0.10"
|
|
hex = "0.4"
|
|
base64 = "0.22"
|
|
ed25519-dalek = "2"
|
|
getrandom = "0.2"
|
|
# `socket`/`uio`: el proxy de Wayland de qorpa necesita sendmsg/recvmsg con SCM_RIGHTS —
|
|
# Wayland pasa descriptores (wl_shm, dmabuf) por el mismo socket, y sin relayarlos no dibuja
|
|
# nada. Las features de cargo son ADITIVAS: activarlas no cambia lo que compilan los demás.
|
|
nix = { version = "0.30", default-features = false, features = ["fanotify", "fs", "user", "socket", "uio", "signal"] }
|
|
tempfile = "3"
|
|
clap = { version = "4", features = ["derive"] }
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
[profile.release]
|
|
# small, static-friendly binaries for the userland
|
|
opt-level = "z"
|
|
lto = true
|
|
codegen-units = 1
|
|
strip = true
|
|
panic = "abort"
|