645 karma · joined December 6, 2012
@richlander on GitHub
In terms of .NET performance, we've made significant improvements [1] with each release. If there was a gap between C# and other languages before, it is likely that it is much smaller now due to our efforts.
We have a balanced view on performance. We are investing in application throughput, latency, memory usage and disk footprint. Most .NET users care about multiple of those things. We also hear from users who care disproportionately about just one of them. This motivates us to care about all of these things, although throughput and memory usage is where the biggest gains are.
I have this (not very good) joke that many .NET developers until recently would not have been able to accurately describe what structs were (as opposed to classes). To a large degree this was because we used them in very narrow ways in the products. That has changed a lot in the last few years. ValueTuple, ValueTask and Span are all good examples. The culture of the .NET has changed and so is the .NET community around us. This will result in higher performance code more generally within typical .NET applications (as opposed to some theoretical outcome). If this happens, and I do believe it will, .NET will be forever changed in a pretty radical (or at least "rad") way.
[1] https://blogs.msdn.microsoft.com/dotnet/2018/04/18/performan...
> Open source doesn't mean open development and liability & commitments.
Right. We are stating up-front what we intend to achieve. We will sart with making WPF on .NET Core have parity with .NET Framework and then expand from there. We'll stick to Windows as the OS for the project.
> The purpose is to literally make the source public but they don't have resources to make a long commitment.
We are not saying that. We intend to continue working on WPF. In fact, we are talking about moving some of Microsoft's 1st-party apps to WPF on .NET Core, just like how we're moving 1st-party web sites/services to ASP.NET Core and .NET Core. Same playbook.
At the risk of repeating the content of the blog post ... The issue was reported in August, 2017 and fixed later in the same month. The fix shipped in a .NET Core patch update in September. We attempted to get the fix into .NET Framework 4.7.2 but missed that scheduling. We're now looking at making the fix in a .NET Framework patch release.
- Deployments: https://www.microsoft.com/net/customers
- Monthly engaged developers is >500k for NET Core.
- >50% of developers are on Windows.
I updated the wording to: "Much easier to manage .NET Core and ASP.NET Core versions in project files and with self-contained application publishing."
The thing that you are talking about still needs to be improved. Sadly, that didn't happen in this release.
We've already shifted to putting more effort into the .NET Core project. The last few .NET Framework releases have been pretty targeted. That trend will continue. We'll continue adding existing .NET Framework APIs on Core to make it so that devs can move more and more apps to .NET Core. That's the basic plan.
From the post:
* Desktop applications will need to target .NET Core 3 and recompile.
* Project files will need to be updated to target .NET Core 3.
* Dependencies will not need to retarget and recompile. There will be additional benefits if you update dependencies.
Windows-specific features are not really "creeping into .NET Core". WPF and Windows Forms will be components that layer on top of the .NET Core runtime. If you want to use them, you will get them. If you don't want to use them, you will not. We already have precedent for that with the Windows Compat Pack [1]. We also have significant platform-specific implementations already [2].
We think developers will like the idea that they can take advantage of OS-specific functionality. We will look for more opportunities to do that on macOS and Linux, too. If we were ever to support the macOS Cocoa API, it would layer on top of the .NET Core runtime, too.
Does that help?
[1] https://blogs.msdn.microsoft.com/dotnet/2017/11/16/announcin... [2] https://user-images.githubusercontent.com/2608468/39717763-1...
- no removal of native code. - no removal of code from the base managed assembly.
We would like to fix both and both are a large win.
> Only known arguments and options will be collected (not arbitrary strings).
We don't want your AWS secret key in this data as much as you do. We have put systematic mitigations in place to ensure that this doesn't happen.
This is a great community activity. Clearly, the community is more than capable of performance enhancements, based on the improvements they have made in the product.
If people start improving the C# benchmarks, please file an issue on dotnet/core to get feedback and some cred. We may do another blog post on that if there is some gravity around the activity.
“We expect that many of these improvements will be brought to the .NET Framework over the next few releases, too”
We still need to ensure that all the changes are behavioral compatible. Other than that, we are intending on improving the .NET Framework as well with these same performance investments.
These APIs are almost entirely coming from .NET Standard 2.0. See the jump in APIs in this table[1].
We often get asked if this is going against the promise of a light-weight development platform. Answer: not really. The new APIs are not being added to a single library, but several, including new ones. We will be updating our publishing tools to make it easier publish apps w/only the libraries you need. We are also looking at going one step further, which is publishing only the IL you need (intra-assembly optimization).
I am spending the week presenting at two Microsoft conferences in Europe (Milan, Amsterdam). I heard very similar feedback on EF yesterday in Milan. I will be passing this off to the EF team.
FYI: I'm a .NET Core team member.
[1] https://github.com/dotnet/standard/blob/master/docs/faq.md#i....
"In 1984, Digital Equipment Corporation (DEC)’s donation of $24 million provides the University of Waterloo with eight new VAX machines — on the condition that work created using the machines would be the property of DEC.
Wes Graham, a professor of computer science, stopped the shipment until the company agreed to Waterloo’s policy of leaving intellectual property in the hands of its inventors."
[0] https://uwaterloo.ca/magazine/fall-2016/feature/60-years-inn...
If we were to do it all again with the knowledge we have now, we would skip all the changes and move directly to the final plan. We're sad about the resets, both to our users and because we were not nearly as efficient as we could otherwise have been. We're now on a much more solid plan and are working to land it.