Selected changesmerged Aug 25, 2026
Fix Turbopack resolution through chained symlinksRust · 135 + / 13 −
148 source lines changed in turbopack/crates/turbo-tasks-fs/src/disk.rs.
A reviewable change in a preferred framework internals path. Focused tests changed with it.
turbopack/crates/turbo-tasks-fs/src/disk.rs ↗ · 8 files
@@ -1958,6 +1958,67 @@ mod tests { tt.stop_and_wait().await; } + #[cfg(unix)]+ #[tokio::test(flavor = "multi_thread", worker_threads = 2)]+ async fn test_link_target_resolved_type_through_chain() {+ use std::os::unix::fs::symlink;++ let scratch = tempfile::tempdir().unwrap();+ let path = scratch.path().to_owned();+ create_dir_all(path.join("target-dir")).unwrap();+ File::create_new(path.join("target-file")).unwrap();+ symlink("target-dir", path.join("dir-inner")).unwrap();+ symlink("dir-inner", path.join("dir-outer")).unwrap();+ symlink("target-file", path.join("file-inner")).unwrap();+ symlink("file-inner", path.join("file-outer")).unwrap();+ symlink("../outside", path.join("invalid-inner")).unwrap();+ symlink("invalid-inner", path.join("invalid-outer")).unwrap();++ let root = canonicalize_to_rcstr(&path).unwrap();++ #[turbo_tasks::function(operation, root)]+ async fn assert_operation(+ fs: ResolvedVc<DiskFileSystem>,+ root_path: FileSystemPath,+ ) -> anyhow::Result<()> {+ for (input_path, expected_output) in [+ ("dir-outer", FileSystemEntryType::Directory),+ ("file-outer", FileSystemEntryType::File),+ ("invalid-outer", FileSystemEntryType::Error),+ ] {+ let link = fs.read_link(root_path.join(input_path)?).await?;+ let LinkContent::Link { target } = &*link else {
fix(publish): reject invalid JSR package namesRust · 209 + / 38 −
247 source lines changed in cli/registry.rs.
A reviewable change in a preferred language design path. Focused tests changed with it.
cli/registry.rs ↗ · 5 files
@@ -269,8 +330,84 @@ mod test { #[test] fn test_parse_package_name() { assert_eq!(parse_package_name("@deno/doc").unwrap(), ("deno", "doc"));- assert!(parse_package_name("deno/doc").is_err());- assert!(parse_package_name("@deno").is_err());+ assert_eq!(+ parse_package_name("@scope-1/package-2").unwrap(),+ ("scope-1", "package-2")+ );+ assert_eq!(parse_package_name("@a/b").unwrap(), ("a", "b"));++ for invalid_name in [+ "deno/doc",+ "@deno",+ "@deno/../doc",+ "@deno/doc/other",+ "@deno/doc?other",+ "@deno/doc#other",+ "@deno/doc\\other",+ "@deno/doc%2Fother",+ ] {+ assert!(+ parse_package_name(invalid_name).is_err(),+ "{invalid_name} should be invalid"+ );+ }+ }++ #[test]+ fn package_api_urls_use_path_segments() {+ let base = Url::parse("https://registry.example/custom/api/").unwrap();+ let package_url = get_package_api_url(&base, "scope", "package").unwrap();+ assert_eq!(
wgengine/magicsock: teach magicsock about multiple discokey originsGo · 200 + / 65 −
265 source lines changed in wgengine/magicsock/endpoint.go.
A reviewable change in a preferred networking path. Focused tests changed with it.
wgengine/magicsock/endpoint.go ↗ · 7 files
@@ -1476,21 +1516,73 @@ func (de *endpoint) setLastPing(ipp netip.AddrPort, now mono.Time) { state.lastPing = now } -// updateDiscoKey replaces the disco key for de. If the key is a zero value key,-// set the key to nil.+// updateDiscoKey replaces the controlClient learned disco key for de.+// Update only the control-provided key, leaving any existing TSMP key as-is.+// If the new control key is zero, switch back to using the TSMP key if it+// exists; otherwise mark the new control key as preferred.+// Should both keys be zero, nil out the saved key.+// The loop here ensures another update did not occur during the interval+// between load and store (based on pointer identity). func (de *endpoint) updateDiscoKey(key key.DiscoPublic) {- if key.IsZero() {- de.disco.Store(nil)- } else {- de.disco.Store(&endpointDisco{- key: key,- short: key.ShortString(),- })+ epDisco := &endpointDisco{}+ for {+ old := de.disco.Load()+ if old != nil {+ epDisco.tsmpKey = old.tsmpKey+ epDisco.tsmpShort = old.tsmpShort+ epDisco.tsmpActive = key.IsZero()+ }+ if !key.IsZero() {+ epDisco.controlKey = key+ epDisco.controlShort = key.ShortString()+ epDisco.tsmpActive = false+ }