Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/collect-pgo-profile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -261,8 +261,8 @@ jobs:
shell: bash
run: |
set -euo pipefail
# Pin to v10.0.5 — matches the SDK/runtime in our Docker base images
git clone --depth 1 --branch v10.0.5 \
# Pin to the runtime in our Docker base images
git clone --depth 1 --branch v11.0.0-preview.7.26381.103 \
https://github.com/dotnet/runtime.git "${RUNNER_TEMP}/dotnet-runtime"
cd "${RUNNER_TEMP}/dotnet-runtime"
# Build only dotnet-pgo (--projects bypasses subset traversal, avoids ILCompiler)
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# AGENTS instructions

This guide helps to get started with the Nethermind Ethereum execution client repository, which targets `net10.0` and uses C# language version `14.0`. It covers the project structure, how to build and test the code, and follow the PR workflow.
This guide helps to get started with the Nethermind Ethereum execution client repository, which targets `net11.0` and uses C# language version `14.0`. It covers the project structure, how to build and test the code, and follow the PR workflow.

## Repo structure

Expand Down
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<InvariantGlobalization>true</InvariantGlobalization>
<LangVersion>14.0</LangVersion>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
<TargetFramework>net10.0</TargetFramework>
<TargetFramework>net11.0</TargetFramework>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<!-- NU1900: vulnerability metadata fetch failure — don't break builds when a feed is down -->
<NoWarn>$(NoWarn);NU1900</NoWarn>
Expand Down
30 changes: 15 additions & 15 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@
<PackageVersion Include="JetBrains.Profiler.Api" Version="1.4.11" />
<PackageVersion Include="KubernetesClient" Version="19.0.2" />
<PackageVersion Include="MathNet.Numerics.FSharp" Version="5.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.DataProtection" Version="10.0.11" />
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.Extensions" Version="10.0.11" />
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="10.0.11" />
<PackageVersion Include="Microsoft.Build.Tasks.Git" Version="10.0.400" />
<PackageVersion Include="Microsoft.AspNetCore.DataProtection" Version="11.0.0-preview.7.26381.103" />
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.Extensions" Version="11.0.0-preview.7.26381.103" />
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="11.0.0-preview.7.26381.103" />
<PackageVersion Include="Microsoft.Build.Tasks.Git" Version="11.0.100-preview.7.26381.103" />
<PackageVersion Include="Microsoft.ClearScript.V8" Version="7.5.1" />
<PackageVersion Include="Microsoft.ClearScript.V8.Native.linux-arm64" Version="7.5.1" />
<PackageVersion Include="Microsoft.ClearScript.V8.Native.linux-x64" Version="7.5.1" />
Expand All @@ -42,17 +42,17 @@
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="5.6.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="5.6.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Analyzer.Testing" Version="1.1.4" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.11" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="10.0.11" />
<PackageVersion Include="Microsoft.Extensions.FileSystemGlobbing" Version="10.0.11" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.11" />
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="10.0.11" />
<PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="10.0.11" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="10.0.11" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="11.0.0-preview.7.26381.103" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="11.0.0-preview.7.26381.103" />
<PackageVersion Include="Microsoft.Extensions.FileSystemGlobbing" Version="11.0.0-preview.7.26381.103" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="11.0.0-preview.7.26381.103" />
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="11.0.0-preview.7.26381.103" />
<PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="11.0.0-preview.7.26381.103" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="11.0.0-preview.7.26381.103" />
<PackageVersion Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.22.0" />
<PackageVersion Include="Microsoft.IO.RecyclableMemoryStream" Version="3.0.1" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="10.0.400" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="11.0.100-preview.7.26381.103" />
<PackageVersion Include="Microsoft.Testing.Extensions.CodeCoverage" Version="18.10.0" />
<PackageVersion Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.23.0" />
<PackageVersion Include="Nethermind.Crypto.Bls" Version="1.1.0" />
Expand Down Expand Up @@ -92,9 +92,9 @@
<PackageVersion Include="Spectre.Console" Version="0.57.2" />
<PackageVersion Include="SSH.NET" Version="2026.0.0" />
<PackageVersion Include="System.CommandLine" Version="2.0.11" />
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="10.0.11" />
<PackageVersion Include="System.IO.Hashing" Version="10.0.11" />
<PackageVersion Include="System.Security.Cryptography.ProtectedData" Version="10.0.11" />
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="11.0.0-preview.7.26381.103" />
<PackageVersion Include="System.IO.Hashing" Version="11.0.0-preview.7.26381.103" />
<PackageVersion Include="System.Security.Cryptography.ProtectedData" Version="11.0.0-preview.7.26381.103" />
<PackageVersion Include="Testably.Abstractions" Version="10.3.0" />
<PackageVersion Include="Testably.Abstractions.Testing" Version="7.0.1" />
<PackageVersion Include="Websocket.Client" Version="5.5.0" />
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# SPDX-FileCopyrightText: 2022 Demerzel Solutions Limited
# SPDX-License-Identifier: LGPL-3.0-only

FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0.400-resolute@sha256:8caacec8e070ea6ab07b1d9c2b6bf397fca92ab4de0e52bbf25d381409782158 AS build
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:11.0.100-preview.7-resolute@sha256:fd96d62893be03527912ce16b32e4331a64e6cf93393129f783a59b11e651790 AS build

ARG BUILD_CONFIG=release
ARG CI=true
Expand All @@ -26,7 +26,7 @@ RUN arch=$([ "$TARGETARCH" = "amd64" ] && echo "x64" || echo "$TARGETARCH") && \
# A temporary symlink to support the old executable name
RUN ln -sr /publish/nethermind /publish/Nethermind.Runner

FROM mcr.microsoft.com/dotnet/aspnet:10.0.11-resolute@sha256:23837465b21b7883dc9a7e4d74bbb1be2d018142e9054beb6ef74dbb0dd0f247
FROM mcr.microsoft.com/dotnet/aspnet:11.0.0-preview.7-resolute@sha256:1d636bd12f01151eaf001803fbd24a4afb35e22e086d00cdb25df97c85b36a1e

WORKDIR /nethermind

Expand Down
4 changes: 2 additions & 2 deletions Dockerfile.chiseled
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# SPDX-FileCopyrightText: 2024 Demerzel Solutions Limited
# SPDX-License-Identifier: LGPL-3.0-only

FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0.400-resolute@sha256:8caacec8e070ea6ab07b1d9c2b6bf397fca92ab4de0e52bbf25d381409782158 AS build
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:11.0.100-preview.7-resolute@sha256:fd96d62893be03527912ce16b32e4331a64e6cf93393129f783a59b11e651790 AS build

ARG BUILD_CONFIG=release
ARG CI=true
Expand Down Expand Up @@ -29,7 +29,7 @@ RUN cd /publish && \
mkdir logs && \
mkdir nethermind_db

FROM mcr.microsoft.com/dotnet/aspnet:10.0.11-resolute-chiseled@sha256:95fe45615d8ca4de2aa15206a827ce9383b67e8e34cc0aba58cb3261fb52c40c
FROM mcr.microsoft.com/dotnet/aspnet:11.0.0-preview.7-resolute-chiseled@sha256:8822cb54d291897cfeec4d17e4f7c05bc45ab63b9199dccf639c679dd1924114

WORKDIR /nethermind

Expand Down
4 changes: 2 additions & 2 deletions Dockerfile.diag
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# SPDX-FileCopyrightText: 2022 Demerzel Solutions Limited
# SPDX-License-Identifier: LGPL-3.0-only

FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0-resolute AS build
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:11.0.100-preview.7-resolute AS build

ARG BUILD_CONFIG=release
ARG CI=true
Expand All @@ -28,7 +28,7 @@ RUN dotnet tool install -g dotnet-dump && \
dotnet tool install -g dotnet-trace && \
dotnet tool install -g JetBrains.dotTrace.GlobalTools

FROM mcr.microsoft.com/dotnet/aspnet:10.0-resolute
FROM mcr.microsoft.com/dotnet/aspnet:11.0.0-preview.7-resolute

WORKDIR /nethermind

