Repository navigation
Update dependency TruePath to v2 - #1028
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
Contributor
Author
Branch automerge failureThis PR was configured for branch automerge. However, this is not possible, so it has been raised as a PR instead.
|
renovate
Bot
force-pushed
the
renovate/truepath-2.x
branch
4 times, most recently
from
November 1, 2026 22:36
4ca1882 to
9b0672a
Compare
renovate
Bot
force-pushed
the
renovate/truepath-2.x
branch
from
November 2, 2026 23:04
9b0672a to
5c52ef3
Compare
Collaborator
|
Looks like we have some creepy setup with JSON and TruePath. |
renovate
Bot
force-pushed
the
renovate/truepath-2.x
branch
2 times, most recently
from
November 6, 2026 09:55
b8de924 to
5b6fbfe
Compare
renovate
Bot
force-pushed
the
renovate/truepath-2.x
branch
from
November 10, 2026 08:51
5b6fbfe to
749ffec
Compare
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.
This PR contains the following updates:
1.12.0→2.0.0Release Notes
ForNeVeR/TruePath (TruePath)
v2.0.0This is a major release with certain breaking changes. No public APIs have been broken, but the amount of minor behavior changes required us to bump the major version.
The main change (outlined below) is the introduction of the relative path kinds (most important for Windows). TruePath's path resolve APIs now follow the new rules regarding the relative path resolve (especially regarding more exotic relative path kinds on Windows); check the relevant documentation.
Another notable change is that, while
LocalPathstill considers an empty path to designate the current directory, current directory now always gets normalized as"."and not an empty string.There were a bunch of unrelated important (sometimes breaking) changes to other APIs, read the details below.
Changed
Breaking: (#224) on Windows,
LocalPath.IsAbsolutenow only returnstruefor fully qualified paths, such asC:\Windows. Paths rooted without a drive letter (\Windows), and paths relative to the current directory of a drive (C:Windows,C:) are not absolute anymore, andAbsolutePathnow rejects them. Previously, this was following thePath.IsPathRootedAPI.Breaking: (#224) on Windows, the
/operator ofLocalPathandAbsolutePathno longer delegates toPath.Combine, and instead follows the algorithm of C++std::filesystem::path::operator/(fs.path.append) with case-insensitive drive letters. In particular,C:\base / \xis nowC:\x(was\x),C:\base / C:xis nowC:\base\x(wasC:x), andC: / xis nowC:x(wasC:\x). On Unix, the behavior is unchanged.Breaking: path normalization now represents the current directory as
.instead of an empty string:PathStrings.Normalizereturns"."for"","."and"a/..", and so doLocalPath.ValueandToString()(andLocalPath.Parentof a single-segment relative path is.). As a consequence,LocalPath.FileNameof such a path is., the same way it is..for.., andGetExtensionWithDotreturns.for it.Breaking:
LocalPath.IsPrefixOfandStartsWithnow consider paths of differentPathKindunrelated: an absolute path is never a prefix of a relative one, nor the other way round, and on Windows\Windows,C:WindowsandWindowsare all unrelated to each other.Breaking:
PathExtensions.WithExtensionnow throws anArgumentExceptionunless the path ends with a file name and the result of the change is a file name in its place: an extension change may no longer alter the number or the kind of any path's segments. It used to do so, e.g.:new LocalPath(@"C:\foo\.gitignore").WithExtension(null)returnedC:\foo,new LocalPath(".gitignore").WithExtension(null)returned the empty path,new LocalPath(@"C:\").WithExtension("bar")returnedC:\.bar.None of the examples above take place anymore.
#224: on Windows,
AbsolutePath / LocalPathnow resolves a path relative to the current directory of another drive against the current directory of that drive, so the result is always absolute: e.g.C:\base / D:xisD:\xif the current directory of driveD:is its root. Previously, the result wasD:x, which is not absolute.#224: on Windows,
LocalPath.ResolveToCurrentDirectorynow resolves\xagainst the drive of the current directory, andD:xagainst the current directory of driveD:.#240: more performant
AbsolutePath.ReadKind: it now queries the entry attributes only once, and on Windows it no longer allocates or performs additional IO in cases not concerning reparse points. Thanks to @FalconTechDev for help!AbsolutePath.ReadKindnow only returnsnullif the entry doesn't exist, and throws an exception if its attributes cannot be read for another reason: e.g. anUnauthorizedAccessExceptionif the access is denied, or anIOExceptionif the path contains a name rejected by the file system (on .NET Framework, alsoArgumentExceptionorPathTooLongException). Previously, it returnednullin these cases.The platform-default path comparers (
LocalPath.PlatformDefaultComparer,AbsolutePath.PlatformDefaultComparer) are now case-insensitive on iOS and tvOS as well, matching the .NET runtime.Added
AbsolutePath.PathRootproperty. Thanks to @fskalkan!LocalPath.PathRootproperty, similar to the previous entry, returning the root of an absolute path, or the drive root of a drive-relative path (e.g.C:foo, which only exists on Windows, will returnC:), ornullwhen the root can't be determined.path.GetFiles(LocalPathPattern). Thanks to @hamdiakin!PathKindenumeration andLocalPath.Kindproperty, telling an absolute path from a relative one, and on Windows also from a path rooted without a drive letter (\Windows) and from a path relative to the current directory of a drive (C:Windows). These are experimental (diagnosticTRUEPATH001): more kinds may be added later, e.g. for UNC paths.Fixed
AbsolutePath.Canonicalize()no longer closes the file descriptor 0 when the path doesn't exist. This used to close the standard input of the process, or any file or socket that later took this descriptor number. Also, it no longer leaks the memory allocated for the resolved path.IsPrefixOfandStartsWithmethods for bothLocalPathandAbsolutePathare now exact opposites (use same code), and always operate on whole path segments (file and directory names) instead of raw strings. For example,new AbsolutePath("/foo1").StartsWith(new AbsolutePath("/foo"))is nowfalse, where it used to betrue. Thanks to @berkcantmr for help on this fix!IsPrefixOfnow handles the root folders correctly as prefixes of all the absolute paths under the same root. Thanks to @berkcantmr and @t957095!IsPrefixOfandStartsWithnow compare path strings using ordinal string comparison.IsPrefixOfandStartsWithnow compare path strings using the same platform-default case sensitivity as path equality. Thanks to @amirani8137!..:C:\base\..is now normalized toC:\(wasC:, a path relative to the current directory of driveC:), and/base/..to/(was an empty path, i.e. the current directory)...directly after the root, since the root has no parent:/..is normalized to/, andC:\..\xtoC:\x, the same asPath.GetFullPathdoes. Thanks to @sinthu-14 for help!LocalPath.IsPrefixOfandStartsWithnow take leading..references of relative paths into account instead of comparing them as strings. For example,new LocalPath("..").IsPrefixOf(new LocalPath("foo"))is nowtrue, andnew LocalPath("..").IsPrefixOf(new LocalPath("../.."))is nowfalse. Thanks to @rghvgrv!LocalPath.RelativeToandAbsolutePath.RelativeTonow use a port of the .NET runtime'sPath.GetRelativePath, and return the same results as on .NET 8+ (except for the stream syntax, see #235). Previously, the result was wrong for a destination equal to or above the base path, and for names containing%XXsequences.AbsolutePath.ReadKindno longer throws an exception if the entry gets deleted during the call.LocalPath.RelativeTono longer throws an exception when either path designates the current directory.Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.