Skip to content

rebar 0.5.0

Choose a tag to compare

@OverlordDev OverlordDev released this 05 Nov 10:38
· 47 commits to main since this release

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-insns finds 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 test for 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 rebar and librebar_exec.dylib together, run ./rebar path/to/arm64/binary [args...].

Build from source: ./build.sh.