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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.