Licence
mu is released under the MIT License.
MIT License
Copyright (c) 2025-present James Mills <prologic@shortcircuit.net.au>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
The canonical copy lives in LICENSE, and the full attributions below are kept in NOTICE.
Credits
q
Portions of mu’s native backend are derived from q, a programming language by Eduard Urbach, and are used under its licence:
Copyright © Eduard Urbach
Permission is hereby granted, free of charge, to use, copy, modify or distribute this software for any purpose, provided that the above copyright notice and this permission notice appear in all copies.
The derived portions are:
internal/native/isa/arm64/encode.go— the instruction field-packing helpersmask6,reg3,reg3Imm,reg4andreg2BitmaskImm, from q’ssrc/arm/encode.go; and the UBFM/SBFM shift-alias encoders, from q’ssrc/arm/Shift.go.internal/native/format/macho/macho.go— the initial structure of the Mach-O writer: the load-command layout,createLinkeditSegmentand its chained-fixups header, and the ad-hoc code signature construction. The file has since been substantially extended — dyld-bound imports, a symbol table, multi-architecture support — but its origin is q.
Both files carry the same attribution in their headers.
Influences
The projects and specifications below informed mu’s design or document the file formats it emits. No code from them is present in mu; they are recorded here for accuracy and credit.
- The Go Programming Language — BSD-3-Clause. Go’s
cmd/internal/codesignis the canonical Go rendition of Apple’s ad-hoc Mach-O code signing algorithm. mu implements the same Apple-specified algorithm and necessarily converges on the same structures and page-hash computation. - wazero — Apache-2.0. The layering of mu’s native backend — the split between a machine-independent IR and per-ISA backends, and the shape of their interfaces — was informed by wazero’s wazevo compiler.
- Apple Inc. — the constants, structure layouts and field names used by the
Mach-O writer are dictated by Apple’s published on-disk formats, principally
mach-o/loader.h,mach-o/fixup-chains.handosfmk/kern/cs_blobs.h.