Skip to content

Releases: jonx/Macaros

Macaros 0.2.1

Choose a tag to compare

@jonx jonx released this 15 Aug 22:39

Macaros 0.2.1 release notes

This release corrects the 0.2.0 delivery image by bundling the host-side
libemu68k.dylib required by emu68k.library. The package audit and compatibility
checker now reject an image missing either half of legacy support. Macaros also keeps
bounded local compatibility diagnostics and exposes them through the Help menu; it
does not upload them.

The packaged desktop now backs CLIPS: with RAM:Clipboards. This makes the
AROS clipboard writable when Macaros is launched directly from its read-only
delivery image, so the Edit menu and Command-C/Command-V clipboard bridge work
without configuration or files left over from a developer installation.

The About window now reads version 0.2.1 and build 6 from the same release
identity used to generate the app bundle, disk image, and build manifest.

The DMG and outer application bundle are Developer ID signed, but this release
is not Apple-notarized. Its embedded hosted engine and bridge libraries retain
ad-hoc signatures so AROS can use its current scheduler. If Gatekeeper blocks
the first launch, Control-click Macaros.app, choose Open, and confirm
once, or use System Settings -> Privacy & Security -> Open Anyway.

What this release is

Macaros is a hosted Apple Silicon release of AROS and a place to test our own
operating-system and application-platform concepts in a system people can run.
It explores a native AArch64 AROS target, explicit bridges to host services,
modern AROS applications, transparent legacy execution, safer removable-media
support, and an unattended way to build, drive, and inspect the whole system.

This is intentionally a hosted system. AROS runs as an arm64 process under
macOS; macOS owns the hardware-facing drivers and Macaros exposes those services
through normal AROS interfaces. We are not planning a bare-metal Apple Silicon
version. That would be a different project with different hardware, boot, and
driver requirements.

Included concepts and applications

  • Full Wanderer desktop in a native Cocoa/Metal window.
  • Clipboard, CoreAudio, networking, shared host volumes, media decoding, and
    Metal-assisted graphics paths.
  • Zed and Ferail as native AArch64 AROS applications.
  • The emu68k.library execution layer and JIT work for a growing set of legacy
    68k applications.
  • The writable exFAT handler and its EXFAT0 DOSDriver.
  • aros-ctl, the unattended input, capture, logging, and inspection harness.

Moonstone is not included in this release. Its developer build path remains
available through MACAROS_INCLUDE_MOONSTONE=1, but its binary, icon, and assets
are absent from the standard image.

Important developer ABI rule: do not use x18

Any code built for the Macaros AArch64 AROS target must treat general-purpose
register x18 as reserved and unavailable.

In AAPCS64, x18 is the platform register and its meaning is defined by the
platform ABI. Apple reserves it on arm64 platforms. Macaros runs hosted inside a
Darwin process, so AROS code does not get to choose a different contract for
that register merely because it is guest code.

There is also a concrete hosted failure mode. Macaros preempts AROS tasks using
Darwin signals. Our hosted/x18probe test places a sentinel in x18, receives a
signal, and inspects the signal context. macOS supplies zero for x18, so the
original value has already been lost before the AROS signal handler can save it.
Saving and restoring more guest context cannot repair that.

Use these rules for every Macaros-targeted component:

  • C and C++: compile AROS-target code with -ffixed-x18.
  • Rust: use hosted/rust/aarch64-unknown-aros.json, which enables
    +reserve-x18; do not replace it with a generic AArch64 target.
  • Assembly: never use x18 for temporary or persistent state.
  • Prebuilt AArch64 AROS objects that may allocate x18 are not compatible and
    must be rebuilt for this target.

This restriction follows from the hosted Darwin ABI. It is one more reason the
release is described as Macaros AArch64 AROS, not as a generic bare-metal AROS
ABI.

Current limits

  • Ferail is early. It cannot yet launch programs or open files by
    double-clicking them; use Wanderer or the AROS Shell for those operations.
  • Legacy 68k compatibility is early and incomplete. Confirmed programs such as
    LhA work, but programs that require missing operating-system calls or
    original Amiga custom hardware may fail.
  • Zed does not yet include the complete language-server or Git integration of
    its upstream desktop releases.
  • Some host-volume and settings changes require restarting Macaros.
  • This release is experimental. Keep important data outside the writable shared
    volume until the relevant workflow has been tested.

The delivery DMG and outer application bundle are Developer ID signed. As an
interim compatibility measure, the hosted AROS engine and bridge libraries keep
their build-time ad-hoc signatures and run without Apple's hardened runtime.
They do not have independent Developer ID signatures. The complete host layer
will move to hardened runtime only after a portable hosted-scheduler correction
has been implemented and tested.

The exact source revisions, states, repository URLs, and artifact hashes are in
the BUILD-MANIFEST.txt embedded in the app. Third-party licences and generated
dependency reports are included under Documentation/Licenses.

Macaros 0.2.0

Choose a tag to compare

@jonx jonx released this 15 Aug 16:05

Macaros 0.2 is an experimental, hosted AROS system for Apple Silicon. It is a place to test our own operating-system and application-platform concepts; it is not a generic AROS distribution. AROS runs as an arm64 process under macOS, and a bare-metal Apple Silicon version is not planned.

The release includes:

  • the Wanderer desktop in a Cocoa/Metal window;
  • clipboard, CoreAudio, networking, host volumes and native media decoding;
  • Zed and Ferail as native AArch64 AROS applications;
  • the growing emu68k.library compatibility layer for legacy 68k applications;
  • the writable exFAT handler and EXFAT0 DOSDriver;
  • the aros-ctl automation and inspection harness.

Moonstone is not included.

Before installing

Open the disk image and run Check Macaros Compatibility.command. It checks the processor, macOS version, memory, Metal support, available disk space, runtime architecture and application signature.

The app and disk image are signed with Developer ID, notarized by Apple and stapled. SHA-256 hashes are in the attached checksum file.

AArch64 ABI requirement

Software built for Macaros must not use register x18. Apple reserves it as the platform register, and Darwin signal delivery does not preserve a guest value while Macaros is running hosted. Compile C and C++ target code with -ffixed-x18, use the checked-in Rust target with +reserve-x18, and do not allocate x18 in assembly.

Exact source revisions

The exact FFmpeg 8.1.2 source corresponding to the statically linked libraries is attached as Macaros-0.2.0-FFmpeg-8.1.2-source.tar.xz. Build configuration and relinking scripts are in the Macaros repository. Third-party notices and licence texts are also included in the disk image.

Current limits

  • Legacy 68k compatibility is substantial but incomplete, especially for software requiring original Amiga custom hardware.
  • Zed does not yet include all language-server and Git integration from its upstream desktop releases.
  • Some host-volume and settings changes require restarting Macaros.
  • Keep important data outside the writable shared volume until you have tested your workflow.