diff --git a/current/CHECKPOINT-COMPILER-API.md b/current/CHECKPOINT-COMPILER-API.md index 97b9bf68..dd60bfa0 100644 --- a/current/CHECKPOINT-COMPILER-API.md +++ b/current/CHECKPOINT-COMPILER-API.md @@ -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`