Skip to content

Commit

Permalink
feat: Updates to .NET 9 (#1984)
Browse files Browse the repository at this point in the history
### Summary

* Bumps to .NET 9 with updated dependencies
* Comparing a value type against null is no longer allowed
* CI/CD now uses the version specified in global.json
* Serialization generator updated to .NET 9 with bug fixes, fixes to turkish language, and parallelization
  • Loading branch information
kamronbatman authored Dec 8, 2024
1 parent 51d15d2 commit c75514c
Show file tree
Hide file tree
Showing 24 changed files with 56 additions and 58 deletions.
2 changes: 1 addition & 1 deletion .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"modernuoschemagenerator": {
"version": "2.11.3",
"version": "2.12.10",
"commands": [
"ModernUOSchemaGenerator"
]
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work.
- name: Setup .NET 8
- name: Install .NET 9
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
global-json-file: global.json
- name: Install Prerequisites
run: |
brew update
Expand Down Expand Up @@ -86,10 +86,10 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work.
- name: Setup .NET 8
- name: Install .NET 9
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
global-json-file: global.json
- name: Build
run: ./publish.cmd Release
- name: Test
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/create-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ jobs:
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work.
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- name: Setup .NET 8
- name: Install .NET 9
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
global-json-file: global.json
- name: Install NGBV
uses: dotnet/nbgv@master
id: nbgv
Expand Down
8 changes: 4 additions & 4 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<Authors>Kamron Batman</Authors>
<Company>ModernUO</Company>
<Copyright>2019-2023</Copyright>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net9.0</TargetFramework>
<LangVersion>12</LangVersion>
<PublicRelease>true</PublicRelease>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
Expand Down Expand Up @@ -62,11 +62,11 @@
<AnalysisLevel>latest</AnalysisLevel>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Serilog" Version="4.0.2" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0" />
<PackageReference Include="Serilog" Version="4.2.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.1.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
<PackageReference Include="Nerdbank.GitVersioning" Condition="!Exists('packages.config')">
<Version>3.6.143</Version>
<Version>3.6.146</Version>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<AdditionalFiles Include="..\..\Rules.ruleset" />
Expand Down
2 changes: 1 addition & 1 deletion Projects/Server.Tests/Server.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<RootNamespace>Server.Tests</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<PrivateAssets>all</PrivateAssets>
Expand Down
2 changes: 1 addition & 1 deletion Projects/Server/Client/ArtData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public Rectangle2D GetStaticBounds(int index)

Span<ushort> buffer = stackalloc ushort[entry.Size / 2];
_dataStream.Seek(entry.Offset, SeekOrigin.Begin);
_dataStream.Read(MemoryMarshal.AsBytes(buffer));
_ = _dataStream.Read(MemoryMarshal.AsBytes(buffer));

var width = buffer[2];
var height = buffer[3];
Expand Down
2 changes: 1 addition & 1 deletion Projects/Server/Client/UOClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ private static ClientVersion DetectClassicClient()
{
using FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
var buffer = GC.AllocateUninitializedArray<byte>((int)fs.Length, true);
fs.Read(buffer);
_ = fs.Read(buffer);
// VS_VERSION_INFO (unicode)
Span<byte> vsVersionInfo = stackalloc byte[]
{
Expand Down
2 changes: 1 addition & 1 deletion Projects/Server/Items/Item.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3077,7 +3077,7 @@ public virtual void SendOPLPacketTo(NetState ns)

public virtual void SendWorldPacketTo(NetState ns, ReadOnlySpan<byte> world = default)
{
if (world != null)
if (world != ReadOnlySpan<byte>.Empty)
{
ns?.Send(world);
return;
Expand Down
4 changes: 2 additions & 2 deletions Projects/Server/Localization/Localization.cs
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ private static Dictionary<int, LocalizationEntry> LoadClilocs(string lang, strin
{
using var fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read);
Span<byte> header = stackalloc byte[6];
fs.Read(header);
_ = fs.Read(header);

byte[] data;
BufferReader br;
Expand All @@ -120,7 +120,7 @@ private static Dictionary<int, LocalizationEntry> LoadClilocs(string lang, strin
else
{
data = GC.AllocateUninitializedArray<byte>((int)fs.Length - 6);
fs.Read(data);
_ = fs.Read(data);
br = new BufferReader(data);
}

Expand Down
2 changes: 1 addition & 1 deletion Projects/Server/Network/NetState/NetState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,7 @@ public bool GetSendBuffer(out Span<byte> buffer)

public void Send(ReadOnlySpan<byte> span)
{
if (span == null || this.CannotSendPackets())
if (span == ReadOnlySpan<byte>.Empty || this.CannotSendPackets())
{
return;
}
Expand Down
2 changes: 1 addition & 1 deletion Projects/Server/Serial.cs
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ public string ToString(string format, IFormatProvider formatProvider)

public bool TryFormat(
Span<char> destination, out int charsWritten, ReadOnlySpan<char> format, IFormatProvider provider
) => format != null
) => format != ReadOnlySpan<char>.Empty
? Value.TryFormat(destination, out charsWritten, format, provider)
: destination.TryWrite(provider, $"0x{Value:X8}", out charsWritten);

Expand Down
6 changes: 3 additions & 3 deletions Projects/Server/Server.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@
<ItemGroup>
<PackageReference Include="CommunityToolkit.HighPerformance" Version="8.3.2" />
<PackageReference Include="LibDeflate.Bindings" Version="1.0.2.120" />
<PackageReference Include="PollGroup" Version="1.5.1" />
<PackageReference Include="System.IO.Hashing" Version="8.0.0" />
<PackageReference Include="PollGroup" Version="1.6.1" />
<PackageReference Include="System.IO.Hashing" Version="9.0.0" />

<PackageReference Include="ModernUO.Serialization.Annotations" Version="2.9.1" />
<PackageReference Include="ModernUO.Serialization.Generator" Version="2.11.3" />
<PackageReference Include="ModernUO.Serialization.Generator" Version="2.12.10" />
</ItemGroup>
<ItemGroup>
<AdditionalFiles Include="Migrations/*.v*.json" />
Expand Down
4 changes: 2 additions & 2 deletions Projects/Server/Text/StringHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ out int size
)
{
size = 0;
if (a == null || a.Length == 0)
if (a == ReadOnlySpan<char>.Empty || a.Length == 0)
{
return;
}
Expand Down Expand Up @@ -72,7 +72,7 @@ out int size
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static string Remove(this ReadOnlySpan<char> a, ReadOnlySpan<char> b, StringComparison comparison)
{
if (a == null)
if (a == ReadOnlySpan<char>.Empty)
{
return null;
}
Expand Down
4 changes: 2 additions & 2 deletions Projects/Server/TileMatrix/TileMatrix.cs
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ private unsafe StaticTile[][][] ReadStaticBlock(int x, int y)

fixed (StaticTile* pTiles = staTiles)
{
DataStream.Read(new Span<byte>(pTiles, length));
_ = DataStream.Read(new Span<byte>(pTiles, length));

if (m_Lists == null)
{
Expand Down Expand Up @@ -423,7 +423,7 @@ private unsafe LandTile[] ReadLandBlock(int x, int y)

fixed (LandTile* pTiles = tiles)
{
MapStream.Read(new Span<byte>(pTiles, 192));
_ = MapStream.Read(new Span<byte>(pTiles, 192));
}

return tiles;
Expand Down
4 changes: 2 additions & 2 deletions Projects/Server/TileMatrix/TileMatrixPatch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ private unsafe int PatchLand(TileMatrix matrix, string dataPath, string indexPat
var tiles = new LandTile[64];
fixed (LandTile* pTiles = tiles)
{
fsData.Read(new Span<byte>(pTiles, 192));
_ = fsData.Read(new Span<byte>(pTiles, 192));
}

matrix.SetLandBlock(x, y, tiles);
Expand Down Expand Up @@ -149,7 +149,7 @@ private unsafe int PatchStatics(TileMatrix matrix, string dataPath, string index

fixed (StaticTile* pTiles = staTiles)
{
fsData.Read(new Span<byte>(pTiles, length));
_ = fsData.Read(new Span<byte>(pTiles, length));

StaticTile* pCur = pTiles, pEnd = pTiles + tileCount;

Expand Down
2 changes: 1 addition & 1 deletion Projects/Server/Utilities/HashUtility.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public static ulong ComputeHash64(ReadOnlySpan<char> str)

public static uint ComputeHash32(ReadOnlySpan<char> str)
{
if (str == null)
if (str == ReadOnlySpan<char>.Empty)
{
return 0;
}
Expand Down
2 changes: 1 addition & 1 deletion Projects/UOContent.Tests/UOContent.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<Configurations>Debug;Release;Analyze</Configurations>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<PrivateAssets>all</PrivateAssets>
Expand Down
2 changes: 1 addition & 1 deletion Projects/UOContent/Special Systems/Engines/TestCenter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ private static void EventSink_Speech(SpeechEventArgs args)

var name = tokenizer.MoveNext() ? tokenizer.Current : null;
var valueStr = tokenizer.MoveNext() ? tokenizer.Current : null;
if (valueStr == null)
if (valueStr == ReadOnlySpan<char>.Empty)
{
return;
}
Expand Down
4 changes: 2 additions & 2 deletions Projects/UOContent/UOContent.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,15 @@
</ProjectReference>
<PackageReference Include="LibDeflate.Bindings" Version="1.0.2.120" />
<PackageReference Include="MailKit" Version="4.8.0" />
<PackageReference Include="Microsoft.Extensions.FileSystemGlobbing" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.FileSystemGlobbing" Version="9.0.0" />
<PackageReference Include="CommunityToolkit.HighPerformance" Version="8.3.2" />
<PackageReference Include="Argon2.Bindings" Version="1.16.1" />
<PackageReference Include="ModernUO.CodeGeneratedEvents.Annotations" Version="1.0.0" />
<PackageReference Include="ModernUO.CodeGeneratedEvents.Generator" Version="1.0.3.2" PrivateAssets="all" />
<PackageReference Include="Zstd.Binaries" Version="1.6.0" />

<PackageReference Include="ModernUO.Serialization.Annotations" Version="2.9.1" />
<PackageReference Include="ModernUO.Serialization.Generator" Version="2.11.3" />
<PackageReference Include="ModernUO.Serialization.Generator" Version="2.12.10" />
</ItemGroup>
<ItemGroup>
<AdditionalFiles Include="Migrations/*.v*.json" />
Expand Down
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ ModernUO [![Discord](https://img.shields.io/discord/751317910504603701?logo=disc
[![Ubuntu 20+ LTS](https://img.shields.io/badge/-22LTS-E95420?logo=ubuntu&logoColor=E95420&labelColor=222222)](https://ubuntu.com/download/server)
<br />
[![Alpine 3.18+](https://img.shields.io/badge/-3.18-0D597F?logo=alpinelinux&logoColor=0D597F&labelColor=222222)](https://alpinelinux.org/downloads/)
[![Fedora 39+](https://img.shields.io/badge/-39-51a2da?logo=fedora&logoColor=51a2da&labelColor=222222)](https://getfedora.org/en/server/download/)
[![RedHat 8/9](https://img.shields.io/badge/-8-BE0000?logo=redhat&logoColor=BE0000&labelColor=222222)](https://access.redhat.com/downloads)
[![Fedora 40+](https://img.shields.io/badge/-40-51a2da?logo=fedora&logoColor=51a2da&labelColor=222222)](https://getfedora.org/en/server/download/)
[![RedHat 8+](https://img.shields.io/badge/-8-BE0000?logo=redhat&logoColor=BE0000&labelColor=222222)](https://access.redhat.com/downloads)
[![CentOS 9](https://img.shields.io/badge/-9-262577?logo=centos&logoColor=white&labelColor=222222)](https://www.centos.org/download/)
[![openSUSE 15+](https://img.shields.io/badge/-15-73BA25?logo=openSUSE&logoColor=73BA25&labelColor=222222)](https://get.opensuse.org/)
[![SUSE Enterprise 12 SP2+](https://img.shields.io/badge/-12%20SP2-0C322C?logo=suse&logoColor=30BA78&labelColor=222222)](https://www.suse.com/download/sles/)
Expand All @@ -31,25 +31,25 @@ ModernUO [![Discord](https://img.shields.io/discord/751317910504603701?logo=disc

#### Required Frameworks
##### All Operating Systems
[![.NET](https://img.shields.io/badge/-8.0.8-5C2D91?logo=.NET&logoColor=white&labelColor=222222)](https://dotnet.microsoft.com/download/dotnet/8.0)
[![.NET](https://img.shields.io/badge/-9.0.0-5C2D91?logo=.NET&logoColor=white&labelColor=222222)](https://dotnet.microsoft.com/download/dotnet/9.0)

##### Windows
[![VC++ Redistributable 17](https://img.shields.io/badge/-Redist%2017-00599C?logo=cplusplus&logoColor=white&labelColor=222222)](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022)

#### Development
[![git](https://img.shields.io/badge/-git-F05032?logo=git&logoColor=F05032&labelColor=222222)](https://git-scm.com/downloads)
[![.NET](https://img.shields.io/badge/-%208.0.401%20SDK-5C2D91?logo=.NET&logoColor=white&labelColor=222222)](https://dotnet.microsoft.com/download/dotnet/8.0)
[![.NET](https://img.shields.io/badge/-%209.0.101%20SDK-5C2D91?logo=.NET&logoColor=white&labelColor=222222)](https://dotnet.microsoft.com/download/dotnet/9.0)

#### Supported IDEs

<p align="left"><a href="https://www.jetbrains.com/rider/download"><img height="64" title="Jetbrains Rider 2024.1+"
alt="Jetbrains Rider 2024.1+"
<p align="left"><a href="https://www.jetbrains.com/rider/download"><img height="64" title="Jetbrains Rider 2024.3+"
alt="Jetbrains Rider 2024.3+"
src="https://user-images.githubusercontent.com/3953314/133473479-734e425c-fbb6-433a-af2d-2cc8444398e8.png"></a><img
alt="space" width="32" src="https://user-images.githubusercontent.com/3953314/200151935-3c1521ec-16cb-487b-85a2-7454d347c585.png"><a href="https://code.visualstudio.com/download"><img height="64" title="VSCode"
alt="VSCode"
src="https://user-images.githubusercontent.com/3953314/200161017-7697171f-8f13-4829-95d0-8a25b59ee4c9.png"></a><img alt="space" width="32"
src="https://user-images.githubusercontent.com/3953314/200151935-3c1521ec-16cb-487b-85a2-7454d347c585.png"><a href="https://visualstudio.microsoft.com/vs/community/"><img height="64" title="Visual Studio 2022 v17.10+"
alt="Visual Studio 2022 v17.10+"
src="https://user-images.githubusercontent.com/3953314/200151935-3c1521ec-16cb-487b-85a2-7454d347c585.png"><a href="https://visualstudio.microsoft.com/vs/community/"><img height="64" title="Visual Studio 2022 v17.12+"
alt="Visual Studio 2022 v17.12+"
src="https://user-images.githubusercontent.com/3953314/133473556-35fd48b4-6460-49b1-b7c5-b4a8c529cc04.png"></a></p>

## Getting Started
Expand Down
24 changes: 11 additions & 13 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ trigger:

variables:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: 1

jobs:
- job: BuildWindows
Expand All @@ -14,15 +13,14 @@ jobs:
vmImage: 'windows-latest'

steps:
- task: UseDotNet@2
displayName: 'Install .NET 8'
inputs:
packageType: sdk
version: '8.0.x'
- task: NuGetAuthenticate@1
- script: ./publish.cmd Release
displayName: 'Build'
- powershell: ./.github/porcelain.ps1
displayName: Migration Changes
- script: dotnet test --no-restore
displayName: 'Test'
- task: UseDotNet@2
displayName: 'Install .NET 9'
inputs:
useGlobalJson: true
- task: NuGetAuthenticate@1
- script: ./publish.cmd Release
displayName: 'Build'
- powershell: ./.github/porcelain.ps1
displayName: Migration Changes
- script: dotnet test --no-restore
displayName: 'Test'
4 changes: 2 additions & 2 deletions docs/starting-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Everything is run from the _Distribution_ folder.
Using _terminal_, run:
```bash
cd Distribution
dotnet run ModernUO.dll
dotnet ModernUO.dll
```

=== "Game Files"
Expand All @@ -27,4 +27,4 @@ Everything is run from the _Distribution_ folder.


!!! Tip
Game files are not directly distributed in ModernUO, find the latest version to download these at [client download](https://uo.com/Client-Download/)
Game files are not directly distributed in ModernUO, find the latest version to download these at [client download](https://uo.com/Client-Download/)
2 changes: 1 addition & 1 deletion global.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"sdk": {
"version": "8.0.0",
"version": "9.0.101",
"rollForward": "latestMajor",
"allowPrerelease": false
}
Expand Down
2 changes: 1 addition & 1 deletion version.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json",
"version": "0.13.6"
"version": "0.13.7"
}

0 comments on commit c75514c

Please sign in to comment.