Skip to content

Releases: coderredlab/proroot

v1.0.9

13 Apr 05:36

Choose a tag to compare

v1.0.9

Static procfs virtualization update for Android app-process static ELF workloads.

Highlights

  • Adds a dedicated static procfs virtualization layer in libproroot-bridge.so for static ELF payloads.
  • Covers /proc/self/*, /proc/<pid>/*, /proc/.../task/<tid>/*, and /proc/thread-self/* across common path, metadata, and fd surfaces.
  • Splits trampoline procfs logic into src/trampoline_procfs.c, src/trampoline_procfs.h, and src/trampoline_shared.h.
  • Adds a dedicated android-smoketest/scripts/static-procfs-smoke.sh regression suite and wires it into the full smoke flow.
  • Adds committed static procfs smoke cases under tests/static_procfs_cases/.
  • Improves procfs precision for comm, status, stat, statx, fdinfo, and mount path rewriting.
  • Updates libproroot-runtime.so and libproroot-bridge.so.

Smoke tested

  • android-smoketest/scripts/full-smoke.sh
  • android-smoketest/scripts/static-procfs-smoke.sh
  • PROC_SELF_SMOKE_OK
  • PROC_PID_SMOKE_OK
  • PROC_TASK_THREAD_SMOKE_OK
  • PROC_FDINFO_SMOKE_OK
  • PROC_FDINFO_PRECISION_OK
  • PROC_AUXV_SMOKE_OK
  • PROC_COMM_SMOKE_OK
  • PROC_STATUS_PRECISION_OK
  • PROC_PID_STATUS_PRECISION_OK
  • PROC_STAT_SMOKE_OK
  • PROC_STATX_PRECISION_OK
  • PROC_MOUNTS_SMOKE_OK
  • PROC_THREAD_SELF_SMOKE_OK
  • PROC_TASK_META_SMOKE_OK

SHA-256

59b3e3e6fe40643796e14ed8b65fe3ad16ddb99e95e76fd3063cac3862785c11  arm64-v8a/libproroot.so
667e656df24e0216c2da1db9e26a388d32c2d6e913379ebed74acef6aed274ae  arm64-v8a/libproroot-runtime.so
f60d08e24a0da9254bfecd8f0e9f4667a68cc7f561bb4865a169acfd4eec8435  arm64-v8a/libproroot-bridge.so
2d9b48db9a49122f809f01c5bdc1d0cb40a5cbb51ca4f2b30f428f5f13829e4e  arm64-v8a/libldlinux.so

v1.0.8

10 Apr 13:17

Choose a tag to compare

v1.0.8

Static Codex binary compatibility update for Android app-process Ubuntu workloads.

Highlights

  • Fixes static ELF mmap-loader AT_PHDR calculation for non-PIE binaries such as the Codex CLI native arm64 binary.
  • Corrects the trampoline SIGSYS ucontext layout used before entering static ELF payloads.
  • Adds static-ELF path translation through a focused seccomp/SIGSYS bridge for common absolute-path syscalls.
  • Reduces noisy fallback SIGSYS logging unless PROROOT_VERBOSE=1 is enabled.
  • Adds Codex CLI install/version coverage to the app-process full-smoke suite.
  • Updates libproroot-runtime.so and libproroot-bridge.so.

Smoke tested

  • pm clear com.coderred.proroot.smoketest followed by app-private rootfs asset extraction.
  • Apt bootstrap from the rootfs-only asset: curl, git, python3, ca-certificates, and NodeSource nodejs.
  • node --version -> v22.22.2.
  • npm --version -> 10.9.7.
  • python3 --version -> Python 3.12.3.
  • git --version -> git version 2.43.0.
  • Filesystem smoke: symlink/readlink, fake chown/chmod, tar create/extract.
  • Node child_process.execFileSync("/bin/true") repeated 30 times.
  • npm install openclaw.
  • openclaw --version -> OpenClaw 2026.4.9 (0512059).
  • npm install @openai/codex.
  • codex --version -> codex-cli 0.118.0.
  • codex login --device-auth reaches the device-code URL flow.
  • npm install playwright.
  • Full Chromium runtime dependency install through apt.
  • npx playwright install chromium.
  • Playwright Chromium screenshot of https://www.naver.com/.

SHA-256

59b3e3e6fe40643796e14ed8b65fe3ad16ddb99e95e76fd3063cac3862785c11  arm64-v8a/libproroot.so
f3f3e8237a110e45af1abdb33f2d3a5ec45366122bcef5bfe2c1a9735f6e093e  arm64-v8a/libproroot-runtime.so
21743b59d86deb6bd1b78028b417ede335aafe9d93db94f3fa59268d6846bc62  arm64-v8a/libproroot-bridge.so
2d9b48db9a49122f809f01c5bdc1d0cb40a5cbb51ca4f2b30f428f5f13829e4e  arm64-v8a/libldlinux.so

v1.0.7

10 Apr 08:00

Choose a tag to compare

v1.0.7

Apt/package-manager compatibility update for Android app-process Ubuntu workloads.

Highlights

  • Removes the smoke-test system-tools-arm64.tar.gz.bin dependency so fresh app-process tests bootstrap tools through apt.
  • Fixes raw syscall relative path translation for AT_FDCWD callers, including OpenSSL/certificate rehash paths.
  • Improves --link2symlink hardlink emulation by reporting synthetic st_nlink/stx_nlink for package-manager lock files.
  • Adds rootfs-based LD_LIBRARY_PATH discovery from ld.so.conf, ld.so.conf.d, and library directory layout for child exec resolution.
  • Keeps systemd package helpers on the real execution path; only the existing ldconfig compatibility shim remains.
  • Adds fresh full-smoke automation with pm clear, apt bootstrap, OpenClaw install, Playwright Chromium install, and complex-site screenshot capture.
  • Updates libproroot.so and libproroot-runtime.so.

Smoke tested

  • pm clear com.coderred.proroot.smoketest followed by app-private rootfs asset extraction.
  • Apt bootstrap from the rootfs-only asset: curl, git, python3, ca-certificates, and NodeSource nodejs.
  • node --version -> v22.22.2.
  • npm --version -> 10.9.7.
  • python3 --version -> Python 3.12.3.
  • git --version -> git version 2.43.0.
  • Filesystem smoke: symlink/readlink, fake chown/chmod, tar create/extract.
  • Node child_process.execFileSync("/bin/true") repeated 30 times.
  • npm install openclaw.
  • openclaw --version -> OpenClaw 2026.4.9 (0512059).
  • npm install playwright.
  • Full Chromium runtime dependency install through apt.
  • npx playwright install chromium.
  • Playwright Chromium screenshot of https://www.naver.com/.

SHA-256

59b3e3e6fe40643796e14ed8b65fe3ad16ddb99e95e76fd3063cac3862785c11  arm64-v8a/libproroot.so
9e283674e0a55abb20e48e2323234028b06ea0d0c86b2bad1713d1723aeb0c8f  arm64-v8a/libproroot-runtime.so
ee3af3bc080118556f8131b5494db8b9b91a7f843ae1671cba74b88d6107edbe  arm64-v8a/libproroot-bridge.so
2d9b48db9a49122f809f01c5bdc1d0cb40a5cbb51ca4f2b30f428f5f13829e4e  arm64-v8a/libldlinux.so

v1.0.6

10 Apr 05:28

Choose a tag to compare

v1.0.6

App-process smoke coverage update for Android rootless glibc workloads.

Highlights

  • Improves app-process seccomp handling through the static trampoline.
  • Expands raw syscall and fake root coverage for apt/dpkg/npm-heavy workloads.
  • Fixes -w initial working directory behavior.
  • Adds support for app-writable PROROOT_TMP_DIR runtime config placement.
  • Improves /proc/self/exe handling for child re-exec paths.
  • Updates libproroot.so, libproroot-runtime.so, and libproroot-bridge.so.

Smoke tested

  • NodeSource apt setup and apt-get install -y nodejs.
  • node --version -> v22.22.2.
  • npm --version -> 10.9.7.
  • python3 --version -> Python 3.12.3.
  • git ls-remote https://github.com/git/git.git HEAD.
  • npm install openclaw.
  • openclaw --version -> OpenClaw 2026.4.9 (0512059).
  • npm install playwright.
  • npx playwright install chromium.
  • Playwright Chromium navigation and screenshot of https://www.naver.com.

SHA-256

3f4c99296d2e8941376699e8cfe7052fe075d049137cc982699c9d6d411855f3  arm64-v8a/libproroot.so
3b090fa854785beab521325efb1cf95cf3be94dc78f1a6f0df81b9803f03aebe  arm64-v8a/libproroot-runtime.so
ee3af3bc080118556f8131b5494db8b9b91a7f843ae1671cba74b88d6107edbe  arm64-v8a/libproroot-bridge.so
2d9b48db9a49122f809f01c5bdc1d0cb40a5cbb51ca4f2b30f428f5f13829e4e  arm64-v8a/libldlinux.so

v1.0.5 — nostdlib trampoline

10 Apr 00:35

Choose a tag to compare

v1.0.5

Nostdlib trampoline update for stricter Android seccomp environments.

Highlights

  • Rewrites the trampoline with -nostdlib for zero bionic/libc dependency.
  • Installs the SIGSYS handler through raw syscall in _start before libc or dynamic-loader code runs.
  • Uses raw svc #0 syscalls and inlined utility routines inside the trampoline.
  • Improves startup compatibility on devices with strict Android seccomp policies.

Smoke tested

  • Trampoline startup before libc initialization.
  • SIGSYS handling for strict Android seccomp policies.
  • Child exec path through the static bridge.

SHA-256

No binary assets are attached to this GitHub Release.

v1.0.4

09 Apr 10:07

Choose a tag to compare

v1.0.4

Filesystem wrapper compatibility update for Playwright and runtime tools.

Highlights

  • Hooks mkdtemp and mkstemp for correct path translation.
  • Fixes Playwright snapshot EACCES failures caused by temp-directory path handling.
  • Hooks statfs, statfs64, statvfs, and statvfs64.
  • Fixes incorrect df output inside proroot.
  • Keeps TMPDIR=/tmp behavior compatible with tsx and Playwright workloads.

Smoke tested

  • Playwright snapshot temp path creation.
  • df/statfs-style filesystem queries inside proroot.
  • TMPDIR=/tmp temp-file workflows.

SHA-256

No binary assets are attached to this GitHub Release.

v1.0.3

09 Apr 09:36

Choose a tag to compare

v1.0.3

Shebang, PATH, and temp-directory compatibility update.

Highlights

  • Fixes shebang handling by passing the optional argument to the interpreter with kernel-like behavior.
  • Sets the rootfs PATH for /usr/bin/env command resolution.
  • Sets TMPDIR=/tmp to avoid Android cache directory permission issues.
  • Enables complex shebangs such as #!/usr/bin/env -S npx tsx.

Smoke tested

  • /usr/bin/env -S shebang execution.
  • Rootfs command lookup through PATH.
  • Temporary file creation through /tmp.

SHA-256

No binary assets are attached to this GitHub Release.

v1.0.2

09 Apr 08:55

Choose a tag to compare

v1.0.2

Static ELF execution fix for Android rootless workloads.

Highlights

  • Fixes static ELF binary segfaults, including Go-style ET_EXEC binaries.
  • Relocates the trampoline to a high address to avoid memory mapping conflicts with ET_EXEC programs.

Smoke tested

  • Static ELF execution path.
  • Child trampoline startup path.

SHA-256

No binary assets are attached to this GitHub Release.

v1.0.1

09 Apr 06:55

Choose a tag to compare

v1.0.1

Child exec and interpreter compatibility fixes for early app-process workloads.

Highlights

  • Fixes child execve wrapping through the rootfs ld.so path.
  • Ensures PROROOT_LINKER_PATH and PROROOT_LIB_PATH are propagated to child exec paths.
  • Fixes env -S shebang option parsing.
  • Skips ld.so wrapping for static ELF binaries such as esbuild and Go binaries.
  • Restricts patch-count logging to PROROOT_VERBOSE.

Smoke tested

  • Child execve through the glibc dynamic linker.
  • Complex shebangs using /usr/bin/env -S.
  • Static ELF execution paths.

SHA-256

c6ba9d8d30c458e08416227ceb549fa01fcf770abe9f219acd329296c9205ebc  arm64-v8a/libproroot.so
587bf1d2643893527c5c385c98ef8423a91910cd9046a89b4ef39e7a1b9dfa9f  arm64-v8a/libproroot-runtime.so
95bcd5d812d54987eadac4f40a285785e97f1553951b47fdb55a2fcf1aa37c04  arm64-v8a/libproroot-bridge.so
2d9b48db9a49122f809f01c5bdc1d0cb40a5cbb51ca4f2b30f428f5f13829e4e  arm64-v8a/libldlinux.so

v1.0.0

09 Apr 05:36

Choose a tag to compare

proroot v1.0.0 — Rootless Linux Runtime for Android

Drop-in proot replacement with zero ptrace overhead.

Files (arm64-v8a)

File Description
libproroot.so Launcher
libproroot-runtime.so LD_PRELOAD runtime
libproroot-bridge.so Child exec trampoline
libldlinux.so glibc dynamic linker (LGPL-2.1)

Tested with

  • Node.js 24, Python 3.12, Git 2.43
  • Chromium headless_shell 131 (Playwright)

Place all 4 files in jniLibs/arm64-v8a/.