منصوبے کے بارے میں

یہ پروجیکٹ [Bun](https://bun.sh) کا ایک ترمیم شدہ بلڈ فراہم کرتا ہے جو Android/Termux (aarch64) پر Bionic libc استعمال کرتے ہوئے مقامی طور پر چلتا ہے۔ کوئی proot نہیں، کوئی glibc-runner نہیں، کوئی LD_PRELOAD نہیں، کوئی termux-exec نہیں — تمام اصلاحات براہِ راست بائنری میں `#[cfg(target_os = "android")]` Rust شاخوں کے ذریعے مرتب کی گئی ہیں۔ ### یہ کیا حل کرتا ہے اپ اسٹریم Bun 1.4 کا Android بلڈ Termux پر تین باقی مسائل کا سامنا کرتا ہے: - `bun install` SIGSYS کے ساتھ کریش ہوتا ہے کیونکہ Android کا zygote seccomp پروفائل `fchmodat2` اور `openat2` کو ENOSYS لوٹانے کے بجائے پھنسا دیتا ہے، جس سے اپ اسٹریم رن ٹائم فال بیک چل نہیں پاتے۔ - `bunx <pkg>` ENOENT کے ساتھ ناکام ہوتا ہے کیونکہ npm شیمز میں `#!/usr/bin/env node` شی بینگ ہوتی ہے اور Android میں `/usr/bin` موجود نہیں ہوتا۔ - `bun:ffi cc()` TinyCC کو غیر فعال رپورٹ کرتا ہے کیونکہ اپ اسٹریم Android پر اس فیچر کو بند کر دیتا ہے۔ یہ فورک Bun v1.4.0 کے خلاف سات سورس لیول پیچ لگا کر ہر مسئلے کو حل کرتا ہے۔ ### خصوصیات - **مکمل FFI سپورٹ**: `dlopen`، `cc()` اور `JSCallback` سب کام کرتے ہیں۔ - **Android پر TinyCC فعال**: SELinux سے محفوظ JIT میموری `memfd_create` + ARM64 لانگ کال وینیئرز کے ذریعے رینج سے باہر BL کالز کے لیے۔ - **Seccomp ٹریپ بائی پاس**: `lchmod` پھنسے ہوئے `fchmodat2` کے بجائے `fchmodat(AT_SYMLINK_NOFOLLOW)` استعمال کرتا ہے؛ ریزولور واکس پھنسے ہوئے `openat2` کے بجائے سادہ `openat` استعمال کرتی ہیں۔ - **شی بینگ ریمپ**: گمشدہ انٹرپریٹر والی اسکرپٹس `/usr/bin` جیسے راستوں کو `$PREFIX/bin` میں بدل دیتی ہیں۔ - **`bunx` کام کرتا ہے**: لانچر اسکرپٹ اسپوننگ کے لیے `argv[0]` درست طریقے سے سیٹ کرتا ہے۔ ### مطابقت | آئٹم | حیثیت | |---|---| | آرکیٹیکچر | `aarch64` (arm64) | | Android | 10+ (API 29+, SELinux untrusted_app_27+) | | Bun ورژن | 1.4.0 | | `bun install` | کام کرتا ہے (seccomp بائی پاس) | | `bun run` / `bunx` | کام کرتا ہے | | `bun build --compile` | کام کرتا ہے (اپ اسٹریم میں طے شدہ) | | `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` میں انسٹال کرتا ہے۔ ### سورس سے بلڈ Rust، NDK r27c، clang 18، CMake، Ninja اور Bun بوٹ سٹریپنگ کے لیے درکار ہے۔ مکمل ہدایات کے لیے [docs/BUILD.md](docs/BUILD.md) دیکھیں۔ ### لائسنسنگ فورک پیچز کے لیے MIT؛ TinyCC اجزاء LGPL-2.1 کے تحت؛ اپ اسٹریم Bun MIT کے تحت۔