প্রকল্প সম্পর্কে

এই প্রকল্পটি [Bun](https://bun.sh)-এর একটি পরিবর্তিত বিল্ড প্রদান করে যা Bionic libc ব্যবহার করে Android/Termux (aarch64)-তে মূল ভাবে চলে। কোনো 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` কে trap করে `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 সক্রিয়**: `memfd_create` + ARM64 long-call veneers ব্যবহার করে SELinux-নিরাপদ JIT মেমোরি। - **Seccomp-trap বাইপাস**: `lchmod` trap হওয়া `fchmodat2`-এর পরিবর্তে `fchmodat(AT_SYMLINK_NOFOLLOW)` ব্যবহার করে; resolver চলাচলে trap হওয়া `openat2`-এর পরিবর্তে সাধারণ `openat` ব্যবহার করে। - **Shebang রিম্যাপ**: অনুপস্থিত ইন্টারপ্রেটার সহ স্ক্রিপ্ট `/usr/bin`-এর মতো পথকে `$PREFIX/bin`-তে রিম্যাপ করে। - **`bunx` কাজ করে**: লঞ্চার স্ক্রিপ্ট স্পAWN-এর জন্য `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 ``` `$PREFIX/bin`-তে `bun` এবং `bunx` ইনস্টল করে। ### সোর্স থেকে বিল্ড Rust, NDK r27c, clang 18, CMake, Ninja, এবং বুটস্ট্র্যাপিংয়ের জন্য Bun-এর প্রয়োজন। পূর্ণ নির্দেশনার জন্য [docs/BUILD.md](docs/BUILD.md) দেখুন। ### লাইসেন্সিং ফর্ক প্যাচের জন্য MIT; TinyCC উপাদানগুলোর জন্য LGPL-2.1; আপস্ট্রিম Bun-এর জন্য MIT।