tests/runtime/native-patch-lifecycle.test.mjs (added recently) fails: bun install exits 134.
thread N panic: @memcpy arguments alias
paths/Path.zig:105 append @memcpy(this.pooled[this.len..][0..characters.len], characters)
paths/Path.zig:307 initTopLevelDir this._buf.append(trimmed, false)
install/isolated_install/Installer.zig:1591 linkDependencyBins
install/isolated_install/Installer.zig:1062 runinitTopLevelDir does:
const trimmed = ... trimInput(.abs, top_level_dir) ...;
this._buf.append(trimmed, false);and append memcpys characters into this.pooled[this.len..]. The panic means top_level_dir is itself a slice into the same pooled buffer, so source and destination overlap.
@memcpy requires non-overlapping operands; @memmove is the correct primitive when the source may alias the destination. The fix is likely either to use @memmove in append for the .any separator arm, or to have initTopLevelDir copy through a scratch buffer when its input aliases _buf.pooled.
Not caused by acde954
Verified: stashed the resolve_path.zig change, rebuilt, and the same panic occurs. joinAbsStringBuf does not appear anywhere on the stack (Path.zig:808 is a different function). Recording that explicitly because both touch path handling and the coincidence is misleading.
Runtime regressions are 76/78 with and without that change, the other failure being #712.
Refs #66