Skip to content

Add typed native Linux/libc vocabulary - #13

Merged
isomorphisms merged 24 commits into
phone/armv7-runtimefrom
native/linux-libc-vocabulary
Sep 16, 2026
Merged

isomorphisms merged 24 commits into
phone/armv7-runtimefrom
native/linux-libc-vocabulary

Conversation

@isomorphisms

@isomorphisms isomorphisms commented Sep 10, 2026

Copy link
Copy Markdown
Owner

Implements a narrow native Linux/libc vocabulary for current Oils-derived Grease, based on the existing ARMv7 runtime branch.

Current exact head: ef9c74055c8079a7027771c6b869085ec7df3e3d
Pinned Oils source: 9024d14ecd25c8c55cd7e8ea0b901a3a9525565c
Companion source PR: isomorphisms/oils#2

Public Grease/YSH boundary:

  • mmap, munmap, mprotect, msync
  • openat, linkat, symlinkat, unlinkat
  • narrowly necessary close, readMapping, and writeMapping support actions
  • Mapping/Address and FileDescriptor runtime objects rather than raw C pointers or kernel fd values
  • explicit Result / NativeError values carrying errno information
  • symbolic text flags translated below the language boundary

The C++ layer is the existing Oils/YSH translated native-runtime seam; this PR does not create a second Grease runtime. Native calls go through libc/Bionic directly, with no raw syscall-number table and no general-purpose FFI.

The representative IB proof is examples/ib-mapped-index.ysh: open a prepared 4096-byte index file, map it shared, read fragment, write pensieve, msync, verify through the mapping, unmap and close; the host receipt then verifies the persisted file bytes outside Grease.

Focused native tests cover anonymous and file-backed mappings, bounds/errors, mprotect state (including EACCES instead of touching protected memory), relative openat, hard links, symbolic links, and unlinkat.

GitHub execution uses GitHub-hosted ubuntu-24.04. The host receipt uses the inherited Oils Podman cpp-spec harness, then runs the focused libc tests and mapped-IB example. The ARMv7 receipt uses the inherited cpp-tarball harness on hosted Ubuntu, installs the explicitly pinned Android NDK 27.3.13750724, and cross-builds the Android artifact.

Exact-current-head acceptance on GitHub-hosted Ubuntu 24.04:

  • host Grease receipt run 35115827639: green at ef9c74055c8079a7027771c6b869085ec7df3e3d.
  • Android ARMv7 run 35115827695: green at ef9c74055c8079a7027771c6b869085ec7df3e3d.

The prior exact-head receipts at 758f9ad8af42658ef3a047b7f98f023b31d5327a are historical evidence; the current head adopts the base branch's already-landed ARM ELF verifier fix rather than carrying a competing implementation.

The branch is mergeable against the current phone/armv7-runtime base. Physical-phone execution is not claimed here and remains a separate acceptance boundary.

The separate ish/Odriç direct-execve experiment is not the runtime underneath current Grease and is not duplicated by this work.

@isomorphisms
isomorphisms marked this pull request as ready for review September 14, 2026 16:41
@isomorphisms
isomorphisms merged commit 5ff32e2 into phone/armv7-runtime Sep 16, 2026
2 checks passed

Copy link
Copy Markdown
Owner Author

Physical ARMv7 acceptance receipt (2026-09-16)

Executed the exact artifact from green workflow run 35115827695 on the physical Android phone in Termux.

  • Grease packaging head: ef9c74055c8079a7027771c6b869085ec7df3e3d
  • Pinned Oils source: 9024d14ecd25c8c55cd7e8ea0b901a3a9525565c
  • Device architecture: armv7l / armeabi-v7a
  • Artifact package SHA-256: 74926b13e4b0ae7316e0f3708c9f6b8cd1679b1a193fa69d88a40258e6b235bf
  • Package checksum verification: PASS
  • Runtime ELF: ELF32, ARM
  • Physical execution: examples/ib-mapped-index.ysh
  • Grease/YSH result: IB mapped-index proof passed
  • Persisted bytes verified outside Grease: pensieve

Physical ARMv7 native-libc acceptance: PASS.

The artifact's build-time receipt still says physical_phone_execution PENDING; that is intentionally left unchanged because it records the state at build time. This receipt closes the separate physical ARMv7 execution boundary. It does not claim AArch64 physical execution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant