7-day edition

Aug 19, 2026 – Aug 25, 2026

The edition exactly as it was published. Nothing here is re-selected on a later reading.

Aug 26, 20262 reads · 57 merged PRs screened

framework internals

vercel/next.js · #97825

Files changed →View PR ↗

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 {

language design

denoland/deno · #36474

Files changed →View PR ↗

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!(

Read today’s edition →