A rust interface to the Mach 3.0 kernel that underlies OSX.
A Rust interface to the user-space API of the Mach 3.0 kernel exposed in
/usr/include/mach
that underlies macOS and is linked via libSystem
(and
libsystem_kernel
).
This library does not expose the kernel-space API of the Mach 3.0 kernel
exposed in
SDK/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/mach
.
That is, if you are writing a kernel-resident device drivers or some other kernel extensions you have to use something else. The user-space kernel API is often API-incompatible with the kernel space one, and even in the cases where they match, they are sometimes ABI incompatible such that using this library would have undefined behavior.
Add the following to your Cargo.toml
to conditionally include mach on those
platforms that support it.
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.mach]
version = "0.3"
The following crate features are available:
The following table describes the current CI set-up:
Target | Min. Rust | XCode | build | ctest | run |
---|---|---|---|---|---|
x86_64-apple-darwin |
1.33.0 | 6.4 - 10.0 | ✓ | ✓ | ✓ |
i686-apple-darwin |
1.33.0 | 6.4 - 10.0 | ✓ | ✓ | ✓ |
i386-apple-ios |
1.33.0 | 6.4 - 9.4 [0] | ✓ | - | - |
x86_64-apple-ios |
1.33.0 | 6.4 - 10.0 | ✓ | - | - |
armv7-apple-ios |
nightly | 6.4 - 10.0 | ✓ | - | - |
aarch64-apple-ios |
nightly | 6.4 - 10.0 | ✓ | - | - |
[0] i386-apple-ios
is deprecated in XCode 10.0.
This project is licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in mach
by you, as defined in the Apache-2.0 license, shall be
triple licensed as above, without any additional terms or conditions.
To locally test the library, run:
TARGET=x86_64-apple-darwin TRAVIS_RUST_VERSION=nightly ./ci/run.sh
where you can replace the TARGET
and TRAVIS_RUST_VERSION
with the target you
want to test (e.g. i686-apple-darwin
) and the Rust version you want to use for
the tests (e.g. stable
, 1.33.0
, etc.).