Is it even possible or part of VisionOS?
Thanks,
Colin
Core OS
RSS for tagExplore the core architecture of the operating system, including the kernel, memory management, and process scheduling.
Post
Replies
Boosts
Views
Activity
Hi,
REQUEST 1:
seems Microsoft is ahead of Apple in X86 ARM emulation support at least in features supported..
see:
https://blogs.windows.com/windows-insider/2024/11/06/announcing-windows-11-insider-preview-build-27744-canary-channel/
x64 emulated applications through Prism will now have support for additional extensions to the x86 instruction set architecture. These extensions include AVX and AVX2, as well as BMI, FMA, F16C
BMI1/2 and F16C aren't yet supported by Rosetta.. would be useful for games like Alan Wake 2..
so asking for Rosetta equaling features to Prism emulator..
REQUEST 2:
there is no way to currently enable AVX1/2 on Rosetta Linux..
on macOS using
export ROSETTA_ADVERTISE_AVX=1
does the trick.. but not on Linux VM's.. tested setting this via:
/bin/launchctl setenv ROSETTA_ADVERTISE_AVX 1
on Mac before VM launch and inside Linux VM but AVX2 isn't exposed..
In IOS 18.2 Beta 3 and earlier versions unfortunately it is not possible, to make shortcut use a variable to add a tag to a note.
Whenever this is running it opens up the list of tags and asks for manual input instead of using the variable that is placed in the textfield of the apply tag command.
Would be great if someone responsible could adjust that so it works.
Thxs :-)
Not able to replicate this myself but have had a couple of users report this. I have a Finder Sync Extension. It does not, at least intentionally, change any sidebar icons. The hosting app mostly uses asset catalogs and the icon file it specifies in its info.plist is a icns file, not an iconset.
Any idea what may be causing this? Seems odd to me that there isn't some explicit setting to enable this instead of requiring some set of configurations lining up.
We're build a pkg with three apps in it from the command line. There is one primary app and two supporting apps. We build a folder structure inside a temp directory like below (some folder names replaced with generic ones):
mkdir -p ./tmp/Applications/.hiddenfolder/
mkdir -p ./tmp/Library/Application\ Support/Company/
mkdir -p ./tmp/Library/Preferences/
mkdir -p ./tmp/Library/Logs/Company/
mkdir -p ./tmp/Library/LaunchAgents/
mkdir -p ./tmp/Library/Company/
mkdir -p ./tmp/Library/LaunchDaemons/
#Grant Logs Folder Read-Write Access to All
chmod a+rw ./tmp/Library/Logs/Company/
chmod a+rw ./tmp/Library/Application\ Support/Company/
We then build and sign each app dependency and place them into the temporary folder. For each app we're calling:
xcodebuild -workspace "$PROJECT" -scheme "$TARGET" -configuration Release -derivedDataPath "$WORKING" clean build
codesign --force --deep -o runtime --entitlements "../$TARGET/$APPLICATION.entitlements" --sign "$DEVKEY" "$WORKING/Build/Products/Release/$APPLICATION.app"
cp -R "$WORKING/Build/Products/Release/$APPLICATION.app" "$DESTINATION"
The primary app is copied into ./tmp/Applications/.hiddenfolder/ . The other two apps are put in ./tmp/Library/Company/ and ./tmp/Applications/
We then create the component list, build, and notarize the final pkg using the script below:
Some definitions of the variables used below:
IDENTIFIER=com.company.pkg.app1 (not real id but an example)
ROOT=./tmp
SCRIPTS=./scripts
GUI=./pkggui
pkgbuild --analyze --identifier "$IDENTIFIER" --version "$VERSION" --root "$ROOT" --scripts "$SCRIPTS" "$NAME-tmp.plist"
/usr/libexec/PlistBuddy -c "SET 0:BundleIsRelocatable NO" "$NAME-tmp.plist"
/usr/libexec/PlistBuddy -c "SET 1:BundleIsRelocatable NO" "$NAME-tmp.plist"
/usr/libexec/PlistBuddy -c "SET 2:BundleIsRelocatable NO" "$NAME-tmp.plist"
pkgbuild --identifier "$IDENTIFIER" --version "$PKGVERSION" --root "$ROOT" --scripts "$SCRIPTS" --component-plist "$NAME-tmp.plist" "$NAME-tmp.pkg"
productbuild --synthesize --package "$NAME-tmp.pkg" distribution.xml
sed -i "" \
-e '$ i\
\ <title>App1</title>' \
-e '$ i\
\ <background file="background.icns" alignment="bottomleft" scaling="proportional" />' \
-e '$ i\
\ <welcome file="welcome.txt" />' \
-e '$ i\
\ <installation-check script="InstallationCheck()"/> \
<script> \
function InstallationCheck(prefix) { \
if (system.compareVersions(system.version.ProductVersion, '12.0') < 0) { \
my.result.message = "This update requires OS X version 12.0 or later."; \
my.result.type = "Fatal"; \
return false; \
} \
return true; \
} \
</script>' \
"distribution.xml"
productbuild --distribution distribution.xml --resources "$GUI" --package-path "./$NAME-tmp.pkg" --sign "$DEVKEY" "$NAME.pkg"
Once built and notarized this pkg becomes the base for the installers we give to customers. For each customer we have some custom parameters we set in a plist file inside the pkg, which requires us to expand the pkg out, add the plist file to /Library/Preferences/ in the expanded pkg, and then flattent/re-notarize the edited pkg.
What we're running into is that the primary app (App1 above) will intermittently disappear after installation. We check all of the files we lay down in the postinstall script, and usually it detects the app in the correct location (/Applications/.hiddenfolder/), so it appears that it is correctly laying the files down but something is removing the app after installation. A couple of times the postinstall script has detected that the app is not in the correct place and fails, but usually the install will finish and only the other two apps remain. So far we've found no logs or evidence of it being moved or deleted; it just ceases to exist after installation.
Has anyone else had this issue and found a solution?
LSSetDefaultHandlerForURLScheme is flagged as deprecated, but it isn't clear to me (very much not a frequent macOS developer) what the alternative is.
Can anyone point me in the right direction?
Thanks.
I recently upgared my mac to 15.1, After upgrading I am unable to install app on 15.1 Mac OS 15.1, sequoia.
App is getting stuck in “Preparing for the installation” stage.
Hi everyone,
I've implemented geofencing in my app, and it works well when the device is connected to the internet. The app successfully triggers region entry and exit events, even when it's in a terminated state, and sends the details to the server.
However, I'm facing an issue with offline functionality. I attempted to cache geofence events (region entry/exit) when the device is offline and send them to the server once the device comes back online. I’ve tried using both UserDefaults and Core Data for caching these events, but the offline events are not being stored or processed correctly.
Here’s the code that triggers the region events:
func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
if let region = region as? CLCircularRegion {
handleRegionEvent(region: region, eventType: "enter")
}
}
func locationManager(_ manager: CLLocationManager, didExitRegion region: CLRegion) {
if let region = region as? CLCircularRegion {
handleRegionEvent(region: region, eventType: "exit")
}
}
The region entry/exit triggers correctly, and I even receive notifications. However, nothing is being saved to storage.
To cache events, I'm using this method:
private func cacheEvent(_ event: GeofenceEvent) {
var cachedEvents = getCachedEvents()
cachedEvents.append(event)
if let encoded = try? JSONEncoder().encode(cachedEvents) {
UserDefaults.standard.set(encoded, forKey: cachedEventsKey)
}
}
For UserDefaults, we've added the app group and suite name, but it's still not working as expected.
Has anyone encountered similar issues or have any suggestions on how to reliably cache and sync geofence events during offline scenarios?
Any help would be greatly appreciated!
I am developing a macOS app that requires the ability to create new files in the same directory as a user-selected file, but I am encountering permission issues due to the App Sandbox restrictions. While the user can select a file (e.g., a.jpg) using a standard open panel, I cannot create an adjacent file (e.g., a.jxl) in the same folder because the sandbox only grants access to the selected file, not to other files in the directory.
I understand that full disk access might be an option, but it requires user intervention and isn't suitable for this case. Is there any way to extend access to other files in the directory (including those not selected by the user) while remaining within the App Sandbox environment?
When executing timing benchmarks on macOs we see a much more variable sleep time relative to Linux on arm64 or Linux on x86_64 . If we have a timing loop firing every 16ms, we frequently see timings of 20+ms. We have turned off timer coalescing using
sudo /usr/sbin/sysctl -w kern.timer.coalescing_enabled=0
But we are still seeing lots of spikes in expected period as compared to Linux. Is there anything we can further do to stabilize the timing of our macOs host and improve timer performance? Are there any settings we can alter (similar to the one above) to get more accurate timing performance?
Example:
These are sleeps that are used with standard C++ functions like
std::this_thread::sleep_until()
This is measured by having a loop printing the current system time and sleeping as above
for (int i = 0; i < ITERATIONS; i++) {
printf("%llu\n", current_time_ns());
std::this_thread::sleep_until(std::chrono::steady_clock::now() + std::chrono::milliseconds(16))
}
The same code was compiled for
arm64 macOS
arm64 Linux
x86_x64 Linux
And was found to be far more variable in the macOS arm64 case.
I am getting recurring errors running code on macOS 15.1 on arm that is using a volume mounted from a machine running macOS 14.7.1 on x86. The code I am running copies files to the remote volume and deletes files and directories on the remote volume. The files and directories it deletes are typically files it previously had copied.
The problem is that I get permission failures trying to delete certain directories.
After this happens, if I try to list the directory using Terminal on the 15.1 system, I get a strange error:
ls -lA TestVAppearances.app/Contents/runtime-arm/Contents
total 0
ls: fts_read: Permission denied
If I try to list the directory on the target (14.7.1) system, there is no error:
TestVAppearances.app/Contents/runtime-arm/Contents:
total 0
I was able to confirm with a customer of mine that calling copyfile with a source file that is a symbolic link on a NTFS partition always causes the error
NSPOSIXErrorDomain 12 Cannot allocate memory
They use NTFS drivers from Paragon.
They tried copying a symbolic link from NTFS to both APFS and NTFS with the same result. Is this an issue with macOS, or with the NTFS driver?
Copying regular files on the other hand always works. Copying manually from the Finder also seems to always work, both with regular files and symbolic links, so I'm wondering how the Finder does it.
Here is the sample app that they used to reproduce the issue. The first open panel allows to select the source directory and the second one the destination directory. The variable filename holds the name of the symbolic link to be copied from the source to the destination. Apparently it's not possible to select a symbolic link directly in NSOpenPanel, as it always resolves to the linked file.
@main
class AppDelegate: NSObject, NSApplicationDelegate {
func applicationDidFinishLaunching(_ notification: Notification) {
let openPanel = NSOpenPanel()
openPanel.canChooseDirectories = true
openPanel.canChooseFiles = false
openPanel.runModal()
let filename = "Modules"
let source = openPanel.urls[0].appendingPathComponent(filename)
openPanel.runModal()
let destination = openPanel.urls[0].appendingPathComponent(filename)
do {
let state = copyfile_state_alloc()
defer {
copyfile_state_free(state)
}
var bsize = UInt32(16_777_216)
if copyfile_state_set(state, UInt32(COPYFILE_STATE_BSIZE), &bsize) != 0 {
throw NSError(domain: NSPOSIXErrorDomain, code: Int(errno))
}
if copyfile_state_set(state, UInt32(COPYFILE_STATE_STATUS_CB), unsafeBitCast(copyfileCallback, to: UnsafeRawPointer.self)) != 0 || copyfile_state_set(state, UInt32(COPYFILE_STATE_STATUS_CTX), unsafeBitCast(self, to: UnsafeRawPointer.self)) != 0 || copyfile(source.path, destination.path, state, copyfile_flags_t(COPYFILE_NOFOLLOW)) != 0 {
throw NSError(domain: NSPOSIXErrorDomain, code: Int(errno))
}
} catch {
let error = error as NSError
let alert = NSAlert()
alert.messageText = "\(error.localizedDescription)\n\(error.domain) \(error.code)"
alert.runModal()
}
}
private let copyfileCallback: copyfile_callback_t = { what, stage, state, src, dst, ctx in
if what == COPYFILE_COPY_DATA {
if stage == COPYFILE_ERR {
return COPYFILE_QUIT
}
var size: off_t = 0
copyfile_state_get(state, UInt32(COPYFILE_STATE_COPIED), &size)
}
return COPYFILE_CONTINUE
}
}
I have a Vision OS APP with memory requirement greater than 5120MB, is there any solution other than optimizing resources, dynamic loading and sub-scenarios?
My Question:
1. I would like to know what is the maximum running memory of the APP under Vision OS?
2. Is it possible to modify the maximum running memory of an APP?
3. Does Vision OS provide an interface for jumping between apps?
Hi,
please see detailed findings on:
https://github.com/utmapp/UTM/discussions/6799
basically apps that runned via Rosetta Linux now fail in kernels>=6.11 like the included in Ubuntu 24.10 with:
/media/rosetta/rosetta hello
assertion failed [hash_table != nullptr]: Failed to find vdso DT_HASH
(Vdso.cpp:78 get_vdso_dynamic_data)
Trace/breakpoint trap
the issue seems to be due to this commit.
https://github.com/torvalds/linux/commit/48f6430505c0b0498ee9020ce3cf9558b1caaaeb
Hi,
It seems that on M4 devices any virtual machine with macOS version older than 13.4 fail to boot, they stuck with a black screen. This is regardless of the virtualization software used (UTM, VirtualBuddy, Viable, etc...). After talking to many people everyone experiences the same.
At least for me, this is a massive limitation of the platform, I really hope this is a bug which can be fixed.
Thanks,
Csaba
The copyfile() method of the macOS API does not seem to use SMB server-side copying, while copying in Finder does appear to use this.
I'm trying to use task_for_pid in a project but I keep getting error code 5 signaling some kind of signing error. Even with this script I cant seem to get it to work.
#include <mach/mach_types.h>
#include <stdlib.h>
#include <mach/mach.h>
#include <mach/mach_error.h>
#include <mach/mach_traps.h>
#include <stdio.h>
int main(int argc, const char * argv[]) {
task_t task;
pid_t pid = argc >= 2 ? atoi(argv[1]) : 1;
kern_return_t error = task_for_pid(mach_task_self(), pid, &task);
printf("%d -> %x [%d - %s]\n", pid, task, error, mach_error_string(error));
return error;
}
I've tried signing my executables using codesign and also tried building with Xcode with the "Debugging Tool" box checked under hardened runtime. My Info.plist file includes the SecTaskAccess key with the values "allowed" and "debug." Hoping someone can point me towards what I'm missing here. Thanks!
I'd like to be able to do the equivalent of getrusage(3) for some of our other processes. These are daemons, so they're not connected in any way. Obviously, Activity Monitor and top can do the things I want, but I'm not Apple. 😄
I went down a maze of twisty APIs, all a-Mach, and have decided to ask.
(We're trying to keep track of the processes in the field. We also want to know what's going on if a process has stopped responding but hasn't died. I suppose I could, absolute worst case, periodically send getrusage(3) info to the monitoring process.)
When Call Blocking and Identification is enabled, information such as Caller Name, number and Call Identification Label is displayed correctly in the incoming call screen.
But in Recents screen the call record is not displaying any name or number but instead displays only the Call Identification label that was passed in CXCallDirectoryProvider is displayed.
Note: This issue is not observed when the call blocking and identification permission is not granted and the same code is working fine in iOS 17.x
Hello, I have a some problem with background fetch. In my app I use background modes for fetch data and display on my home widget iPhone. Its working correct when I built app on my phone from Xcode but when I distribute my app on TestFlight my home widget not updating at all.
Help me understand if this issue is only due to TestFlight resources, or should I try releasing the app and hope that it will work in the release version?