Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
b2ce8fb
initial 8 -> 10 reference changes
timothycoleman Oct 9, 2025
55bb219
fix AsyncEnumerable breaking changes
timothycoleman Oct 9, 2025
dcfa8a7
remove conflicting polyfill (presumably redundant now)
timothycoleman Oct 9, 2025
01ed28a
temporarily disable warnings as errors
timothycoleman Oct 9, 2025
65a5384
fixup some tests
timothycoleman Oct 9, 2025
4f03838
jammy -> noble
timothycoleman Oct 9, 2025
30160e2
should be no need to specify the preview lang version now
timothycoleman Oct 10, 2025
b386cb3
fix NU1510: remove references that are now included in the framework
timothycoleman Oct 10, 2025
32f0223
fix CA2022
timothycoleman Oct 10, 2025
65e424c
fix some other null/span related warnings
timothycoleman Oct 10, 2025
f197027
update most of the microsoft dependencies
timothycoleman Oct 10, 2025
4a8518b
bump test runner related dependencies
timothycoleman Oct 10, 2025
87f3c6a
fix CS0618 obsolete warning
timothycoleman Oct 17, 2025
3165862
fix obsolete warning
timothycoleman Oct 17, 2025
bdda029
fix warning
timothycoleman Oct 17, 2025
3e4e551
silence some warnings for the minute
timothycoleman Oct 17, 2025
6b3efa9
workaround bug in net10 rc.2
timothycoleman Oct 19, 2025
c90b928
install add user, isn't part of noble base
timothycoleman Oct 21, 2025
33b170d
user 1000 already in use in noble ("ubuntu" user)
timothycoleman Oct 21, 2025
6e1bc32
net10 preview packages upgrades
timothycoleman Oct 22, 2025
5965026
passing --runtime=linux-x64 fails to restore the kurrentdb.ui blazor …
timothycoleman Oct 22, 2025
a807919
Add a second entry before measuring the third
timothycoleman Oct 22, 2025
2238a7a
resolve SYSLIB0060
timothycoleman Oct 22, 2025
0506778
resolve SYSLIB0014
timothycoleman Oct 22, 2025
fd2c9cd
resolve CS0436
timothycoleman Oct 22, 2025
2a4e288
resolve SYSLIB0058
timothycoleman Oct 22, 2025
0807879
ok, dotnet test will run MTP 1 projects in vstest mode, but not MTP 2…
timothycoleman Oct 23, 2025
e19301a
Merge remote-tracking branch 'origin/master' into timothycoleman/net-…
timothycoleman Oct 23, 2025
333bdce
Remove bookworm (debian) docker CI build
timothycoleman Oct 23, 2025
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
26 changes: 0 additions & 26 deletions .github/workflows/build-container-bookworm-slim.yml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build Jammy Container
name: Build Noble Container

on:
pull_request:
Expand All @@ -22,5 +22,5 @@ jobs:
build-container:
uses: ./.github/workflows/build-container-reusable.yml
with:
container-runtime: jammy
container-runtime: noble

