Skip to content

Commit 5d1cfec

Browse files
authored
Switch to xxHash3 (#2191)
* Switch over to xxHash3 * Fix most of the tests * Update NX to fix tests * fix some broken tests * Remove duplicate package version definition * Add global.json file, maybe this fixes the build issue? * Upgrade the hashing library version * Fix the "hint" crap Rider put into the project files * Add final missing package reference
1 parent ecb5633 commit 5d1cfec

File tree

110 files changed

+721
-712
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+721
-712
lines changed

Directory.Packages.props

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@
1111
<PackageVersion Include="Microsoft.Extensions.Options" Version="8.0.2" />
1212
<PackageVersion Include="Nerdbank.FullDuplexStream" Version="1.1.12" />
1313
<PackageVersion Include="Nerdbank.Streams" Version="2.11.74" />
14+
<PackageVersion Include="NexusMods.Hashing.xxHash3" Version="3.0.2" />
15+
<PackageVersion Include="NexusMods.Hashing.xxHash3.Paths" Version="3.0.2" />
1416
<PackageVersion Include="NexusMods.Paths" Version="0.10.0" />
1517
<PackageVersion Include="NexusMods.MnemonicDB.Abstractions" Version="0.9.91" />
1618
<PackageVersion Include="NexusMods.MnemonicDB" Version="0.9.91" />
17-
<PackageVersion Include="NexusMods.Hashing.xxHash64" Version="2.0.2" />
1819
<PackageVersion Include="NexusMods.Paths.Extensions.Nx" Version="0.10.0" />
1920
<PackageVersion Include="NexusMods.Paths.TestingHelpers" Version="0.10.0" />
20-
<PackageVersion Include="NexusMods.Archives.Nx" Version="0.5.0" />
21+
<PackageVersion Include="NexusMods.Archives.Nx" Version="0.6.1" />
2122
<PackageVersion Include="NexusMods.Telemetry.OpenTelemetry" Version="1.0.0" />
2223
<PackageVersion Include="FomodInstaller.Interface" Version="1.2.0" />
2324
<PackageVersion Include="FomodInstaller.Scripting.XmlScript" Version="1.0.0" />
@@ -132,7 +133,6 @@
132133
<PackageVersion Include="OneOf" Version="3.0.271" />
133134
<PackageVersion Include="ReactiveUI.Fody" Version="19.5.41" />
134135
<PackageVersion Include="Sewer56.BitStream" Version="1.3.0" />
135-
<PackageVersion Include="Spectre.Console" Version="0.48.0" />
136136
<PackageVersion Include="Splat.Microsoft.Extensions.Logging" Version="15.2.22" />
137137
<PackageVersion Include="TransparentValueObjects" Version="1.0.1" />
138138
</ItemGroup>

benchmarks/NexusMods.Benchmarks/Benchmarks/Loadouts/Harness/DummyFileStore.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using NexusMods.Abstractions.IO;
2-
using NexusMods.Hashing.xxHash64;
2+
using NexusMods.Hashing.xxHash3;
33
using NexusMods.Paths;
44

55
namespace NexusMods.Benchmarks.Benchmarks.Loadouts.Harness;

global.json

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"sdk": {
3+
"version": "8.0.0",
4+
"rollForward": "latestMajor",
5+
"allowPrerelease": true
6+
}
7+
}

src/Abstractions/NexusMods.Abstractions.Collections/Types/HashMapping.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using NexusMods.Hashing.xxHash64;
1+
using NexusMods.Hashing.xxHash3;
22
using NexusMods.Paths;
33

44
namespace NexusMods.Abstractions.Collections.Types;

src/Abstractions/NexusMods.Abstractions.FileStore.Nx/NexusMods.Abstractions.FileStore.Nx.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<!-- NuGet Package Shared Details -->
33
<Import Project="$([MSBuild]::GetPathOfFileAbove('NuGet.Build.props', '$(MSBuildThisFileDirectory)../'))" />
44
<ItemGroup>
5+
<PackageReference Include="NexusMods.Hashing.xxHash3" />
56
<PackageReference Include="NexusMods.MnemonicDB.SourceGenerator" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
67
<PackageReference Include="NexusMods.MnemonicDB.Abstractions" />
78

