Repository navigation
Port the BCL string algorithm for Path.GetRelativePath - #696
Merged
Merged
Conversation
This was referenced Oct 12, 2026
This was referenced Oct 18, 2026
This was referenced Oct 26, 2026
This was referenced Nov 3, 2026
This was referenced Nov 10, 2026
JacekSmi
added a commit
to JacekSmi/PolishOpenData
that referenced
this pull request
Nov 11, 2026
Pinned [Microsoft.Bcl.AsyncInterfaces](https://github.com/dotnet/dotnet) at 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Bcl.AsyncInterfaces's releases](https://github.com/dotnet/dotnet/releases)._ ## 10.0.0-preview.6.25358.103 You can build .NET 10.0 Preview 6 from the repository by cloning the release tag `v10.0.0-preview.6.25358.103` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.6.25358.103/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.6.25358.103/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 10.0.0-preview.5.25277.114 You can build .NET 10.0 Preview 5 from the repository by cloning the release tag `v10.0.0-preview.5.25277.114` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.5.25277.114/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.5.25277.114/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 10.0.0-preview.4.25258.110 You can build .NET 10.0 Preview 4 from the repository by cloning the release tag `v10.0.0-preview.4.25258.110` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.4.25258.110/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.4.25258.110/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 10.0.0-preview.3.25171.5 You can build .NET 10.0 Preview 3 from the repository by cloning the release tag `v10.0.0-preview.3.25171.5` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.3.25171.5/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.3.25171.5/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 10.0.0-preview.2.25163.2 You can build .NET 10.0 Preview 2 from the repository by cloning the release tag `v10.0.0-preview.2.25163.2` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.2.25163.2/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.2.25163.2/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 10.0.0-preview.1.25080.5 You can build .NET 10.0 Preview 1 from the repository by cloning the release tag `v10.0.0-preview.1.25080.5` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.1.25080.5/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.1.25080.5/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.123 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.123` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.123/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.123/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.122 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.122` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.122/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.122/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.121 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.121` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.121/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.121/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.120 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.120` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.120/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.120/README.md#building-from-released-sources). Attached is a PGP signature for the GitHub generated tarball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.119 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.119` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.119/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.119/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.118 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.118` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.118/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.118/README.md#building-from-released-sources). Attached is a PGP signature for the GitHub generated tarball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.117 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.117` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.117/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.117/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.116 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.116` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.116/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.116/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.115 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.115` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.115/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.115/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.114 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.114` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.114/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.114/README.md#building-from-released-sources). Attached is the PGP signature for the GitHub generated tarball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.113 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.113` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.113/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.113/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.112 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.112` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.112/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.112/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.111 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.111` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.111/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.111/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.110 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.110` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.110/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.110/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.109 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 9.0 from the repository by cloning the release tag `v9.0.109` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.109/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.109/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.101 You can build .NET 9.0 from the repository by cloning the release tag `v9.0.101` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.101/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.101/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.7 You can build .NET 9.0 from the repository by cloning the release tag `v9.0.7` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.7/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.7/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.6 You can build .NET 9.0 from the repository by cloning the release tag `v9.0.6` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.6/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.6/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.5 You can build .NET 9.0 from the repository by cloning the release tag `v9.0.5` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.5/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.5/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.4 You can build .NET 9.0 from the repository by cloning the release tag `v9.0.4` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.4/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.4/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.3 You can build .NET 9.0 from the repository by cloning the release tag `v9.0.3` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.3/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.3/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.2 You can build .NET 9.0 from the repository by cloning the release tag `v9.0.2` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.2/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.2/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.1 You can build .NET 9.0 from the repository by cloning the release tag `v9.0.1` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.1/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.1/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.0 You can build .NET 9.0 from the repository by cloning the release tag `v9.0.0` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.0/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.0/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.0-rc.2.24473.5 You can build NET 9.0 RC2 from the repository by cloning the release tag `v9.0.0-rc.2.24473.5` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.0-rc.2.24473.5/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.0-rc.2.24473.5/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.0-rc.1.24431.7 You can build .NET 9.0 RC1 from the repository by cloning the release tag `v9.0.0-rc.1.24431.7` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.0-rc.1.24431.7/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.0-rc.1.24431.7/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.0-preview.7.24405.7 You can build .NET 9.0 Preview 7 from the repository by cloning the release tag `v9.0.0-preview.7.24405.7` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.0-preview.7.24405.7/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.0-preview.7.24405.7/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 9.0.0-preview.6.24327.7 You can build .NET 9.0 Preview 6 from the repository by cloning the release tag `v9.0.0-preview.6.24327.7` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v9.0.0-preview.6.24327.7/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v9.0.0-preview.6.24327.7/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.133 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.133` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.133/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.133/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.132 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.132` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.132/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.132/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.131 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.131` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.131/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.131/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.130 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.130` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.130/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.130/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.129 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.129` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.129/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.129/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.128 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.128` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.128/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.128/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.127 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.127` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.127/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.127/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.126 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.126` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.126/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.126/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.125 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.125` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.125/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.125/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.124 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.124` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.124/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.124/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.123 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.123` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.123/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.123/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.122 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.122` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.122/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.122/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.121 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.121` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.121/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.121/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.120 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.120` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.120/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.120/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.119 <!-- This file is a template for a GitHub release notes post. --> <!-- The line prefixed by 'Title:' will be submitted as the title of the release notes, and the rest of the file will be submitted as the body. --> You can build .NET 8.0 from the repository by cloning the release tag `v8.0.119` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.119/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.119/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.18 You can build .NET 8.0 from the repository by cloning the release tag `v8.0.18` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.18/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.18/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.17 You can build .NET 8.0 from the repository by cloning the release tag `v8.0.17` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.17/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.17/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.16 You can build .NET 8.0 from the repository by cloning the release tag `v8.0.16` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.16/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.16/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.15 You can build .NET 8.0 from the repository by cloning the release tag `v8.0.15` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.15/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.15/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.14 You can build .NET 8.0 from the repository by cloning the release tag `v8.0.14` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.14/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.14/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.13 You can build .NET 8.0 from the repository by cloning the release tag `v8.0.13` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.13/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.13/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.12 You can build .NET 8.0 from the repository by cloning the release tag `v8.0.12` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.12/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.12/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.11 You can build .NET 8.0 from the repository by cloning the release tag `v8.0.11` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.11/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.11/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.10 You can build .NET 8.0 from the repository by cloning the release tag `v8.0.10` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.10/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.10/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 8.0.8 You can build .NET 8.0 from the repository by cloning the release tag `v8.0.8` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v8.0.8/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v8.0.8/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Bcl.AsyncInterfaces](https://github.com/dotnet/dotnet) from 10.0.12 to 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Bcl.AsyncInterfaces's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Bcl.TimeProvider](https://github.com/dotnet/dotnet) from 10.0.12 to 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Bcl.TimeProvider's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Extensions.AI.Abstractions](https://github.com/dotnet/extensions) from 10.10.0 to 10.11.0. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.AI.Abstractions's releases](https://github.com/dotnet/extensions/releases)._ ## 10.11.0 # .NET Extensions 10.11.0 This release adds optional scope capture for buffered logs and updates experimental HTTP latency enrichment APIs. It also includes fixes for AI streaming and function invocation, evaluation reports, HybridCache invalidation, and logging. ## Experimental API Changes ### New Experimental APIs * Optional logging-scope capture for global and per-request log buffering through `GlobalLogBufferingOptions.IncludeScopes` and `PerRequestLogBufferingOptions.IncludeScopes` (`EXTEXP0003`) #7813 ### Breaking Changes to Experimental APIs * Incoming HTTP latency log enrichment: `AddHttpLatencyTelemetry` is renamed to `AddHttpServerLatencyTelemetry` and moves from `HttpLatencyTelemetryServiceCollectionExtensions` to `HttpLoggingServiceCollectionExtensions`. It remains experimental under `EXTEXP0013` in this release. #7730 ## What's Changed ### AI * Yield final image when streaming with HostedImageGenerationTool #7774 by @iamAdarshh * Make the default tool-rejection message state that the decision is final #7784 by @manjunathshiva * AI: Remove obsolete OpenAI JsonPatch workaround #7815 by @jozkee (co-authored by @Copilot) * Ignore empty model IDs in streaming responses #7816 by @valkiara * Honor FunctionInvocationContext.Terminate when the function throws #7801 by @gjz22 * Fix ChatResponseUpdate.Clone dropping ContinuationToken #7699 by @dfedoryshchev * Decode non-base64 data URIs in DataContent to the octets they encode #7798 by @Laurianti ### AI Evaluation * [M.E.AI.Evaluation.Reporting] Fix context and metric interpretation visualization #7738 by @grafanaKibana * Fix tokenizer attaching punctuation to number tokens #7766 by @tahakocal * Order iteration results numerically #7769 by @tahakocal * Score GLEU against the best matching reference #7768 by @tahakocal ### Telemetry and Observability * Optionally preserve logging scopes in buffered log records #7813 by @evgenyfedorov2 (co-authored by @Copilot) * Fix OOM from unbounded enumeration of ExtendedLogger tag joiners #7819 by @evgenyfedorov2 (co-authored by @Copilot) * Fix log buffering race by removing the rule selector cache #7803 by @evgenyfedorov2 (co-authored by @Copilot) ### ASP.NET Core Extensions * Rename AddHttpLatencyTelemetry to AddHttpServerLatencyTelemetry (API-approved shape) #7730 by @EasyL0ver (co-authored by @Copilot) * Fix ArgumentNullException in per-request log buffering at the end of a request #7811 by @evgenyfedorov2 (co-authored by @Copilot) ### AI Project Templates * Align aichatweb local vector-store keys with Guid record keys #7804 by @jongalloway (co-authored by @adamsitnik @Copilot) ### Caching ... (truncated) ## 10.10.1 This release fixes two OpenAI integration issues: a TypeLoadException on tool-carrying Responses API calls and a streaming crash against third-party OpenAI-compatible endpoints, by upgrading the OpenAI SDK to 2.14.0. ## Packages in this release | Package | Version | |---------|---------| | Microsoft.Extensions.AI.OpenAI | `10.10.1` | | Microsoft.Extensions.AI.Abstractions | `10.10.1` | ## What's Changed ### AI * Upgrade OpenAI SDK to 2.14.0 #7761 by @zxyao145 ## Acknowledgements * @zxyao145 made their first contribution in #7761 * @zxyao145 submitted issue #7760 (resolved by #7761) * @jozkee @wtgodbe reviewed pull requests **Full Changelog**: https://github.com/dotnet/extensions/compare/v10.10.0...v10.10.1 Commits viewable in [compare view](https://github.com/dotnet/extensions/compare/v10.10.0...v10.11.0). </details> Updated [Microsoft.Extensions.Caching.Memory](https://github.com/dotnet/dotnet) from 10.0.12 to 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Caching.Memory's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Pinned [Microsoft.Extensions.DependencyInjection](https://github.com/dotnet/dotnet) at 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.DependencyInjection's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Pinned [Microsoft.Extensions.DependencyInjection](https://github.com/dotnet/dotnet) at 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.DependencyInjection's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Extensions.Hosting](https://github.com/dotnet/dotnet) from 10.0.12 to 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Hosting's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Pinned [Microsoft.Extensions.Http](https://github.com/dotnet/dotnet) at 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Http's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Extensions.Http.Resilience](https://github.com/dotnet/extensions) from 10.10.0 to 10.11.0. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Http.Resilience's releases](https://github.com/dotnet/extensions/releases)._ ## 10.11.0 # .NET Extensions 10.11.0 This release adds optional scope capture for buffered logs and updates experimental HTTP latency enrichment APIs. It also includes fixes for AI streaming and function invocation, evaluation reports, HybridCache invalidation, and logging. ## Experimental API Changes ### New Experimental APIs * Optional logging-scope capture for global and per-request log buffering through `GlobalLogBufferingOptions.IncludeScopes` and `PerRequestLogBufferingOptions.IncludeScopes` (`EXTEXP0003`) #7813 ### Breaking Changes to Experimental APIs * Incoming HTTP latency log enrichment: `AddHttpLatencyTelemetry` is renamed to `AddHttpServerLatencyTelemetry` and moves from `HttpLatencyTelemetryServiceCollectionExtensions` to `HttpLoggingServiceCollectionExtensions`. It remains experimental under `EXTEXP0013` in this release. #7730 ## What's Changed ### AI * Yield final image when streaming with HostedImageGenerationTool #7774 by @iamAdarshh * Make the default tool-rejection message state that the decision is final #7784 by @manjunathshiva * AI: Remove obsolete OpenAI JsonPatch workaround #7815 by @jozkee (co-authored by @Copilot) * Ignore empty model IDs in streaming responses #7816 by @valkiara * Honor FunctionInvocationContext.Terminate when the function throws #7801 by @gjz22 * Fix ChatResponseUpdate.Clone dropping ContinuationToken #7699 by @dfedoryshchev * Decode non-base64 data URIs in DataContent to the octets they encode #7798 by @Laurianti ### AI Evaluation * [M.E.AI.Evaluation.Reporting] Fix context and metric interpretation visualization #7738 by @grafanaKibana * Fix tokenizer attaching punctuation to number tokens #7766 by @tahakocal * Order iteration results numerically #7769 by @tahakocal * Score GLEU against the best matching reference #7768 by @tahakocal ### Telemetry and Observability * Optionally preserve logging scopes in buffered log records #7813 by @evgenyfedorov2 (co-authored by @Copilot) * Fix OOM from unbounded enumeration of ExtendedLogger tag joiners #7819 by @evgenyfedorov2 (co-authored by @Copilot) * Fix log buffering race by removing the rule selector cache #7803 by @evgenyfedorov2 (co-authored by @Copilot) ### ASP.NET Core Extensions * Rename AddHttpLatencyTelemetry to AddHttpServerLatencyTelemetry (API-approved shape) #7730 by @EasyL0ver (co-authored by @Copilot) * Fix ArgumentNullException in per-request log buffering at the end of a request #7811 by @evgenyfedorov2 (co-authored by @Copilot) ### AI Project Templates * Align aichatweb local vector-store keys with Guid record keys #7804 by @jongalloway (co-authored by @adamsitnik @Copilot) ### Caching ... (truncated) ## 10.10.1 This release fixes two OpenAI integration issues: a TypeLoadException on tool-carrying Responses API calls and a streaming crash against third-party OpenAI-compatible endpoints, by upgrading the OpenAI SDK to 2.14.0. ## Packages in this release | Package | Version | |---------|---------| | Microsoft.Extensions.AI.OpenAI | `10.10.1` | | Microsoft.Extensions.AI.Abstractions | `10.10.1` | ## What's Changed ### AI * Upgrade OpenAI SDK to 2.14.0 #7761 by @zxyao145 ## Acknowledgements * @zxyao145 made their first contribution in #7761 * @zxyao145 submitted issue #7760 (resolved by #7761) * @jozkee @wtgodbe reviewed pull requests **Full Changelog**: https://github.com/dotnet/extensions/compare/v10.10.0...v10.10.1 Commits viewable in [compare view](https://github.com/dotnet/extensions/compare/v10.10.0...v10.11.0). </details> Updated [Microsoft.Extensions.TimeProvider.Testing](https://github.com/dotnet/extensions) from 10.10.0 to 10.11.0. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.TimeProvider.Testing's releases](https://github.com/dotnet/extensions/releases)._ ## 10.11.0 # .NET Extensions 10.11.0 This release adds optional scope capture for buffered logs and updates experimental HTTP latency enrichment APIs. It also includes fixes for AI streaming and function invocation, evaluation reports, HybridCache invalidation, and logging. ## Experimental API Changes ### New Experimental APIs * Optional logging-scope capture for global and per-request log buffering through `GlobalLogBufferingOptions.IncludeScopes` and `PerRequestLogBufferingOptions.IncludeScopes` (`EXTEXP0003`) #7813 ### Breaking Changes to Experimental APIs * Incoming HTTP latency log enrichment: `AddHttpLatencyTelemetry` is renamed to `AddHttpServerLatencyTelemetry` and moves from `HttpLatencyTelemetryServiceCollectionExtensions` to `HttpLoggingServiceCollectionExtensions`. It remains experimental under `EXTEXP0013` in this release. #7730 ## What's Changed ### AI * Yield final image when streaming with HostedImageGenerationTool #7774 by @iamAdarshh * Make the default tool-rejection message state that the decision is final #7784 by @manjunathshiva * AI: Remove obsolete OpenAI JsonPatch workaround #7815 by @jozkee (co-authored by @Copilot) * Ignore empty model IDs in streaming responses #7816 by @valkiara * Honor FunctionInvocationContext.Terminate when the function throws #7801 by @gjz22 * Fix ChatResponseUpdate.Clone dropping ContinuationToken #7699 by @dfedoryshchev * Decode non-base64 data URIs in DataContent to the octets they encode #7798 by @Laurianti ### AI Evaluation * [M.E.AI.Evaluation.Reporting] Fix context and metric interpretation visualization #7738 by @grafanaKibana * Fix tokenizer attaching punctuation to number tokens #7766 by @tahakocal * Order iteration results numerically #7769 by @tahakocal * Score GLEU against the best matching reference #7768 by @tahakocal ### Telemetry and Observability * Optionally preserve logging scopes in buffered log records #7813 by @evgenyfedorov2 (co-authored by @Copilot) * Fix OOM from unbounded enumeration of ExtendedLogger tag joiners #7819 by @evgenyfedorov2 (co-authored by @Copilot) * Fix log buffering race by removing the rule selector cache #7803 by @evgenyfedorov2 (co-authored by @Copilot) ### ASP.NET Core Extensions * Rename AddHttpLatencyTelemetry to AddHttpServerLatencyTelemetry (API-approved shape) #7730 by @EasyL0ver (co-authored by @Copilot) * Fix ArgumentNullException in per-request log buffering at the end of a request #7811 by @evgenyfedorov2 (co-authored by @Copilot) ### AI Project Templates * Align aichatweb local vector-store keys with Guid record keys #7804 by @jongalloway (co-authored by @adamsitnik @Copilot) ### Caching ... (truncated) ## 10.10.1 This release fixes two OpenAI integration issues: a TypeLoadException on tool-carrying Responses API calls and a streaming crash against third-party OpenAI-compatible endpoints, by upgrading the OpenAI SDK to 2.14.0. ## Packages in this release | Package | Version | |---------|---------| | Microsoft.Extensions.AI.OpenAI | `10.10.1` | | Microsoft.Extensions.AI.Abstractions | `10.10.1` | ## What's Changed ### AI * Upgrade OpenAI SDK to 2.14.0 #7761 by @zxyao145 ## Acknowledgements * @zxyao145 made their first contribution in #7761 * @zxyao145 submitted issue #7760 (resolved by #7761) * @jozkee @wtgodbe reviewed pull requests **Full Changelog**: https://github.com/dotnet/extensions/compare/v10.10.0...v10.10.1 Commits viewable in [compare view](https://github.com/dotnet/extensions/compare/v10.10.0...v10.11.0). </details> Updated [ModelContextProtocol](https://github.com/modelcontextprotocol/csharp-sdk) from 2.2.0 to 2.3.0. <details> <summary>Release notes</summary> _Sourced from [ModelContextProtocol's releases](https://github.com/modelcontextprotocol/csharp-sdk/releases)._ ## 2.3.0 This release improves HTTP discovery, OAuth, protocol interoperability, and shutdown reliability, preserves registration order for server primitives, and exposes a `TimeProvider` for deterministic client timeout tests. It also corrects optional server-identity handling; applications reading `McpClient.ServerInfo` should adopt nullable handling. ## Breaking Changes Refer to the [C# SDK Versioning](https://csharp.sdk.modelcontextprotocol.io/v2/versioning.html) documentation for details on versioning and breaking change policies. 1. **`McpClient.ServerInfo` is nullable — #1903** * Its return annotation changes from `Implementation` to `Implementation?`. Existing non-nullable assignments or dereferences can produce nullable warnings and fail warnings-as-errors builds. * On `2026-07-28` connections, `ServerInfo` is `null` when the server omits optional identity metadata from `server/discover`. Legacy `initialize` still requires `serverInfo`. Reading the property before connecting still throws `InvalidOperationException`. * Migrate with a null check or a fallback such as `client.ServerInfo?.Name ?? "Unknown server"`. Self-reported identity must not be used for security decisions. * This corrective source-compatibility change is intentionally included in 2.3.0. ## What's Changed * Correct protocol-version telemetry for stateless server spans #1810 by @luisangelrod * Preserve HTTP errors and correct discovery fallback handling #1791 by @PranavSenthilnathan (co-authored by @Copilot) * Make modern Streamable HTTP status mapping deterministic #1837 by @jstar0 * Modern responses wait for the first protocol message before sending headers; long-running silent handlers may need progress output or an appropriate HTTP timeout. Legacy eager-header behavior is preserved. * Accept opaque legacy metadata and correct request-scoped capabilities and discovery advertisement #1852 by @halter73 (co-authored by @Copilot) * Avoid redundant SSE fallback after discovery is rejected with 400 or 404 #1855 by @scottt732 * Close server stdin before waiting for graceful stdio process exit #1838 by @luisangelrod * Preserve insertion order when listing server tools, prompts, and resources #1924 by @PederHP (co-authored by Claude Opus 5.5) * Allow missing optional server identity in discovery and make `ServerInfo` nullable #1903 by @Coding-Professional * Include JSON parse details in Streamable HTTP 400 responses #1844 by @ump45nose * Exclude OAuth from `DiscoverProbeTimeout`, expose `McpClientOptions.TimeProvider` for deterministic timeout tests, and default SSE to legacy initialization #1719 by @halter73 (co-authored by @Copilot) * OAuth remains subject to the overall `InitializationTimeout` and caller cancellation; it is excluded only from the short discovery-probe budget. * Modern discovery over SSE requires both explicit `HttpTransportMode.Sse` and `ProtocolVersion = "2026-07-28"`; pinning the version with `AutoDetect` is not equivalent. * Preserve numeric progress tokens in `RequestOptions` serialization #1832 by @dfedoryshchev * Dispose legacy SSE POST responses to release connections deterministically #1841 by @yalcinfu22 (co-authored by Claude Fable 5) ## Documentation Updates * Document standing support for new MCP specification revisions #1826 by @halter73 (co-authored by @Copilot) ## Test Improvements * Stabilize discovery-capable test connections while retaining initialization deadlines #1943 by @tarekgh ## Repository Infrastructure Updates * Add a source selector for manual documentation publishes #1828 by @jeffhandley (co-authored by @Copilot) * Update SourceLink's private build dependency to resolve a vulnerable Git dependency #1873 by @halter73 (co-authored by @Copilot) * Correct obsolete `McpServerFactory` references in Copilot instructions #1892 by @Zir0-93 * Update Microsoft.Extensions.AI and AI.Abstractions to 10.11.0 and align shared System dependencies to 10.0.13 #1940 ## Acknowledgements * @scottt732 made their first contribution in #1855 * @Zir0-93 made their first contribution in #1892 * @Coding-Professional made their first contribution in #1903 ... (truncated) Commits viewable in [compare view](https://github.com/modelcontextprotocol/csharp-sdk/compare/v2.2.0...v2.3.0). </details> Updated [Polyfill](https://github.com/SimonCropp/Polyfill) from 11.4.0 to 11.4.5. <details> <summary>Release notes</summary> _Sourced from [Polyfill's releases](https://github.com/SimonCropp/Polyfill/releases)._ ## 11.4.5 - [x] [#680](https://github.com/SimonCropp/Polyfill/pull/680) Avoid per-read char[] allocation in StringStream on older targets - [x] [#681](https://github.com/SimonCropp/Polyfill/pull/681) Insert spans into List with a single shift - [x] [#682](https://github.com/SimonCropp/Polyfill/pull/682) Scan for line breaks in a single pass in SpanLineEnumerator - [x] [#683](https://github.com/SimonCropp/Polyfill/pull/683) Encode Base64Url without intermediate strings and arrays - [x] [#684](https://github.com/SimonCropp/Polyfill/pull/684) Override WriteByte in WritableMemoryStream - [x] [#685](https://github.com/SimonCropp/Polyfill/pull/685) Block copy in List AddRange(ReadOnlySpan) and CopyTo(Span) - [x] [#686](https://github.com/SimonCropp/Polyfill/pull/686) Avoid quadratic separator search in SplitAny for char separators - [x] [#687](https://github.com/SimonCropp/Polyfill/pull/687) Cache the last ReadAsync task in the memory stream polyfills - [x] [#688](https://github.com/SimonCropp/Polyfill/pull/688) Use the span based Convert APIs in the Base64 polyfill - [x] [#689](https://github.com/SimonCropp/Polyfill/pull/689) Index into IList sources in Take(Range) and TakeLast - [x] [#690](https://github.com/SimonCropp/Polyfill/pull/690) Find string separators in a single pass in SplitAny - [x] [#691](https://github.com/SimonCropp/Polyfill/pull/691) Defer the Adler-32 modulo in the ZLibStream polyfill - [x] [#692](https://github.com/SimonCropp/Polyfill/pull/692) Make the SkipLast polyfill streaming - [x] [#693](https://github.com/SimonCropp/Polyfill/pull/693) Grow geometrically in CollectionsMarshal.SetCount - [x] [#694](https://github.com/SimonCropp/Polyfill/pull/694) Copy in blocks in StringBuilder.CopyTo(int, Span<char>, int) - [x] [#695](https://github.com/SimonCropp/Polyfill/pull/695) Use the runtime's HashSet.TryGetValue when it exists - [x] [#696](https://github.com/SimonCropp/Polyfill/pull/696) Port the BCL string algorithm for Path.GetRelativePath - [x] [#697](https://github.com/SimonCropp/Polyfill/pull/697) Size the buffers of the Base64 OperationStatus overloads by the data - [x] [#698](https://github.com/SimonCropp/Polyfill/pull/698) Only materialize the requested range in StringBuilder.Append(StringBuilder, int, int) - [x] [#699](https://github.com/SimonCropp/Polyfill/pull/699) Pre-size the dict…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
Path.GetRelativePathpolyfill (.NET Framework and netstandard2.0) was implemented throughUri.MakeRelativeUri, which costs twoUriinstances plus escaping and unescaping on every call, and does not give the same answers as the BCL.Change
Port the BCL's string algorithm: after
Path.GetFullPathon both inputs, compare the roots, find the common prefix length (backed up to a segment boundary), emit one..per remaining segment of the "from" path, then append the rest of the "to" path. When no..segments are needed the result is a singleSubstring.Roots are still taken from
Path.GetPathRoot. The comparison is now ordinal-ignore-case on Windows and macOS and ordinal elsewhere, as in the BCL (the old code was hard-coded to ignore case, which is wrong for a netstandard2.0 library running on Linux).Behaviour changes (all towards the BCL)
Of the 76 input pairs in the new test table, the old implementation disagreed with net10 on 19. They fall into three groups:
relativeTopathC:\aC:\a\b\bb\C:\a\b\cC:\a\x\y\..\..\x\y..\..\x\y\C:\baseC:\base\a%2Dba-ba%2DbC:\baseC:\base\%41A%41C:\ba%2Dse\xC:\ba-se\y..\y..\..\ba-se\yC:\ÉC:\é\x..\é\xxpathwas dropped; it is now preservedUridoes not need to keep escaped (%2D,%41, ...) were unescaped, so the result named a different file, and two different directories could be treated as the same oneMeasurements
net48, x64, Release, 500,000 calls each. Both versions start with the same two
Path.GetFullPathcalls, which cost roughly 600-850 ns of each figure and allocate nothing here...\..\Microsoft\Edge\Application)src\Library\File.cs).)The last two rows never reached
Uribefore, so they are within noise of each other; the remaining 64 B is the twoPath.GetPathRootstrings.Tests
GetRelativePath_MatchesBcl: a table of 76 input pairs whose expected values were produced byPath.GetRelativePathon net10 on Windows: same path with and without trailing separators on either side, children, parents, siblings, partial segment matches (C:\Foodie/C:\Foobar), the drive root on either side, different drives, UNC shares (same share, different share, different server, UNC against a drive), case differences in ASCII and non-ASCII, percent sequences,#,&,+, spaces, non-ASCII names, forward slashes,.and..segments, and relative inputsGetRelativePath_ResultCombinesBackToPath: for every pair, combining the result withrelativeToleads back topathGetRelativePath_RelativeInputsUseCurrentDirectoryThe tests run on every target, so on netcoreapp3.1 and later they check the table against the real BCL as well.