You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit f24292a
Browse filesBrowse the repository at this point in the historyBrowse files
libxpc/libdispatch: add the XPC adoption timeline and close four components
Resolved against Apple's distribution-macOS manifest. XPC shipped in 10.7 but
adoption trailed by years, and several components never adopted it at all --
which is the premise this page originally had wrong.
Closes the question for four components: mDNSResponder (XPC confined to
mDNSMacOSX/, never vendored; MDNS_DISPOSE_XPC has zero callers), and configd,
libSystemConfiguration and DiskArbitration, which are NextBSD-original rather
than Apple ports, so no revert decision exists for them.
Records that Apple never moved SCDynamicStore off MIG -- verified at macOS 26 --
so NextBSD's configd design matches Apple's current one.
Flags a naming collision: NextBSD's libSystemConfiguration ports Apple's
SystemConfiguration.fproj, not Apple's configd/libSystemConfiguration, which is
a different XPC-native helper with no pre-XPC release.
Flags a methodology risk: git grep -E with \b silently returns zero at every
tag, so any 'zero XPC references' count produced that way is a false negative.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013FP6vokobmZDdMwpxXgotF
Copy file name to clipboardExpand all lines: nextbsd-libxpc-libdispatch-scoping.html
+22Lines changed: 22 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -233,6 +233,28 @@ <h3>On reverting components: use old releases as reference, not replacement</h3>
233
233
<p>Note the pattern that corrects this page’s original premise: <strong>components adopted XPC years after XPC shipped in 10.7</strong> — syslog in 10.9, Libnotify in 10.11. “Pre-XPC” never meant 10.6.</p>
234
234
<p>For launchd specifically, an actual revert also fails on schema: the shipped plists use <code>EnableTransactions</code> and <code>POSIXSpawnType</code>, both 10.7 keys. A 10.6 launchd silently ignores keys it does not know, and syslogd’s job starts only because <code>KeepAlive=true</code> makes it non-ondemand. Keeping launchd modern is the safe direction; 842 parses everything an older daemon ships, and the reverse is not true.</p>
235
235
236
+
<h2>6b. XPC adoption timeline — the premise this page had wrong</h2>
237
+
<p>XPC shipped in 10.7. Components adopted it years later, and several never did. Resolved against Apple’s own <code>distribution-macOS</code> manifest, not inferred from version numbers:</p>
<tr><td>mDNSResponder</td><tdcolspan="2">XPC confined to <code>mDNSMacOSX/</code>, never vendored</td><td>2881.0.25 (macOS 26.0)</td><tdclass="good">0 — macro with no callers</td></tr>
244
+
<tr><td>configd</td><tdcolspan="2" class="good">Never adopted XPC — still MIG at macOS 26</td><td>NextBSD-original</td><tdclass="good">0</td></tr>
<tr><td>DiskArbitration</td><tdcolspan="2">Client framework never adopted XPC</td><td>NextBSD-original</td><tdclass="good">0</td></tr>
247
+
</table>
248
+
<divclass="callout callout-good">
249
+
<p><strong>Apple never moved SCDynamicStore off MIG.</strong> Verified at <code>configd-1405.120.5</code> (macOS 26): <code>config.defs</code> still declares <code>subsystem config 20000</code>, all 18 MIG server implementations are XPC-free, and <code>SCDOpen.c</code> still does <code>bootstrap_look_up2</code>. Apple used XPC for the bulk read-only blobs layered <em>around</em> configd — reachability (10.8), dnsinfo/nwi (10.9), IPMonitor (10.12) — never for the store itself. NextBSD’s design matches Apple’s current one.</p>
250
+
</div>
251
+
<divclass="callout callout-warn">
252
+
<p><strong>Naming collision worth knowing.</strong> NextBSD’s <code>libSystemConfiguration</code> is a port of Apple’s <strong><code>SystemConfiguration.fproj</code></strong> (the framework). Apple <em>also</em> ships <code>configd/libSystemConfiguration/</code> — an entirely different XPC-native helper for dnsinfo and nwi blobs, which has <strong>no pre-XPC release</strong>, having been XPC-native from birth (<code>configd-596.12</code>, 10.9). Reasoning about “libSystemConfiguration’s XPC history” from the upstream directory name reaches the opposite of the correct conclusion.</p>
253
+
</div>
254
+
<divclass="callout callout-bad">
255
+
<p><strong>Methodology warning.</strong><code>git grep -E '\bxpc_'</code> silently returns zero at every tag — git’s POSIX ERE has no <code>\b</code>. Two surveys hit this independently. Any count of “zero XPC references” produced that way is a false negative. The zeroes recorded on this page were established by reading preprocessor conditions and Makefiles rather than by grep alone, but spot-check before treating any zero as licence to delete.</p>
256
+
</div>
257
+
236
258
<h2>7. Do this before either plan</h2>
237
259
<ol>
238
260
<li><strong>Make the boot test gate</strong> (<ahref="https://github.com/nextbsd-redux/nextbsd-userland/issues/87">#87</a>). CI has passed a kernel that bricked the box, and a userland PR while <code>SYSLOG-RUN</code> failed on both arches under <code>boot_soft</code>. Both plans’ risky phases are PID-1-adjacent.</li>
0 commit comments