!lymvtcwDJ7ZA9Npq:lix.systems

Lix Development

417 Members
(Technical) development of Lix, the package manager, a Nix implementation. Please be mindful of ongoing technical conversations in this channel.139 Servers

Load older messages


SenderMessageTime
28 Jul 2025
@emilazy:matrix.orgemilythe actual correct thing to do is to make sure IPC happens via Mach ports, which will automatically "donate" the QoS class of the client to processes it talks to while they service its request01:12:53
@emilazy:matrix.orgemilyso a terminal-initiated build would raise the spawned builds to default but one from a background service wouldn't01:13:10
@jade_:matrix.orgjade_i would put "correct" in quotes tho01:13:13
@emilazy:matrix.orgemilyI think there is no inherent obstacle to doing this with capnproto01:13:18
@jade_:matrix.orgjade_since that is very not portable01:13:20
@emilazy:matrix.orgemilyit's pretty portable if you have a transport-agnostic RPC layer already01:13:32
@jade_:matrix.orgjade_and i worry that it might make debugging annoying01:13:33
@emilazy:matrix.orgemilythey're pretty comparable to Unix sockets, can even pass FDs01:13:39
@jade_:matrix.orgjade_* and i worry that it might make debugging/running one-off daemons annoying01:13:43
@emilazy:matrix.orgemilybut of course it does require everything to be using capnproto already01:13:51
@emilazy:matrix.orgemily(I assume Unix socket and over-the-network transports will need to coexist anyway for remote builds, so another local transport doesn't seem like too much additional complexity)01:14:19
@jade_:matrix.orgjade_are mach ports api compatible by presenting fds?01:14:22
@jade_:matrix.orgjade_* are mach ports api compatible by presenting an fd based interface?01:15:12
@emilazy:matrix.orgemilythey're not stream sockets, no01:15:21
@emilazy:matrix.orgemilythey would need implementing as a backend in capnproto01:15:39
@jade_:matrix.orgjade_ah. that's kiiiinda annoying in that it's more darwin only code, but if we can keep it contained it might be okay01:16:34
@emilazy:matrix.orgemilyideally it's Darwin code upstream in capnproto01:16:46
@emilazy:matrix.orgemily(and then some brief glue around the server/client boundaries in Lix to select the right one based on platform, but presumably this already needs abstracting for local vs. remote RPC)01:17:45
@emilazy:matrix.orgemilybut that's why quickly wrapping the daemon to try default/user-initiated QoS may produce more immediately useful data :)01:18:22
@jade_:matrix.orgjade_yes indeed. some inspection of the apis in absence of docs for non-objc-extended-universe apps is required i think.01:19:07
@emilazy:matrix.orgemilywhich APIs are you talking about? all of this stuff is lower level than Objective-C AFAIK01:20:11
@emilazy:matrix.orgemilyMach ports are very low-level; XPC is the higher-level IPC system built on top of them but I think Mach ports would likely be the right integration layer for Cap'n Proto. they're just very raw C APis to talk directly to the poor microkernel screaming endlessly at the heart of XNU01:21:39
@emilazy:matrix.orgemily QoS stuff is, uh, "there's an undocumented posix_spawn helper" 01:21:52
@raitobezarius:matrix.orgraitobezariusdon't forget to document these ideas in the issue trcaker01:22:05
@jade_:matrix.orgjade_bazel post suggests that you can't set the policy except via posix_spawn so you can't do it to existing processes or if you are fork/exec. I think theyre mistaken on that.01:22:08
@emilazy:matrix.orgemilyyes I think that's probably not true01:22:21
@emilazy:matrix.orgemilybut not totally sure01:22:35
@jade_:matrix.orgjade_ I have found a setiopolicy_np but idk what it does 01:22:41
@emilazy:matrix.orgemilyI mean01:22:43
@emilazy:matrix.orgemily I'm pretty sure you can just taskpolicy around the daemon invocation in the launchd service 01:22:51

Show newer messages


Back to Room ListRoom Version: 10