checkpoint: P5.8 — Android + iOS-sim validated on emulator/simulator

This commit is contained in:
agra
2026-06-19 22:32:32 +03:00
parent 2ba36f6562
commit f81d101fae

View File

@@ -446,6 +446,27 @@ when reached (sentinels or accessor fns; see the design doc Risks).
`List` growth; orthogonal, see `current/CHECKPOINT-METATYPE.md`.)
## Log
- **P5.8 — Android + iOS-sim validated end-to-end on emulator/simulator; first Android bundler corpus coverage
(2026-06-19).** The sx-driven build pipeline now validated on BOTH mobile targets via the local
emulator/simulator. **Android (Pixel_10_Pro emulator):** `sx build --target android --apk … -o lib….so`
produces a valid SIGNED `.apk` (AndroidManifest.xml + resources.arsc + `lib/arm64-v8a/lib….so` + classes.dex +
apksigner META-INF) via `default_pipeline → bundle_main` (javac/d8/aapt2/zip/zipalign/apksigner all on the
comptime VM); `adb install` + `am start` → the app **runs (no crash)** for the `super.onCreate(b)` example
(1424). **iOS-sim (iPhone 17 Pro simulator):** `sx build --target ios-sim --bundle …` → signed `.app`;
`simctl install` + `launch` → the sx AppDelegate fired (`[sx] application:didFinishLaunchingWithOptions:
called`), UIApplicationMain run loop alive. **THREE comptime-VM host-FFI gaps fixed to make the Android bundler
run on the VM** (`d8fb425`): (1) an extern returning an OPTIONAL-of-word (`getenv() -> ?cstring`) now wraps the
bare C payload word into the `{payload, has}` aggregate (present iff non-null), mirroring emit_llvm's
`char*`→`?cstring`; (2) `struct_init` of the builtin two-word aggregates `string`/`any` (e.g.
`from_cstring`'s `string.{ ptr=, len= }`); (3) the non-word-return bail now names the symbol + type. **`.apk`
corpus smoke test** (`2ba36f6`, `examples/1666-platform-android-apk-smoke`): a new `.build` `apk` directive
(cross-compile `--target android --apk`, build+inspect, NO execution) GATED on Android-SDK + real-JDK presence
— SKIPS cleanly on hosts without them (so normal `zig build test` stays green), RUNS+PASSES with `JAVA_HOME`
set (apk built + `AndroidManifest.xml`/`classes.dex`/`lib/arm64-v8a/` asserted, then cleaned up). Requires a
real JDK (the macOS `/usr/bin/javac` stub fails); Android Studio's JBR works. **709 ran + 1666 skipped (no
JDK) / 0 failed + 476/476 unit.** macOS `.app` (1665) + Android `.apk` (1666) now both cover the bundler.
> **REMAINING (true tail):** iOS-DEVICE codesigning/provisioning (needs a real device + signing identity — a
> simulator can't exercise the device-identity flow). Everything else in the stream is done.
- **Empty-member types are VALID for all kinds (user design decision, 2026-06-19).** A comptime-constructed type
with NO members now mints for every kind (empty `struct`, empty `tuple`/unit, empty `enum`, empty
`tagged_union`); ONLY a bare `declare("X")` never completed by a `define` stays rejected. `registerTypeVm`