src/Abstractions/NexusMods.Abstractions.GuidedInstallers/NexusMods.Abstractions.GuidedInstallers.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
<Import Project="$([MSBuild]::GetPathOfFileAbove('NuGet.Build.props', '$(MSBuildThisFileDirectory)../'))" />
44

55
<ItemGroup>
6+
<PackageReference Include="NexusMods.Hashing.xxHash3" />
67
<PackageReference Include="TransparentValueObjects" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
78
<PackageReference Include="OneOf" />
8-
<PackageReference Include="NexusMods.Hashing.xxHash64" />
99
</ItemGroup>
1010

1111
<ItemGroup>

src/Abstractions/NexusMods.Abstractions.GuidedInstallers/OptionImage.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using NexusMods.Hashing.xxHash64;
1+
using NexusMods.Hashing.xxHash3;
22
using OneOf;
33

44
namespace NexusMods.Abstractions.GuidedInstallers;

src/Abstractions/NexusMods.Abstractions.HttpDownloader/IHttpDownloader.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using NexusMods.Hashing.xxHash64;
1+
using NexusMods.Hashing.xxHash3;
22
using NexusMods.Paths;
33
using Size = NexusMods.Paths.Size;
44

src/Abstractions/NexusMods.Abstractions.HttpDownloader/NexusMods.Abstractions.HttpDownloader.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<ItemGroup>
55
<!-- Todo: We need to get rid of 'optional' to remove this heavy dependency. -->
66
<PackageReference Include="DynamicData" />
7+
<PackageReference Include="NexusMods.Hashing.xxHash3" />
78
<PackageReference Include="TransparentValueObjects" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
8-
<PackageReference Include="NexusMods.Hashing.xxHash64" />
99
<PackageReference Include="NexusMods.Paths" />
1010
</ItemGroup>
1111
<ItemGroup>

src/Abstractions/NexusMods.Abstractions.IO/FileStoreStreamFactory.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using NexusMods.Hashing.xxHash64;
1+
using NexusMods.Hashing.xxHash3;
22
using NexusMods.Paths;
33

44
namespace NexusMods.Abstractions.IO;

src/Abstractions/NexusMods.Abstractions.IO/IFileStore.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System.Buffers;
2-
using NexusMods.Hashing.xxHash64;
1+
using NexusMods.Hashing.xxHash3;
32
using NexusMods.Paths;
43

54
namespace NexusMods.Abstractions.IO;

src/Abstractions/NexusMods.Abstractions.IO/NexusMods.Abstractions.IO.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<ItemGroup>
66
<!-- TODO: This library needs stabilized -->
7+
<PackageReference Include="NexusMods.Hashing.xxHash3" />
78
<PackageReference Include="NexusMods.Paths" />
8-
<PackageReference Include="NexusMods.Hashing.xxHash64" />
99
</ItemGroup>
1010
</Project>

src/Abstractions/NexusMods.Abstractions.Library.Models/NexusMods.Abstractions.Library.Models.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
<ItemGroup>
66
<ProjectReference Include="..\NexusMods.Abstractions.MnemonicDB.Attributes\NexusMods.Abstractions.MnemonicDB.Attributes.csproj" />
7+
<PackageReference Include="NexusMods.Hashing.xxHash3" />
78
<PackageReference Include="NexusMods.MnemonicDB.Abstractions" />
89
<PackageReference Include="TransparentValueObjects" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
910
<PackageReference Include="NexusMods.MnemonicDB.SourceGenerator" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />

src/Abstractions/NexusMods.Abstractions.Loadouts.Synchronizers/ALoadoutSynchronizer.cs

