Skip to content

Record the emulated Mac's emulator choice, with an offline Unicorn/icicle diff - #275

Merged
parawanderer merged 1 commit into
mainfrom
docs/emulated-mac-emulator-choice
Oct 23, 2026
Merged

parawanderer merged 1 commit into
mainfrom
docs/emulated-mac-emulator-choice

Conversation

@parawanderer

Copy link
Copy Markdown
Owner

Records why #274's emulated Mac ships Unicorn (GPL-2.0) and how to replace it later without users noticing.

  • docs/emulated-mac-emulator-choice.md: the decision, the GPL obligations (licence notice, libmacadi.so in its own process), the permissive emulators surveyed, and the icicle experiment's results and gaps.
  • scripts/adi-emulator-diff/: puts icicle (MIT OR Apache-2.0) under sacca97/os-findmy-e's adi-core and diffs it against Unicorn on the iTunes 12.8.3 CoreADI. Clones its dependencies at pinned commits; sends nothing to Apple.
  • Pointers from AGENTS.md rule 4, CONTRIBUTING.md and the docs index.

Result: every offline call (Initialize, the unprovisioned IsMachineProvisioned / RequestOTP / GetIDMSRouting, and ProvisioningStart with synthetic spims) is byte-identical under both. icicle is about 30x slower on a Mac. The OTP path needs a provisioned machine and has not been compared.

Verified: run.sh from a clean work directory on macOS arm64, both icicle runs (interpreter and JIT) identical to Unicorn. Nothing here is built or run by CI.

🤖 Generated with Claude Code

…icle diff

#274 runs Apple's macOS CoreADI under Unicorn, which is GPL-2.0. The decision is to ship it,
with a licence notice and the library in its own process, and to swap it only if somebody has a
reason to. A swap is invisible to users only if the replacement produces the same bytes, so
scripts/adi-emulator-diff/ puts icicle (MIT OR Apache-2.0) under os-findmy-e's adi-core and diffs
it against Unicorn. Every offline call matched byte for byte; the OTP path, which needs a
provisioned machine, has not been compared.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@parawanderer
parawanderer merged commit c212b76 into main Oct 23, 2026
2 checks passed
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