9 changes: 3 additions & 6 deletions .github/workflows/build-container-reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ jobs:
name: Checkout
uses: actions/checkout@v4
-
name: Install net8.0
name: Install net10.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: 8.0.x
dotnet-version: 10.0.x
-
name: Setup QEMU
uses: docker/setup-qemu-action@v2
Expand All @@ -41,10 +41,7 @@ jobs:
key: "${{ inputs.container-runtime }}"
map: |
{
"jammy": {
"runtime": "linux-x64"
},
"bookworm-slim": {
"noble": {
"runtime": "linux-x64"
},
"alpine": {
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/build-reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@ jobs:
if: ${{ !startsWith(inputs.os, 'windows') }}
uses: docker/setup-buildx-action@v2
-
name: Install net8.0
name: Install net10.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: 8.0.x
dotnet-version: 10.0.x
-
name: Clear Nuget Cache
shell: powershell
Expand All @@ -71,6 +71,7 @@ jobs:
shell: bash
run: |
dotnet run --project src/KurrentDB --configuration ${{ matrix.configuration }} -- --insecure --what-if
# so that the oauth tests have an up to date server image to run against
-
name: Build Test Image
if: ${{ !startsWith(inputs.os, 'windows') }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/common.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ jobs:
name: Checkout
uses: actions/checkout@v4
-
name: Install net8.0
name: Install net10.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: 8.0.x
dotnet-version: 10.0.x
-
name: Scan for Vulnerabilities
run: |
Expand Down
8 changes: 3 additions & 5 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,7 @@ KurrentDB 25.1 introduces several major features and improvements:
## Development Commands

### Build
- `./build.sh [version] [configuration]` - Build KurrentDB (Linux/MacOS)
- `./build.ps1 [version] [configuration]` - Build KurrentDB (Windows)
- `dotnet build -c Release /p:Platform=x64 --framework=net8.0 src/KurrentDB.sln` - Direct dotnet build
- `dotnet build -c Release /p:Platform=x64 --framework=net10.0 src/KurrentDB.sln` - Direct dotnet build

### Test
- `dotnet test src/KurrentDB.sln` - Run all tests
Expand All @@ -43,7 +41,7 @@ Navigate to the test project directory and use:
- `dotnet test --filter "TestClass"`

### Development Server
- Start server: `dotnet ./src/KurrentDB/bin/Release/net8.0/KurrentDB.dll --dev --db ./tmp/data --index ./tmp/index --log ./tmp/log`
- Start server: `dotnet ./src/KurrentDB/bin/Release/net10.0/KurrentDB.dll --dev --db ./tmp/data --index ./tmp/index --log ./tmp/log`
- Default ports: HTTP/gRPC on 2113, Internal TCP on 1112
- Admin UI: `http://localhost:2113` (new embedded UI) or `http://localhost:2113/web` (legacy)
- Windows Service: KurrentDB can now be run as a Windows Service (see installation docs)
Expand Down Expand Up @@ -185,7 +183,7 @@ Uses centralized package management:

### Development Notes

- Target framework: .NET 8.0 with Server GC enabled by default
- Target framework: .NET 10.0 with Server GC enabled by default
- Uses unsafe code blocks for performance-critical operations
- Protocol buffer generation integrated into build process (`KurrentDB.Protocol` project)
- Extensive use of dependency injection and hosted services pattern
Expand Down
19 changes: 10 additions & 9 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# "build" image
ARG CONTAINER_RUNTIME=jammy
# NOT A BUG: we can't build on alpine so we use jammy as a base image
FROM mcr.microsoft.com/dotnet/sdk:8.0-jammy AS build
ARG CONTAINER_RUNTIME=noble
# NOT A BUG: we can't build on alpine so we use noble as a base image
FROM mcr.microsoft.com/dotnet/sdk:10.0-noble AS build
ARG RUNTIME=linux-x64

WORKDIR /build
Expand All @@ -22,14 +22,14 @@ COPY ./src/KurrentDB.sln ./src/*/*.csproj ./src/Directory.Build.* ./src/Director
RUN for file in $(ls Connectors/*.csproj); do mkdir -p ./${file%.*}/ && mv $file ./${file%.*}/; done && \
for file in $(ls SchemaRegistry/*.csproj); do mkdir -p ./${file%.*}/ && mv $file ./${file%.*}/; done && \
for file in $(ls *.csproj); do mkdir -p ./${file%.*}/ && mv $file ./${file%.*}/; done && \
dotnet restore --runtime=${RUNTIME}
dotnet restore
COPY ./src .

WORKDIR /build/.git
COPY ./.git/ .

# "test" image
FROM mcr.microsoft.com/dotnet/sdk:8.0-${CONTAINER_RUNTIME} AS test
FROM mcr.microsoft.com/dotnet/sdk:10.0-${CONTAINER_RUNTIME} AS test
WORKDIR /build
COPY --from=build ./build/src ./src
COPY --from=build ./build/ci ./ci
Expand Down Expand Up @@ -57,13 +57,13 @@ FROM build AS publish
ARG RUNTIME=linux-x64

RUN dotnet publish --configuration=Release --runtime=${RUNTIME} --self-contained \
--framework=net8.0 --output /publish /build/src/KurrentDB
--framework=net10.0 --output /publish /build/src/KurrentDB

# "runtime" image
FROM mcr.microsoft.com/dotnet/runtime-deps:8.0-${CONTAINER_RUNTIME} AS runtime
FROM mcr.microsoft.com/dotnet/runtime-deps:10.0-${CONTAINER_RUNTIME} AS runtime
ARG RUNTIME=linux-x64
ARG UID=1000
ARG GID=1000
ARG UID=1001
ARG GID=1001

RUN if [[ "${RUNTIME}" = "linux-musl-x64" ]];\
then \
Expand All @@ -73,6 +73,7 @@ RUN if [[ "${RUNTIME}" = "linux-musl-x64" ]];\
else \
apt update && \
apt install -y \
adduser \
curl && \
rm -rf /var/lib/apt/lists/*; \
fi
Expand Down
24 changes: 6 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,20 +117,18 @@ KurrentDB is written in a mixture of C# and JavaScript. It can run on Windows, L

**Prerequisites**

- [.NET SDK 8.0](https://dotnet.microsoft.com/download/dotnet/8.0)
- [.NET SDK 10.0](https://dotnet.microsoft.com/download/dotnet/10.0)

Once you've installed the prerequisites for your system, you can launch a `Release` build of KurrentDB as follows:

```
dotnet build -c Release src
```

The build scripts: `build.sh` and `build.ps1` are also available for Linux and Windows respectively to simplify the build process.

To start a single node, you can then run:

```
dotnet ./src/KurrentDB/bin/Release/net8.0/KurrentDB.dll --dev --db ./tmp/data --index ./tmp/index --log ./tmp/log
dotnet ./src/KurrentDB/bin/Release/net10.0/KurrentDB.dll --dev --db ./tmp/data --index ./tmp/index --log ./tmp/log
```

### Running the tests
Expand All @@ -155,35 +153,25 @@ For instance:

```
docker build --tag mykurrentdb . \
--build-arg CONTAINER_RUNTIME=bookworm-slim \
--build-arg CONTAINER_RUNTIME=noble \
--build-arg RUNTIME=linux-x64
```

**_Note:_** Because of the [Docker issue](https://github.com/moby/buildkit/issues/1900), if you're building a Docker image on Windows, you may need to set the `DOCKER_BUILDKIT=0` environment variable. For instance, running in PowerShell:

```
$env:DOCKER_BUILDKIT=0; docker build --tag mykurrentdb . `
--build-arg CONTAINER_RUNTIME=bookworm-slim `
--build-arg CONTAINER_RUNTIME=noble `
--build-arg RUNTIME=linux-x64
```

Currently, we support the following configurations:

1. Bookworm slim:

- `CONTAINER_RUNTIME=bookworm-slim`
- `RUNTIME=linux-x64`

2. Jammy:
1. Noble:

- `CONTAINER_RUNTIME=Jammy`
- `CONTAINER_RUNTIME=noble`
- `RUNTIME=linux-x64`

3. Alpine:

- `CONTAINER_RUNTIME=alpine`
- `RUNTIME=linux-musl-x64`

You can verify the built image by running:

```
Expand Down
18 changes: 0 additions & 18 deletions build.cmd

This file was deleted.

74 changes: 0 additions & 74 deletions build.ps1

This file was deleted.

Loading
Loading