I’m afraid posts like this might become fleeting.
Performance Improvements in .NET 11 (devblogs.microsoft.com)
tiffanyh 7 hours ago
Pannoniae an hour ago
the technical parts are fresh as ever but the writing style is awful, man
Scharkenberg 29 minutes ago
lukehoban 6 hours ago
https://github.blog/ai-and-ml/generative-ai/migrating-the-gi...
adzm 2 days ago
rsalus 8 hours ago
refactor_master 7 hours ago
GiorgioG 6 hours ago
tomhow 4 hours ago
littlecranky67 3 hours ago
atraac 3 hours ago
IneffablePigeon 2 hours ago
DANmode 2 hours ago
The community is being diluted by…a different demographic!
farlight 2 hours ago
"Everything" expects you to use MSSQL, even if today there's ok official support for PostgreSQL and SQLite. Most "thought leaders" of various sorts are on Windows and expect you to use it. This pervades throughout the ecosystem.
Can't see this ever changing as it's not in MS' interest to turn other operating systems into good .NET development platforms.
aksss 2 hours ago
SQL Server is the flagship database project on the Microsoft side and that team surely has some imperative to facilitate the EF vision. It simply must be less of a priority for the PostgreSQL and SQLite maintainers to do so. Is that really a valid dig on the .net ecosystem, though?
qingcharles an hour ago
These days I just use EF with Sqlite on 99% of my projects.
ctenb 2 hours ago
momocowcow an hour ago
// Approximately what the JIT generates
if (animal?.GetType() == typeof(Dog))
{
((Dog)animal).Speak(); // devirtualized, inlinable
}
else
{
animal.Speak(); // original virtual call, hopefully rare
}Sorrel47 9 hours ago
pseudosavant 9 hours ago
d_finch 9 hours ago
AlexErrant 10 hours ago
; Arm64
--- .NET 10
+++ .NET 11
@@ -13,8 +13,6 @@
ble G_M000_IG04
G_M000_IG03:
- cmp w1, w2
- bhs G_M000_IG05
str wzr, [x0, w1, UXTW #2]
G_M000_IG04:
@@ -25,4 +23,4 @@
bl CORINFO_HELP_RNGCHKFAIL
brk #0
-; Total bytes of code 68
+; Total bytes of code 60
I know C#/F# decently well, but is there any reason to actually pull out the ol textbooks and learn wtf the above is saying?flowerlad 10 hours ago
louthy 10 hours ago
The three* letter mnemonics are usually pretty easy to decode, even if you don’t know the architecture: anything beginning with ‘B’ will be branch, so ‘ble’ is branch if less than or equal. L and S based mnemonics are unusually Load and Store from and to memory. After that it’s understanding the stack and registers and you’re pretty much good to go.
Everything in assembly is loading something from memory into registers doing something basic with those registers, like add/divide/etc and then putting the result back into memory or using the result to make a decision to jump to processing instructions from another place in memory.
Most devs won’t ever need to know this stuff, but as someone who grew up with computers that could barely do anything without grinding to a halt (8bit computer, 2mhz processor, 32kb of RAM, 20kb of which is for the screen), knowing this stuff was essential; however I still find this stuff useful today, even with my C# work.
I am a bit of a performance tuning nerd though, so…
[*] or more
keithnz 9 hours ago
jlarocco 8 hours ago
BUT what I can do is see which functions are being inlined, which values are in memory versus in registers, see if things are being boxed and unboxed a lot, see if SIMD is being used, etc.
And more importantly I can compare two versions of a function to see which one looks better by those criteria. It's not perfect, but IME it works really well for guiding optimization.
I should add that I read the book "Assembly Language: step-by-step" by Jeff Duntemann, and wrote a Tic-Tac-Toe game in assembly ages ago, so that helps a bit to understand the syntax.
(And technically that's a patch file :-)
bjoli an hour ago
That is very handy, especially when writing macros. I only have to look at assembly when I want to know about optimizations that are not visible in the source->source optimizer.
If I ever want to know if something is reified (which I never do) I can always look at the ASM.
Starlevel004 7 hours ago
apple1417 5 hours ago
drdexebtjl 5 hours ago
You should learn assembly anyway, but it won't make this part any more insightful.
bjoli 3 hours ago
pjmlp 2 days ago
Joke aside, yet another interesting read of all little improvements that go across all the runtime, and very much appreciated that they put out the effort to go through this detail level.
gerdesj 11 hours ago
I can wind it up to 15! \||/ (is there an official ASCII art four finger devil's horns)
parineum 10 hours ago
gerdesj 10 hours ago
nob end!
richiebful1 7 hours ago
qingcharles an hour ago
mlhpdx 10 hours ago
CurtHagenlocher 10 hours ago
mlhpdx 10 hours ago
rsalus 8 hours ago
qingcharles an hour ago
equasar 2 days ago
dude250711 10 hours ago
CharlieDigital 10 hours ago
Case in point: extension members from C# 14 is one that LLMs commonly stumble on and requires an explicit example. It still sometimes says that this is not valid syntax.
extension(SomeType instance)
{
public OtherType DoSomething() { ... }
}
Agents really struggle on this one for some reason.Even older releases have a few that I notice LLMs making mistakes on like use of `System.Threading.Lock` over `Object` when locking.
merb 9 hours ago
oldmanhorton 2 hours ago
bob1029 9 hours ago
Assuming you are competent with scene work and the various art pipelines, the rest of the problem is significantly easier now.
I've been using the Unity CLI to run arbitrary C# code against Unity 6 scenes without requiring domain reloads. It uses Roslyn to compile the snippet in a special Unity editor component instead of running the normal compilation pipeline.
The implications for a reasoning model are significant. Domain reloads in my projects can take 10-20 seconds. Compound across 5-10 tool calls and the difference adds up very quickly.
kristianp 11 hours ago
Annoyingly the.net blog seems to have started to use LLMs to write their copy. Using "real" twice in one paragraph - do LLMs do that? Lots of commas is a tell for me.
> This is a long one. It’s meant to be. Grab your hot beverage of choice, settle in, and let’s turn it up.
Ugh.
pestkranker 11 hours ago
kristianp 9 hours ago
nitinreddy88 7 hours ago
gerdesj 11 hours ago
I suspect it was done old school: Written by Stephen and passed to a LLM to fill in all those links and other garnish and then passed back for final polish by Stephen. That's how I do my write ups (but generally without the LLM bit for shorter efforts).
This is a long write up, and I'm sure it will have been assisted, but in the right way, and not a sloppy way.
I've dropped several commas before conjunctions, soz!
AlexErrant 10 hours ago
I, too, tire of the constant YOU WROTE THIS WITH LLMs outrage. An incredible engineer dumped an ENORMOUS amount of technical knowledge at your feet, and you're commenting on the smell? Is that all you have to contribute?
I saw this too on the Ryan Carniato/SolidJS 2.0 announcement post. A world-class engineer makes a great blog post, and all the comments can focus on are the LLM-smells. Oh well. Any reason not to learn, I guess.
wolttam 10 hours ago
y1n0 10 hours ago
tester756 10 hours ago
sltr 8 hours ago