+5-5
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
using NexusMods.Abstractions.Loadouts.Extensions;
1515
using NexusMods.Abstractions.Loadouts.Synchronizers.Rules;
1616
using NexusMods.Extensions.BCL;
17-
using NexusMods.Extensions.Hashing;
18-
using NexusMods.Hashing.xxHash64;
17+
using NexusMods.Hashing.xxHash3;
18+
using NexusMods.Hashing.xxHash3.Paths;
1919
using NexusMods.MnemonicDB.Abstractions;
2020
using NexusMods.MnemonicDB.Abstractions.DatomIterators;
2121
using NexusMods.MnemonicDB.Abstractions.IndexSegments;
@@ -895,7 +895,7 @@ await Parallel.ForEachAsync(location.Value.EnumerateFiles(), async (file, token)
895895
// If the files don't match, update the entry
896896
if (fileInfo.LastWriteTimeUtc > entry.LastModified || fileInfo.Size != entry.Size)
897897
{
898-
var newHash = await file.XxHash64Async();
898+
var newHash = await file.XxHash3Async();
899899
tx.Add(entry.Id, DiskStateEntry.Size, fileInfo.Size);
900900
tx.Add(entry.Id, DiskStateEntry.Hash, newHash);
901901
tx.Add(entry.Id, DiskStateEntry.LastModified, fileInfo.LastWriteTimeUtc);
@@ -905,7 +905,7 @@ await Parallel.ForEachAsync(location.Value.EnumerateFiles(), async (file, token)
905905
else
906906
{
907907
// No previous entry found, so create a new one
908-
var newHash = await file.XxHash64Async(token: token);
908+
var newHash = await file.XxHash3Async(token: token);
909909
_ = new DiskStateEntry.New(tx, tx.TempId(DiskStateEntry.EntryPartition))
910910
{
911911
Path = gamePath.ToGamePathParentTuple(metadata.Id),
@@ -960,7 +960,7 @@ await Parallel.ForEachAsync(location.Value.EnumerateFiles(), async (file, token)
960960
return;
961961
}
962962

963-
var newHash = await file.XxHash64Async(token: token);
963+
var newHash = await file.XxHash3Async(token: token);
964964
_ = new DiskStateEntry.New(tx, tx.TempId(DiskStateEntry.EntryPartition))
965965
{
966966
Path = gamePath.ToGamePathParentTuple(metaDataId),

src/Abstractions/NexusMods.Abstractions.Loadouts.Synchronizers/NexusMods.Abstractions.Loadouts.Synchronizers.csproj

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
<ProjectReference Include="..\NexusMods.Abstractions.GC\NexusMods.Abstractions.GC.csproj" />
88
<ProjectReference Include="..\NexusMods.Abstractions.Jobs\NexusMods.Abstractions.Jobs.csproj" />
99
<ProjectReference Include="..\NexusMods.Abstractions.Loadouts\NexusMods.Abstractions.Loadouts.csproj" />
10+
<PackageReference Include="NexusMods.Hashing.xxHash3" />
11+
<PackageReference Include="NexusMods.Hashing.xxHash3.Paths" />
1012
<PackageReference Include="NexusMods.MnemonicDB.SourceGenerator" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
1113
</ItemGroup>
1214
<ItemGroup>

src/Abstractions/NexusMods.Abstractions.Loadouts.Synchronizers/Rules/Signature.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using DynamicData.Kernel;
2-
using NexusMods.Hashing.xxHash64;
2+
using NexusMods.Hashing.xxHash3;
33

44
namespace NexusMods.Abstractions.Loadouts.Synchronizers.Rules;
55

src/Abstractions/NexusMods.Abstractions.Loadouts.Synchronizers/SyncTreeNode.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using NexusMods.Abstractions.DiskState;
33
using NexusMods.Abstractions.GameLocators;
44
using NexusMods.Abstractions.Loadouts.Synchronizers.Rules;
5-
using NexusMods.Hashing.xxHash64;
5+
using NexusMods.Hashing.xxHash3;
66
using NexusMods.MnemonicDB.Abstractions;
77
using NexusMods.Paths;
88

src/Abstractions/NexusMods.Abstractions.Loadouts/DiskStateEntry.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using NexusMods.Abstractions.GameLocators;
22
using NexusMods.Abstractions.Loadouts;
33
using NexusMods.Abstractions.MnemonicDB.Attributes;
4-
using NexusMods.Hashing.xxHash64;
4+
using NexusMods.Hashing.xxHash3;
55
using NexusMods.MnemonicDB.Abstractions;
66
using NexusMods.MnemonicDB.Abstractions.Attributes;
77
using NexusMods.MnemonicDB.Abstractions.Models;

src/Abstractions/NexusMods.Abstractions.Loadouts/Files/Diff/DiskDiffEntry.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using NexusMods.Abstractions.GameLocators;
2-
using NexusMods.Hashing.xxHash64;
2+
using NexusMods.Hashing.xxHash3;
33
using NexusMods.Paths;
44

55
namespace NexusMods.Abstractions.Loadouts.Synchronizers;

src/Abstractions/NexusMods.Abstractions.Loadouts/Files/IFileTreeNode.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using NexusMods.Abstractions.GameLocators;
2-
using NexusMods.Hashing.xxHash64;
2+
using NexusMods.Hashing.xxHash3;
33
using NexusMods.Paths;
44

55
namespace NexusMods.Abstractions.Loadouts.Files;

src/Abstractions/NexusMods.Abstractions.Loadouts/IHavePathHashSizeAndReference.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using NexusMods.Abstractions.GameLocators;
2-
using NexusMods.Hashing.xxHash64;
2+
using NexusMods.Hashing.xxHash3;
33
using NexusMods.MnemonicDB.Abstractions;
44
using NexusMods.Paths;
55

src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutFile.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using JetBrains.Annotations;
22
using NexusMods.Abstractions.GameLocators;
33
using NexusMods.Abstractions.MnemonicDB.Attributes;
4-
using NexusMods.Hashing.xxHash64;
4+
using NexusMods.Hashing.xxHash3;
55
using NexusMods.MnemonicDB.Abstractions;
66
using NexusMods.MnemonicDB.Abstractions.Models;
77
using NexusMods.Paths;

src/Abstractions/NexusMods.Abstractions.MnemonicDB.Attributes/HashAttribute.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using NexusMods.Hashing.xxHash64;
1+
using NexusMods.Hashing.xxHash3;
22
using NexusMods.MnemonicDB.Abstractions;
33
using NexusMods.MnemonicDB.Abstractions.Attributes;
44
using NexusMods.MnemonicDB.Abstractions.ElementComparers;

src/Abstractions/NexusMods.Abstractions.MnemonicDB.Attributes/NexusMods.Abstractions.MnemonicDB.Attributes.csproj

-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@
33
<Import Project="$([MSBuild]::GetPathOfFileAbove('NuGet.Build.props', '$(MSBuildThisFileDirectory)../'))" />
44

55
<ItemGroup>
6-
<PackageReference Include="NexusMods.Hashing.xxHash64" />
76
<PackageReference Include="NexusMods.MnemonicDB.Abstractions" />
87
</ItemGroup>
98

109
<ItemGroup>
1110
<ProjectReference Include="..\..\Extensions\NexusMods.Extensions.Hashing\NexusMods.Extensions.Hashing.csproj" />
1211
</ItemGroup>
13-
1412
</Project>

src/Abstractions/NexusMods.Abstractions.Resources.DB/NexusMods.Abstractions.Resources.DB.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
</ItemGroup>
1010

1111
<ItemGroup>
12+
<PackageReference Include="NexusMods.Hashing.xxHash3" />
1213
<PackageReference Include="NexusMods.MnemonicDB.Abstractions"/>
1314
<PackageReference Include="NexusMods.MnemonicDB.SourceGenerator" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
1415
</ItemGroup>

src/Abstractions/NexusMods.Abstractions.Resources.DB/PersistedDbResourceLoader.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using DynamicData.Kernel;
22
using JetBrains.Annotations;
3-
using NexusMods.Hashing.xxHash64;
3+
using NexusMods.Hashing.xxHash3;
44
using NexusMods.MnemonicDB.Abstractions;
55
using NexusMods.MnemonicDB.Abstractions.Attributes;
66

src/Abstractions/NexusMods.Abstractions.Resources.IO/FileStoreLoader.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using JetBrains.Annotations;
22
using NexusMods.Abstractions.IO;
3-
using NexusMods.Hashing.xxHash64;
3+
using NexusMods.Hashing.xxHash3;
44

55
namespace NexusMods.Abstractions.Resources.IO;
66

src/Abstractions/NexusMods.Abstractions.Resources.IO/FileStoreStreamLoader.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using JetBrains.Annotations;
22
using NexusMods.Abstractions.IO;
3-
using NexusMods.Hashing.xxHash64;
3+
using NexusMods.Hashing.xxHash3;
44

55
namespace NexusMods.Abstractions.Resources.IO;
66

src/Abstractions/NexusMods.Abstractions.Resources.IO/NexusMods.Abstractions.Resources.IO.csproj

-1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,4 @@
77
<ProjectReference Include="..\NexusMods.Abstractions.IO\NexusMods.Abstractions.IO.csproj" />
88
<ProjectReference Include="..\NexusMods.Abstractions.Resources\NexusMods.Abstractions.Resources.csproj" />
99
</ItemGroup>
10-
1110
</Project>

src/Abstractions/NexusMods.Abstractions.Resources.IO/PersistedFileResourceLoader.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using JetBrains.Annotations;
2-
using NexusMods.Hashing.xxHash64;
2+
using NexusMods.Hashing.xxHash3;
33
using NexusMods.Paths;
44

55
namespace NexusMods.Abstractions.Resources.IO;

src/Extensions/NexusMods.Extensions.Hashing/AbsolutePathExtensions.cs

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
using System.IO.Hashing;
12
using System.IO.MemoryMappedFiles;
2-
using NexusMods.Hashing.xxHash64;
3+
using NexusMods.Hashing.xxHash3;
34
using NexusMods.Paths;
45

56
namespace NexusMods.Extensions.Hashing;
@@ -18,6 +19,8 @@ public static async Task<Hash> XxHash64Async(this AbsolutePath input, Cancellati
1819
return await inputStream.HashingCopyAsync(Stream.Null, token, static _ => Task.CompletedTask);
1920
}
2021

22+
private static readonly Hash HashOfEmptyFile = Hash.From(XxHash3.HashToUInt64(ReadOnlySpan<byte>.Empty));
23+
2124
/// <summary>
2225
/// Calculates the xxHash64 of a file by memory mapping it.
2326
/// </summary>
@@ -26,12 +29,12 @@ public static Hash XxHash64MemoryMapped(this AbsolutePath input)
2629
try
2730
{
2831
using var mmf = input.FileSystem.CreateMemoryMappedFile(input, FileMode.Open, MemoryMappedFileAccess.Read, 0);
29-
var hashValue = XxHash64Algorithm.HashBytes(mmf.AsSpan());
32+
var hashValue = XxHash3.HashToUInt64(mmf.AsSpan());
3033
return Hash.From(hashValue);
3134
}
3235
catch (ArgumentException)
3336
{
34-
return Hash.From(XxHash64Algorithm.HashOfEmptyFile);
37+
return HashOfEmptyFile;
3538
}
3639
}
3740
}

src/Extensions/NexusMods.Extensions.Hashing/NexusMods.Extensions.Hashing.csproj

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
<Import Project="$([MSBuild]::GetPathOfFileAbove('NuGet.Build.props', '$(MSBuildThisFileDirectory)../'))" />
44

55
<ItemGroup>
6-
<PackageReference Include="NexusMods.Hashing.xxHash64" />
6+
<PackageReference Include="NexusMods.Hashing.xxHash3" />
77
<PackageReference Include="NexusMods.Paths" />
8+
<PackageReference Include="System.IO.Hashing" />
89
</ItemGroup>
910
</Project>

src/Extensions/NexusMods.Extensions.Hashing/StreamExtensions.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using NexusMods.Hashing.xxHash64;
1+
using NexusMods.Hashing.xxHash3;
22

33
namespace NexusMods.Extensions.Hashing;
44

@@ -18,7 +18,7 @@ public static async Task<Hash> HashingCopyAsync(this Stream inputStream, Stream
1818
/// <summary>
1919
/// Helper method to calculate the hash of a given stream.
2020
/// </summary>
21-
public static async Task<Hash> XxHash64Async(this Stream inputStream, CancellationToken token)
21+
public static async Task<Hash> XxHash3Async(this Stream inputStream, CancellationToken token)
2222
{
2323
return await inputStream.HashingCopyAsync(Stream.Null, token, static _ => Task.CompletedTask);
2424
}

src/Extensions/NexusMods.Extensions.Hashing/StringExtensions.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using NexusMods.Hashing.xxHash64;
1+
using System.IO.Hashing;
22
using Reloaded.Memory.Extensions;
33

44
namespace NexusMods.Extensions.Hashing;
@@ -22,7 +22,7 @@ public static class StringExtensions
2222
/// </remarks>
2323
public static ulong GetStableHash(this ReadOnlySpan<char> input)
2424
{
25-
return XxHash64Algorithm.HashBytes(input.CastFast<char, byte>());
25+
return XxHash3.HashToUInt64(input.CastFast<char, byte>());
2626
}
2727

28-
}
28+
}

src/Games/NexusMods.Games.Larian/BaldursGate3/Emitters/DependencyDiagnosticEmitter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
using NexusMods.Abstractions.Resources;
99
using NexusMods.Abstractions.Telemetry;
1010
using NexusMods.Games.Larian.BaldursGate3.Utils.LsxXmlParsing;
11-
using NexusMods.Hashing.xxHash64;
11+
using NexusMods.Hashing.xxHash3;
1212
using Polly;
1313

1414
namespace NexusMods.Games.Larian.BaldursGate3.Emitters;

src/Games/NexusMods.Games.Larian/BaldursGate3/Pipelines.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
using NexusMods.Abstractions.Resources.IO;
88
using NexusMods.Games.Larian.BaldursGate3.Utils.LsxXmlParsing;
99
using NexusMods.Games.Larian.BaldursGate3.Utils.PakParsing;
10-
using NexusMods.Hashing.xxHash64;
10+
using NexusMods.Hashing.xxHash3;
1111
using Polly;
1212

1313
namespace NexusMods.Games.Larian.BaldursGate3;

src/Games/NexusMods.Games.RedEngine/ModInstallers/RedModInstaller.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
using NexusMods.Abstractions.Library.Models;
99
using NexusMods.Abstractions.Loadouts;
1010
using NexusMods.Games.RedEngine.Cyberpunk2077.Models;
11-
using NexusMods.Hashing.xxHash64;
11+
using NexusMods.Hashing.xxHash3;
1212
using NexusMods.MnemonicDB.Abstractions;
1313
using NexusMods.Paths;
1414
using NexusMods.Paths.Extensions;

src/Games/NexusMods.Games.StardewValley/Pipelines.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
using NexusMods.Abstractions.Resources.Caching;
88
using NexusMods.Abstractions.Resources.IO;
99
using NexusMods.Games.StardewValley.Models;
10-
using NexusMods.Hashing.xxHash64;
10+
using NexusMods.Hashing.xxHash3;
1111
using SMAPIManifest = StardewModdingAPI.Toolkit.Serialization.Models.Manifest;
1212

1313
namespace NexusMods.Games.StardewValley;

0 commit comments

Comments
 (0)