Sobre el proyecto

Este proyecto proporciona una versión modificada de [Bun](https://bun.sh) que se ejecuta de forma nativa en Android/Termux (aarch64) utilizando Bionic libc. Sin proot, sin corredor de glibc, sin LD_PRELOAD, sin termux-exec: todas las correcciones están compiladas directamente en el binario mediante ramas de Rust `#[cfg(target_os = "android")]`. ### Qué resuelve La compilación de Bun 1.4 upstream para Android presenta tres problemas restantes en Termux: - `bun install` falla con SIGSYS porque el perfil seccomp del zygote de Android atrapa `fchmodat2` y `openat2` en lugar de devolver `ENOSYS`, lo que impide que los mecanismos de fallback del tiempo de ejecución upstream se ejecuten. - `bunx <pkg>` falla con ENOENT porque los scripts de npm contienen `#!/usr/bin/env node` como shebang y Android no tiene `/usr/bin`. - `bun:ffi cc()` informa que TinyCC está deshabilitado porque upstream desactiva la característica en Android. Este fork aplica siete parches a nivel del código fuente contra Bun v1.4.0 para corregir cada problema. ### Características - **Soporte FFI completo**: `dlopen`, `cc()` y `JSCallback` funcionan correctamente. - **TinyCC habilitado en Android**: Memoria JIT segura para SELinux mediante `memfd_create` + veniros de llamada larga ARM64 para llamadas BL fuera de rango. - **Bypass de trampas de seccomp**: `lchmod` usa `fchmodat(AT_SYMLINK_NOFOLLOW)` en lugar de `fchmodat2` atrapado; los recorridos del resolver usan `openat` simple en lugar de `openat2` atrapado. - **Reconexión de shebang**: Los scripts con intérpretes faltantes reconectan rutas como `/usr/bin` a `$PREFIX/bin`. - **`bunx` funciona**: El lanzador establece `argv[0]` correctamente para la creación de procesos de scripts. ### Compatibilidad | Elemento | Estado | |---|---| | Arquitectura | `aarch64` (arm64) | | Android | 10+ (API 29+, SELinux untrusted_app_27+) | | Versión de Bun | 1.4.0 | | `bun install` | Funciona (bypass de seccomp) | | `bun run` / `bunx` | Funciona | | `bun build --compile` | Funciona (corregido upstream) | | `bun:ffi` `dlopen` / `cc()` / `JSCallback` | Funcionan | | opentui TUI | Funciona | ### Instalación ```bash curl -fsSL https://raw.githubusercontent.com/bd-loser/bun-termux/main/scripts/install.sh | bash ``` Instala `bun` y `bunx` en `$PREFIX/bin`. ### Compilar desde el código fuente Requiere Rust, NDK r27c, clang 18, CMake, Ninja y Bun para el arranque. Consulta [docs/BUILD.md](docs/BUILD.md) para instrucciones completas. ### Licencia MIT para los parches del fork; componentes de TinyCC bajo LGPL-2.1; Bun upstream bajo MIT.