Expand Down
4 changes: 2 additions & 2 deletions Dockerfile.pgo
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# Also writes edge/block profiling data (.jit) via DOTNET_WritePGOData
# which is trimmed by PgoTrim and consumed at runtime via DOTNET_ReadPGOData.

FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0.400-resolute@sha256:8caacec8e070ea6ab07b1d9c2b6bf397fca92ab4de0e52bbf25d381409782158 AS build
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:11.0.100-preview.7-resolute@sha256:fd96d62893be03527912ce16b32e4331a64e6cf93393129f783a59b11e651790 AS build

ARG BUILD_CONFIG=release
ARG CI=true
Expand All @@ -33,7 +33,7 @@ RUN arch=$([ "$TARGETARCH" = "amd64" ] && echo "x64" || echo "$TARGETARCH") && \
# A temporary symlink to support the old executable name
RUN ln -sr /publish/nethermind /publish/Nethermind.Runner

FROM mcr.microsoft.com/dotnet/aspnet:10.0.11-resolute@sha256:23837465b21b7883dc9a7e4d74bbb1be2d018142e9054beb6ef74dbb0dd0f247
FROM mcr.microsoft.com/dotnet/aspnet:11.0.0-preview.7-resolute@sha256:1d636bd12f01151eaf001803fbd24a4afb35e22e086d00cdb25df97c85b36a1e

WORKDIR /nethermind

Expand Down
10 changes: 7 additions & 3 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,13 @@
});

devShells = forAllSystems (pkgs: {
default = pkgs.mkShell {
packages = [ pkgs.dotnetCorePackages.sdk_10_0-bin ];
};
default =
let
dotnet = pkgs.callPackage ./nix/dotnet-11-preview7.nix { };
in
pkgs.mkShell {
packages = [ dotnet.sdk ];
};
});

