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

[Discussion] Obsoleting Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv and Libuv packages #23409

Closed
Pilchie opened this issue Jun 26, 2020 · 5 comments
Assignees
Labels
affected-very-few This issue impacts very few customers area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions breaking-change This issue / pr will introduce a breaking change, when resolved / merged. severity-nice-to-have This label is used by an internal tool task
Milestone

Comments

@Pilchie
Copy link
Member

Pilchie commented Jun 26, 2020

Obsoleting Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv and Libuv packages

Earlier versions of ASP.NET Core used libuv as an implementation detail of how asynchronous IO was performed. In ASP.NET Core 2.0, an alternative transport was developed based on sockets. In ASP.NET Core 2.1 we switched to using the socket transport by default, but kept libuv support around for compatibility reasons.

At this point, use of the sockets transport is far more common than the libuv transport, so we're planning on obsoleting the libuv support in .NET 5.0, with a plan to remove it entirely in .NET 6.0.

As part of this, we will also plan not to add support for new OS platforms (like Windows ARM64) in the .NET 5.0 timeframe.

If you have a blocking issue that requires the use of the libuv transport, we would love to hear about it in the comments below.

@Pilchie Pilchie added discussion breaking-change This issue / pr will introduce a breaking change, when resolved / merged. labels Jun 26, 2020
@Pilchie Pilchie added this to the 5.0.0 milestone Jun 26, 2020
@Pilchie Pilchie self-assigned this Jun 26, 2020
@kamronbatman
Copy link
Contributor

While not specifically blocking, I would love to see benchmarks that show sockets perform better than libuv, specifically for linux. I will also add that libuv is convenient/performant for me since I run both raw tcp sockets and web service endpoints.

@BrennanConroy BrennanConroy modified the milestones: 5.0.0, Discussions Jul 27, 2020
@halter73
Copy link
Member

halter73 commented Aug 3, 2020

Unfortunately, we stopped tracking libuv performance on https://aka.ms/aspnet/benchmarks earlier this year, but before we did, the managed socket transport either beat or matched libuv performance in all of our benchmarked scenarios on Windows and Linux. Initially we struggled to get managed sockets to match libuv's "JSON platform" numbers, but we eventually reached parity even in that scenario.

Unfortunately, I haven't found many screenshots of benchmarks from back when we compared the two transports, but here's one from MVC plaintext scenario on Linux from about a year ago which shows the managed socket transport with a ~20% edge.

@tqinli
Copy link

tqinli commented Sep 24, 2020

What is the plan for listening on unix socket? Is it supported on .net 5 without libuv?

@halter73
Copy link
Member

Unix domain sockets are supported without libuv. They have been supported by the default socket transport since 3.0! #10560

@jkotalik jkotalik added affected-very-few This issue impacts very few customers severity-nice-to-have This label is used by an internal tool task labels Nov 13, 2020 — with ASP.NET Core Issue Ranking
@ghost
Copy link

ghost commented Jan 12, 2021

Thank you for contacting us. Due to a lack of activity on this discussion issue we're closing it in an effort to keep our backlog clean. If you believe there is a concern related to the ASP.NET Core framework, which hasn't been addressed yet, please file a new issue.

This issue will be locked after 30 more days of inactivity. If you still wish to discuss this subject after then, please create a new issue!

@ghost ghost closed this as completed Jan 12, 2021
@ghost ghost locked as resolved and limited conversation to collaborators Feb 11, 2021
@amcasey amcasey added area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions and removed area-runtime labels Aug 24, 2023
This issue was closed.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
affected-very-few This issue impacts very few customers area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions breaking-change This issue / pr will introduce a breaking change, when resolved / merged. severity-nice-to-have This label is used by an internal tool task
Projects
None yet
Development

No branches or pull requests

8 participants