Sobre o projeto
Este projeto fornece uma compilação modificada do Bun (https://bun.sh) que roda nativamente no Android/Termux (aarch64) usando Bionic libc. Sem proot, sem glibc-runner, sem LD_PRELOAD, sem termux-exec — todas as correções são compiladas diretamente no binário por meio de ramos Rust #[cfg(target_os = "android")].
O que resolve
A compilação Android do Bun 1.4 upstream apresenta três problemas restantes no Termux:
- bun install trava com SIGSYS porque o perfil seccomp do zygote do Android intercepta fchmodat2 e openat2 em vez de retornar ENOSYS, impedindo que os fallbacks de runtime upstream sejam executados.
- bunx pacote falha com ENOENT porque os shims do npm carregam shebangs #!/usr/bin/env node e o Android não tem /usr/bin.
- bun:ffi cc() reporta TinyCC desabilitado porque o upstream desativa o recurso no Android.
Este fork aplica sete patches no nível do código-fonte sobre o Bun v1.4.0 para corrigir cada problema.
Recursos
- Suporte total a FFI: dlopen, cc() e JSCallback funcionam.
- TinyCC habilitado no Android: memória JIT segura para SELinux via memfd_create + veneers de chamada longa ARM64 para chamadas BL fora de alcance.
- Bypass de interceptação seccomp: lchmod usa fchmodat(AT_SYMLINK_NOFOLLOW) em vez de fchmodat2 interceptado; caminhadas do resolvedor usam openat simples em vez de openat2 interceptado.
- Remapeamento de shebang: Scripts com interpretadores ausentes remapeiam caminhos como /usr/bin para $PREFIX/bin.
- bunx funciona: O launcher define argv[0] corretamente para a criação de scripts.
Compatibilidade
Item | Status
--- | ---
Arquitetura | aarch64 (arm64)
Android | 10+ (API 29+, SELinux untrusted_app_27+)
Versão do Bun | 1.4.0
bun install | Funciona (bypass de seccomp)
bun run / bunx | Funciona
bun build --compile | Funciona (corrigido no upstream)
bun:ffi dlopen / cc() / JSCallback | Funcionam
opentui TUI | Funciona
Instalação
curl -fsSL https://raw.githubusercontent.com/bd-loser/bun-termux/main/scripts/install.sh | bash
Instala bun e bunx em $PREFIX/bin.
Compilar do código-fonte
Requer Rust, NDK r27c, clang 18, CMake, Ninja e Bun para bootstrap. Veja docs/BUILD.md para instruções completas.
Licenciamento
MIT para os patches do fork; componentes do TinyCC sob LGPL-2.1; Bun upstream sob MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.