checks = forAllSystems (
Expand Down
4 changes: 2 additions & 2 deletions global.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"sdk": {
"version": "10.0.300",
"allowPrerelease": false,
"version": "11.0.100-preview.7.26381.103",
"allowPrerelease": true,
"rollForward": "latestFeature"
},
"test": {
Expand Down
92 changes: 92 additions & 0 deletions nix/dotnet-11-preview7.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# SPDX-FileCopyrightText: 2026 Demerzel Solutions Limited
# SPDX-License-Identifier: LGPL-3.0-only

{
dotnetCorePackages,
fetchurl,
stdenv,
}:
let
runtimeVersion = "11.0.0-preview.7.26381.103";
sdkVersion = "11.0.100-preview.7.26381.103";

runtimeSources = {
x86_64-linux = {
url = "https://builds.dotnet.microsoft.com/dotnet/Runtime/${runtimeVersion}/dotnet-runtime-${runtimeVersion}-linux-x64.tar.gz";
hash = "sha512-z7osIdYxScMYHZj0+pseGnlc2vtD7cwHvscgFJ+utVXNRflelWoeAzB8iTcULHNDRryxZboKBPNFQFGdosjL+Q==";
};
aarch64-linux = {
url = "https://builds.dotnet.microsoft.com/dotnet/Runtime/${runtimeVersion}/dotnet-runtime-${runtimeVersion}-linux-arm64.tar.gz";
hash = "sha512-F00JSaQnJzI55dgspdEVL+epyUIou+wyOJNCTpjDzrelafFZpT92QA6LyGp8tLe0XNX7b/58bknSWoryDkqKHQ==";
};
x86_64-darwin = {
url = "https://builds.dotnet.microsoft.com/dotnet/Runtime/${runtimeVersion}/dotnet-runtime-${runtimeVersion}-osx-x64.tar.gz";
hash = "sha512-MMahcmKYRUVBx+3xC9m8EsPetL+2sNmS//X8JZ+J/M3RB8pNeQM8/qeFdNflkgEeDyeb0IoftQOElMPgJqGitA==";
};
aarch64-darwin = {
url = "https://builds.dotnet.microsoft.com/dotnet/Runtime/${runtimeVersion}/dotnet-runtime-${runtimeVersion}-osx-arm64.tar.gz";
hash = "sha512-NuhSqZgCvPoRnMrL8rj+0A+onyhyxQUw17yivDDY68/MQmLUyP1pw2A3EbRXWVqyWzGLDA5AVFxXONvKTDUgmQ==";
};
};

aspnetcoreSources = {
x86_64-linux = {
url = "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/${runtimeVersion}/aspnetcore-runtime-${runtimeVersion}-linux-x64.tar.gz";
hash = "sha512-pdi3nz+fmtkVyko7UJmCPKA1EdHJAKgRfB7WuMzB/oQ+Qw1PWNXAW5cd2st+iPr27SWO1wTsn0FKgfbAUyLGWw==";
};
aarch64-linux = {
url = "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/${runtimeVersion}/aspnetcore-runtime-${runtimeVersion}-linux-arm64.tar.gz";
hash = "sha512-yt7GPJIj1XicF//1fEsmNItAt3KwtGGXLPYrJ0OlF4Gbfdjx5Sul2ngKbTEJqjygcY6KmAvfqzxz4z6ImeVOBw==";
};
x86_64-darwin = {
url = "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/${runtimeVersion}/aspnetcore-runtime-${runtimeVersion}-osx-x64.tar.gz";
hash = "sha512-UMrvYn8zmqQ8y/p0kXoXD68fyWBgzR9udnChPljNvckO5QrkiLLe26A9a0hIWW5du9r2z9cnZOOAaE6h5nWcGg==";
};
aarch64-darwin = {
url = "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/${runtimeVersion}/aspnetcore-runtime-${runtimeVersion}-osx-arm64.tar.gz";
hash = "sha512-4QFAcxUsU++Pry4YyaHN/eOfp5OIhKc1R4LFp3quEXfF9ewF/nVbvwlx8Hklnd0gSRVaT+6hrZLD3u68XZYowQ==";
};
};

sdkSources = {
x86_64-linux = {
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/${sdkVersion}/dotnet-sdk-${sdkVersion}-linux-x64.tar.gz";
hash = "sha512-Un+dyBBKhiFON+gcfOosfX+6MfYViiPnFFi4WgovulP7LGBqKj5Tondf2uPj0nzWRGN7QwOeVzOVrR3uSzlosQ==";
};
aarch64-linux = {
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/${sdkVersion}/dotnet-sdk-${sdkVersion}-linux-arm64.tar.gz";
hash = "sha512-ITtaSEVUAtvrub10tXbZp+w38w1MbOEJneX1oVP2ATBpdX1MZZeEygfkWshlKblenC/vJs3OlXj3eAa4dXITog==";
};
x86_64-darwin = {
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/${sdkVersion}/dotnet-sdk-${sdkVersion}-osx-x64.tar.gz";
hash = "sha512-vDmClyrY/AQyvWbelitBGr7OKhEpCNRLy2AB+JG+q4HsY+CDw8RcO71IhT8nKMr8R2Krs0LI6NRafZFcuhWFHw==";
};
aarch64-darwin = {
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/${sdkVersion}/dotnet-sdk-${sdkVersion}-osx-arm64.tar.gz";
hash = "sha512-NmiS30GCD1VzL7eGvRCmZb2tXDKlnuJ48h8OLnjKCO0UgxW0ziLEUQbv7MfT5HK7uNaXBlV8TCGEC01k6a1vQA==";
};
};

sourceFor = sources: sources.${stdenv.hostPlatform.system} or (throw "Unsupported .NET host platform");

overrideBinary = package: version: sources: extraPassthru:
let
unwrapped = package.unwrapped.overrideAttrs (previous: {
inherit version;
src = fetchurl (sourceFor sources);
passthru = previous.passthru // extraPassthru;
});
in
package.overrideAttrs (_: {
inherit version;
src = unwrapped;
passthru = unwrapped.passthru // { inherit unwrapped; };
});

runtime = overrideBinary dotnetCorePackages.runtime_11_0-bin runtimeVersion runtimeSources { };
aspnetcore = overrideBinary dotnetCorePackages.aspnetcore_11_0-bin runtimeVersion aspnetcoreSources { };
sdk = overrideBinary dotnetCorePackages.sdk_11_0-bin sdkVersion sdkSources { inherit runtime aspnetcore; };
in
{
inherit runtime aspnetcore sdk;
}
Loading
Loading