عن المشروع
يوفر هذا المشروع نسخة معدلة من [Bun](https://bun.sh) تعمل أصلياً على أندرويد/ترمكس (aarch64) باستخدام Bionic libc. لا proot، ولا glibc-runner، ولا LD_PRELOAD، ولا termux-exec — جميع الإصلاحات مُدمجة مباشرة في البتارية عبر فروع Rust `#[cfg(target_os = "android")]`.
### ما يحلّه المشروع
يلتقي بنية Bun 1.4 للأندرويد بثلاثة مشكلات متبقية على ترمكس:
- ينهار `bun install` بـ SIGSYS لأن ملف seccomp في zygote بأندرويد يحجز `fchmodat2` و`openat2` بدلاً من إرجاع `ENOSYS`، مما يمنع عمليات السقوط التلقائي في زمن التشغيل.
- يفشل `bunx <pkg>` بـ ENOENT لأن أدوات npm الشيبية تحمل شيبانات `#!/usr/bin/env node` وأندرويد لا يملك `/usr/bin`.
- يُبلغ `bun:ffi cc()` عن تعطيل TinyCC لأن البرنامج الأصلي يعطل الميزة على أندرويد.
يطبّق هذا الشوكة سبعة تصحيحات على مستوى المصدر ضد Bun v1.4.0 لإصلاح كل مشكلة.
### الميزات
- **دعم FFI كامل**: `dlopen` و`cc()` و`JSCallback` تعمل جميعها.
- **تمكين TinyCC على أندرويد**: ذاكرة JIT آمنة عبر SELinux باستخدام `memfd_create` + دعامات ARM64 طويلة للنداءات BL البعيدة.
- **تجاوز حجز seccomp**: يستخدم `lchmod` دالة `fchmodat(AT_SYMLINK_NOFOLLOW)` بدلاً من `fchmodat2` المحجوز؛ وتستخدم مسارات المُحلِّل `openat` العادية بدلاً من `openat2` المحجوزة.
- **إعادة تعيين الشيبان**: تُعيد السكريبتات ذات المفسّرين المفقودين تعيين المسارات مثل `/usr/bin` إلى `$PREFIX/bin`.
- **`bunx` يعمل**: يضع المُطلق `argv[0]` بشكل صحيح لإطلاق السكريبتات.
### التوافق
| العنصر | الحالة |
|---|---|
| المعمارية | `aarch64` (arm64) |
| أندرويد | 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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.