)]}'
{
  "commit": "581e6c5cc2166a7804be9e418fe3185779d7538b",
  "tree": "d728281dbd4e2efe58ebee8d4e1e256193ac4042",
  "parents": [
    "984d4852ed1d7084d8f80e63f1e71d383f5ab815"
  ],
  "author": {
    "name": "belitskiy",
    "email": "belitskiy@google.com",
    "time": "Sat Aug 22 05:08:32 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sat Aug 22 05:08:32 2026 +0000"
  },
  "message": "fix(windows): use extended paths in Python bootstraps (#4071)\n\nImplicit long-path support is not universal across the Win32 API. The\ndocumented set of APIs covered by the long-path opt-in does not include\nDLL loading functions, e.g., LoadLibraryExW:\n\n\nhttps://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation#functions-without-max_path-restrictions\n\nAlways use extended-length paths in Windows bootstrap code and correctly\nconvert UNC paths to the \\\\?\\UNC\\ form.\n\nExperienced this breakage in JAX after the project being switched over\nto Bzlmod, which made some paths too long:\nhttps://github.com/jax-ml/jax/actions/runs/31674295160/job/94365413380\n\n```\n    File \"c:\\botcode\\w\\bazel-out\\x64_windows-opt\\bin\\jax\\experimental\\jax2tf\\tests\\multiprocess\\jax2tf_multiprocess_test_cpu.exe.runfiles\\rules_python++pip+jax_pypi_312_ml_dtypes_cp312_cp312_win_amd64_c1a95399\\site-packages\\ml_dtypes\\_finfo.py\", line 17, in \u003cmodule\u003e\n      from ml_dtypes._ml_dtypes_ext import bfloat16\n  ImportError: DLL load failed while importing _ml_dtypes_ext: The filename or extension is too long.\n```\n\nAlready used as a patch in https://github.com/jax-ml/jax/pull/39961\n\n---------\n\nCo-authored-by: Ignas Anikevicius \u003c240938+aignas@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0b24827c46e1884c4018dc7b1f853f83994f8972",
      "new_mode": 33188,
      "new_path": "news/4071.fixed.md"
    },
    {
      "type": "modify",
      "old_id": "12be98eb575c5464f2f4a614b3eae132c1b5dbc3",
      "old_mode": 33188,
      "old_path": "python/private/site_init_template.py",
      "new_id": "c5a484813124a378c04212e948893b5f138ccc1d",
      "new_mode": 33188,
      "new_path": "python/private/site_init_template.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2195eb6ba0c60ae4a8ab64db5a150193f6c13526",
      "new_mode": 33188,
      "new_path": "tests/bootstrap_impls/windows_long_path/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "89ea6e5743a8571942a575080839784b2c10c99a",
      "new_mode": 33188,
      "new_path": "tests/bootstrap_impls/windows_long_path/ext_long_path.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f8610ba6227d803bb947405eee4327da4af517c0",
      "new_mode": 33188,
      "new_path": "tests/bootstrap_impls/windows_long_path/py_extension_long_path_test.py"
    }
  ]
}
