Repository navigation
rebar 0.5.0
Runs arm64 macOS programs on Intel/AMD (x86_64) Macs. A user-mode dynamic binary translator (interpreter + x86-64 JIT + Mach-O loader/bridge to the host's system libraries).
New in 0.5.0
Instructions (checked by a self-testing program against a C model, with and without the JIT)
- FEAT_FRINTTS: FRINT32Z/32X/64Z/64X
- FEAT_FCMA: FCADD, FCMLA (vector and by element, half/single/double)
- FEAT_FHM: FMLAL/FMLSL/FMLAL2/FMLSL2
- FEAT_I8MM: SMMLA, UMMLA, USMMLA, USDOT, SUDOT
- FEAT_BF16: BFDOT, BFMMLA, BFMLALB/T, BFCVT, BFCVTN/BFCVTN2
- FEAT_RDM: SQRDMLAH/SQRDMLSH; FEAT_FlagM: RMIF, SETF8, SETF16
- LDTR/STTR family, LDRAA/LDRAB, PACGA
rebar --probe-insnsfinds A64 encodings the interpreter does not implement yet
Runtimes and frameworks (tested with their own test suites and sample programs)
- Go: panics from faults (nil dereference) in hot JIT code, async preemption (SIGURG),
syscall.Exec,go build,go testfor sync/atomic, net/http, syscall, text/template - Rust: rustc, unwinding with the Rust personality routine
- CPython 3.13: about 350 files of its own test suite pass; ctypes and libffi (arm64 ABI, struct by value, closures) work
- Java (OpenJDK, javac, parallel streams), Node.js, Deno, Ruby (YJIT), PHP, Erlang (BEAM), GHC (-threaded, STM), OCaml bytecode, gcc 16 (compiled SQLite)
- arm64e binaries (pointer authentication)
- libc++ (C++20): streams, filesystem, regex, threads, futures, ranges, format, locale
- libxml2, expat, libxslt callbacks with nine arguments
- Frameworks: Accelerate, NaturalLanguage, Vision, CoreML, CoreText, PDFKit, SceneKit, SpriteKit, GameplayKit, Contacts, Compression, ImageIO, AudioToolbox, Network, Security, VideoToolbox, AVFoundation, CoreImage, MetalPerformanceShaders, IOKit, SystemConfiguration, SwiftData, SwiftUI (ImageRenderer, Charts), XPC, dispatch, KVO
- Scripts with
#!to an arm64 interpreter, and host scripts started by guests (exec shim)
Also working (from earlier releases)
- Swift Concurrency, key paths, SwiftUI, Swift Charts
- Java HotSpot, .NET CoreCLR, LLVM-based JIT runtimes, V8 and JavaScriptCore
- GTK 3, GLib, Cairo, gdk-pixbuf; OpenGL through GLFW and LWJGL
- Mach exception handling, keychain, SecureTransport TLS, Objective-C runtime, libunwind, posix_spawn
Not supported: SVE/SME instructions.
Install
- Rebar-launcher: Rebar.app. Unzip, move to Applications, open. If macOS says the app is damaged:
xattr -dr com.apple.quarantine /Applications/Rebar.app. - rebar (command line): keep
rebarandlibrebar_exec.dylibtogether, run./rebar path/to/arm64/binary [args...].
Build from source: ./build.sh.