इस प्रोजेक्ट के बारे में

यह प्रोजेक्ट [Bun](https://bun.sh) का संशोधित बिल्ड प्रदान करता है जो Bionic libc के साथ Android/Termux (aarch64) पर नेटिव रूप से चलता है। कोई proot, no glibc-runner, no LD_PRELOAD, no termux-exec — सभी ठीक `#[cfg(target_os = "android")]` Rust शाखाओं के माध्यम से बाइनरी में सीधे कंपाइल किए गए हैं। ### यह क्या हल करता है Upstream Bun 1.4 का Android बिल्ड Termux पर तीन शेष समस्याओं से ग्रसित है: - `bun install` SIGSYS के साथ क्रैश हो जाता है क्योंकि Android का zygote seccomp प्रोफ़ाइल `fchmodat2` और `openat2` को trap करती है, ENOSYS वापस करने की बजाय, जिससे upstream runtime fallbacks चल नहीं पाते। - `bunx <pkg>` ENOENT के साथ विफल हो जाता है क्योंकि npm shims में `#!/usr/bin/env node` shebangs होते हैं और Android पर `/usr/bin` नहीं होता। - `bun:ffi cc()` TinyCC disabled रिपोर्ट करता है क्योंकि upstream इस फीचर को Android पर band कर देता है। यह फॉर्क Bun v1.4.0 के खिलाफ प्रत्येक समस्या को ठीक करने के लिए सात source-level patches लागू करता है। ### फीचर्स - **पूर्ण FFI समर्थन**: `dlopen`, `cc()`, और `JSCallback` सभी काम करते हैं。 - **Android पर TinyCC सक्षम**: SELinux-safe JIT memory via `memfd_create` + ARM64 long-call veneers for out-of-range BL calls। - **Seccomp-trap bypass**: `lchmod` trapped `fchmodat2` की जगह `fchmodat(AT_SYMLINK_NOFOLLOW)` उपयोग करता है; resolver walks plain `openat` instead of trapped `openat2` use करते हैं। - **Shebang remap**: Missing interpreters के साथ scripts paths जैसे `/usr/bin` को `$PREFIX/bin` में remap करते हैं。 - **`bunx` काम करता है**: Launcher script spawning के लिए `argv[0]` को सही ढंग से सेट करता है。 ### संगति | आइटम | स्थिति | |---|---| | Architecture | `aarch64` (arm64) | | Android | 10+ (API 29+, SELinux untrusted_app_27+) | | Bun version | 1.4.0 | | `bun install` | काम करता है (seccomp bypass) | | `bun run` / `bunx` | काम करता है | | `bun build --compile` | काम करता है (upstream fixed) | | `bun:ffi` `dlopen` / `cc()` / `JSCallback` | काम करते हैं | | opentui TUI | काम करता है | ### इंस्टॉल ```bash curl -fsSL https://raw.githubusercontent.com/bd-loser/bun-termux/main/scripts/install.sh | bash ``` `bun` और `bunx` को `$PREFIX/bin` में इंस्टॉल करता है。 ### source से बिल्ड Rust, NDK r27c, clang 18, CMake, Ninja, और bootstrapping के लिए Bun की आवश्यकता है। पूरी निर्देशों के लिए [docs/BUILD.md](docs/BUILD.md) देखें। ### लाइसेंसिंग फॉर्क patches के लिए MIT; TinyCC components LGPL-2.1 के तहत; upstream Bun MIT के तहत।