Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Artifacts for .NET 9 RC1 Release #9493

Merged
merged 5 commits into from
Sep 10, 2024
Merged
Show file tree
Hide file tree
Changes from 4 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 README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ Welcome to the home of .NET [release notes](./release-notes/README.md) and [news

| Version | Release Date | Support | Latest Patch Version | End of Support |
| :-- | :-- | :-- | :-- | :-- |
| [.NET 9](release-notes/9.0/README.md) | November 12, 2024 | [STS][policies] | [9.0.0-preview.7][9.0.0-preview.7] | May 12, 2026 |
| [.NET 9](release-notes/9.0/README.md) | November 12, 2024 | [STS][policies] | [9.0.0-rc.1][9.0.0-rc.1] | May 12, 2026 |
| [.NET 8](release-notes/8.0/README.md) | [November 14, 2023](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8/) | [LTS][policies] | [8.0.8][8.0.8] | November 10, 2026 |
| [.NET 6](release-notes/6.0/README.md) | [November 8, 2021](https://devblogs.microsoft.com/dotnet/announcing-net-6/) | [LTS][policies] | [6.0.33][6.0.33] | November 12, 2024 |

[9.0.0-preview.7]: release-notes/9.0/preview/preview7/9.0.0-preview.7.md
[9.0.0-rc.1]: release-notes/9.0/preview/rc1/9.0.0-rc.1.md
[8.0.8]: release-notes/8.0/8.0.8/8.0.8.md
[6.0.33]: release-notes/6.0/6.0.33/6.0.33.md
[policies]: release-policies.md
Expand Down
1 change: 1 addition & 0 deletions release-notes/9.0/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

| Date | Release |
| :-- | :-- |
| 2024/09/10 | [9.0.0 RC 1](preview/rc1/README.md) |
| 2024/08/13 | [9.0.0 Preview 7](preview/preview7/README.md) |
| 2024/07/09 | [9.0.0 Preview 6](preview/preview6/README.md) |
| 2024/06/11 | [9.0.0 Preview 5](preview/preview5/README.md) |
Expand Down
815 changes: 815 additions & 0 deletions release-notes/9.0/preview/rc1/9.0.0-rc.1.md

Large diffs are not rendered by default.

32 changes: 32 additions & 0 deletions release-notes/9.0/preview/rc1/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# .NET 9 RC 1 - Release Notes

.NET 9 RC 1 released on September 10th, 2024. Find more information on new features released in .NET 9 RC 1 by browsing through the release notes below:

* [Libraries](./libraries.md)
* [SDK](./sdk.md)

### Feature Release Notes

* [.NET MAUI](./dotnetmaui.md)
* [ASP.NET Core](./aspnetcore.md)

## Get Started

Instructions on getting started with .NET 9 can be found in the [getting started guide](../../get-started.md). Installers and binaries for .NET 9 RC 1 can be found [here on GitHub](./9.0.0-rc.1.md).

## Announcements & Discussions

Discuss this release with the product teams on GitHub through the announcements for this release.

* [.NET 9 RC 1 Announcement](https://aka.ms/dotnet/9/rc1)

## Stay up-to-date

You can find a detailed overview of all new features in .NET 9:

* [What's new in .NET 9](https://learn.microsoft.com/dotnet/core/whats-new/dotnet-9/overview)
* [What's new in ASP.NET Core](https://learn.microsoft.com/aspnet/core/release-notes/aspnetcore-9.0)
* [What's new in .NET MAUI](https://learn.microsoft.com/dotnet/maui/whats-new/dotnet-9)
* [What's new in EF Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-9.0/whatsnew)

The latest .NET 9 release is always available at [dotnet.microsoft.com](https://dotnet.microsoft.com/download/dotnet/9.0) and [.NET 9 Releases](../../README.md).
125 changes: 125 additions & 0 deletions release-notes/9.0/preview/rc1/aspnetcore.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# ASP.NET Core updates in .NET 9 Release Candidate 1

Here's a summary of what's new in ASP.NET Core in this release:

* [Improvements to SignalR distributed tracing](#improvements-to-signalr-distributed-tracing)
* [Keep-alive timeout for WebSockets](#keep-alive-timeout-for-websockets)
* [Keyed DI in middleware](#keyed-di-in-middleware)
* [Override `InputNumber` type attribute](#override-inputnumber-type-attribute)
* [Trust the ASP.NET Core HTTPS development certificate on Linux](#trust-the-aspnet-core-https-development-certificate-on-linux)

ASP.NET Core updates in .NET 9 Release Candidate 1:

* [Release notes](https://github.com/dotnet/core/blob/main/release-notes/9.0/preview/rc1/aspnetcore.md)
* [What's new in ASP.NET Core in .NET 9](https://learn.microsoft.com/aspnet/core/release-notes/aspnetcore-9.0) documentation.
* [Breaking changes](https://docs.microsoft.com/dotnet/core/compatibility/9.0#aspnet-core)
* [Roadmap](https://aka.ms/aspnet/roadmap)

.NET 9 Release Candidate 1:

* [Discussion](https://aka.ms/dotnet/9/rc1)
* [Release notes](https://github.com/dotnet/core/blob/main/release-notes/9.0/preview/rc1/README.md)

## Improvements to SignalR distributed tracing

.NET 9 preview 6 added [initial support for SignalR distributed tracing](https://github.com/dotnet/core/blob/main/release-notes/9.0/preview/preview6/aspnetcore.md#improved-distributed-tracing-for-signalr). RC1 improves SignalR tracing with new capabilities:

* .NET SignalR client has an `ActivitySource` named "Microsoft.AspNetCore.SignalR.Client". Hub invocations now create a client span. Note that other SignalR clients, such as the JavaScript client, don't support tracing. This feature will be added to more clients in future releases.
* Hub invocations from the client to the server now support [context propagation](https://opentelemetry.io/docs/concepts/context-propagation/). Propagating the trace context enables true distributed tracing. It's now possible to see invocations flow from the client to the server and back.

Here's how these new activities look in the [.NET Aspire dashboard](https://learn.microsoft.com/dotnet/aspire/fundamentals/dashboard/overview?tabs=bash#standalone-mode):

![SignalR distributed tracing](./media/signalr-distributed-tracing.png)

## Keep-alive timeout for WebSockets

The [WebSockets middleware](https://learn.microsoft.com/aspnet/core/fundamentals/websockets#configure-the-middleware) can now be configured with keep-alive timeouts.

The keep-alive timeout aborts the WebSocket connection and throws an exception from `WebSocket.ReceiveAsync` if both of the following conditions are met:

* The server sends a ping frame using the websocket protocol.
* The client doesn't reply with a pong frame within the specified timeout.

The server automatically sends the ping frame and configures it with `KeepAliveInterval`.

The keep-alive timeout setting is useful for detecting connections that might be slow or ungracefully disconnected.

The keep-alive timeout can be configured globally for the WebSocket middleware:

```csharp
app.UseWebSockets(new WebSocketOptions { KeepAliveTimeout = TimeSpan.FromSeconds(15) });
```

Or configured per accepted WebSocket:

```csharp
app.Run(async (context) =>
{
using var webSocket = await context.WebSockets.AcceptWebSocketAsync(
new WebSocketAcceptContext { KeepAliveTimeout = TimeSpan.FromSeconds(15) });

// ...
}
```

## Keyed DI in middleware

Middleware now supports [Keyed DI](https://learn.microsoft.com/aspnet/core/fundamentals/dependency-injection#keyed-services) in both the constructor and the `Invoke`/`InvokeAsync` method.

```csharp
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddKeyedSingleton<MySingletonClass>("test");
builder.Services.AddKeyedScoped<MyScopedClass>("test2");

var app = builder.Build();
app.UseMiddleware<MyMiddleware>();
app.Run();

internal class MyMiddleware
{
private readonly RequestDelegate _next;

public MyMiddleware(RequestDelegate next, [FromKeyedServices("test")] MySingletonClass service)
{
_next = next;
}

public Task Invoke(HttpContext context, [FromKeyedServices("test2")] MyScopedClass scopedService) => _next(context);
}
```

See [Write custom ASP.NET Core middleware](https://learn.microsoft.com/aspnet/core/fundamentals/middleware/write) for more information on writing custom middleware.

Thank you [@NicoBrabers](https://github.com/NicoBrabers) for this contribution!

## Override `InputNumber` type attribute

The `InputNumber` component now supports overriding the type attribute. For example, you can specify `type="range"` to create a range input that supports model binding and form validation:

```razor
<InputNumber type="range" min="1" max="10" step="1" @bind-Value="Model.Rating" />
```

Thank you [@MattyLeslie](https://github.com/MattyLeslie) for the contribution!

## Trust the ASP.NET Core HTTPS development certificate on Linux

On Ubuntu and Fedora based Linux distros, `dotnet dev-certs https --trust` will now configure ASP.NET Core HTTPS development certificate as a trusted certificate for Chromium (Edge, Chrome, Chromium, etc) and Mozilla (Firefox, etc) browsers, as well as for use with .NET APIs (`HttpClient`, etc). Previously, `--trust` only worked on Windows and macOS. Certificate trust is applied per-user.

To establish trust in OpenSSL, the tool puts the certificate in *~/.aspnet/dev-certs/trust*, runs a simplified version of OpenSSL's c_rehash tool on the directory, and asks the user to update the `SSL_CERT_DIR` environment variable accordingly.

To establish trust in dotnet, the tool puts the certificate in the *My/Root* certificate store.

To establish trust in NSS databases (nssdb), the tool searches the home directory for Firefox profiles, *~/.pki/nssdb*, and *~/snap/chromium/current/.pki/nssdb*. For each one found, the tool adds an entry to the nssdb.

## Community contributors

Thank you contributors! ❤️

* [@martincostello](https://github.com/dotnet/aspnetcore/pulls?q=is%3Apr+is%3Amerged+milestone%3A9.0-rc1+author%3Amartincostello)
* [@NoahMoritz](https://github.com/dotnet/aspnetcore/pulls?q=is%3Apr+is%3Amerged+milestone%3A9.0-rc1+author%3ANoahMoritz)
* [@ladeak](https://github.com/dotnet/aspnetcore/pulls?q=is%3Apr+is%3Amerged+milestone%3A9.0-rc1+author%3Aladeak)
* [@voroninp](https://github.com/dotnet/aspnetcore/pulls?q=is%3Apr+is%3Amerged+milestone%3A9.0-rc1+author%3Avoroninp)
* [@MauriceChocoSwiss](https://github.com/dotnet/aspnetcore/pulls?q=is%3Apr+is%3Amerged+milestone%3A9.0-rc1+author%3AMauriceChocoSwiss)
* [@NicoBrabers](https://github.com/dotnet/aspnetcore/pulls?q=is%3Apr+is%3Amerged+milestone%3A9.0-rc1+author%3ANicoBrabers)
* [@MattyLeslie](https://github.com/dotnet/aspnetcore/pulls?q=is%3Apr+is%3Amerged+milestone%3A9.0-rc1+author%3AMattyLeslie)
47 changes: 47 additions & 0 deletions release-notes/9.0/preview/rc1/dotnetmaui.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# .NET MAUI updates in .NET 9 Release Candidate 1

Here's a summary of what's new in .NET MAUI in this release:

* [Added `HorizontalTextAlignment.Justify`](#added-horizontaltextalignmentjustify)

.NET MAUI updates in .NET 9 Release Candidate 1:

This release is focused on quality, housekeeping, and resolving issues to stabilize the impending GA release.

* [Release notes](https://github.com/dotnet/core/blob/main/release-notes/9.0/preview/rc1/dotnetmaui.md)
* [What's new in .NET MAUI in .NET 9](https://learn.microsoft.com/dotnet/maui/whats-new/dotnet-9) documentation.
* [GitHub Release](https://aka.ms/maui9rc1)

.NET 9 Release Candidate 1:

* [Discussion](https://aka.ms/dotnet/9/rc1)
* [Release notes](https://github.com/dotnet/core/blob/main/release-notes/9.0/preview/rc1/README.md)

## Added `HorizontalTextAlignment.Justify`

In addition to `Start`, `Center`, and `End` you can now use `Justify` to horizontally align your text in `Label`s.

```xml
<Label
Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. In facilisis nulla eu felis fringilla vulputate. Nullam porta eleifend lacinia. Donec at iaculis tellus."
HorizontalTextAlignment="Justify"/>
```

![justify](./media/dotnetmaui-textalign-justify.png)

## .NET for Android

This release was focused on quality improvements.

* [GitHub Release](https://github.com/xamarin/xamarin-android/releases/)

## .NET for iOS

This release was focused on quality improvements. Using this release requires the use of Xcode 15.4 for building apps.

* [GitHub Release](https://github.com/xamarin/xamarin-macios/releases/)
* [Known issues](https://github.com/xamarin/xamarin-macios/wiki/Known-issues-in-.NET9)

## Community Contributions

Thank you to our community contributors [@MartyIX](https://github.com/MartyIX), [@albyrock87](https://github.com/albyrock87), [@jpiechowiak](https://github.com/jpiechowiak), [@dhindrik](https://github.com/dhindrik), [@TommiGustafsson-HMP](https://github.com/TommiGustafsson-HMP), [@kubaflo](https://github.com/kubaflo), [@Tamilarasan-Paranthaman](https://github.com/Tamilarasan-Paranthaman), [@Vignesh-SF3580](https://github.com/Vignesh-SF3580), and [@daltzctr](https://github.com/daltzctr).
Loading
Loading