Miss our talk at #MSBuild? The recording is up now!
Craig Loewen, @larryosterman, and I show off everything new with PowerToys, WSL, Terminal, WinGet, and Windows!
Dev on .NET Libraries team working on Hardware Intrinsics and Numerics
Miss our talk at #MSBuild? The recording is up now!
Craig Loewen, @larryosterman, and I show off everything new with PowerToys, WSL, Terminal, WinGet, and Windows!
remaking this poll since migraine brain did a bad job on phrasing
how much do you agree with the following statement:
when i find myself nostalgic for early VGA msdos video game aesthetics, i imagine games with very saturated, bright colors
Anyone interested in helping port miette to something like synless? :)
From: @fasterthanlime
https://hachyderm.io/@fasterthanlime/114348020742076001
Kitsune Tails has been nominated for Best LGBTQ Indie Game in the Gayming Awards 2025 by Gayming Mag!
The nominees are: Beloved Rapture, Caravan SandWitch, Fear the Spotlight, Kitsune Tails, Sorry We're Closed, and Tavern Talk
These are all amazing games, and we're pleased to see Kitsune Tails counted among them
kitsune tails got nominated for best LGBTQ indie game in the gayming awards, and... i'm running out of space in the steam awards box >_>
@nietras what’s the managed code you’ve written here and what framework are you targeting?
AP Diff between .NET 10 Preview 2 and Preview 3 is up: https://github.com/dotnet/core/pull/9821
2025 Pacific Coast Adult Sectional Figure Skating Championships
Adult Bronze Showcase Lyrical Pop I
Skated to Don't stop me now by Queen
2025 Pacific Coast Adult Sectional Figure Skating Championships
Adult Men's Bronze Freeskate I
Skated to Eros from Yuri on Ice
@zkat happy birthday!!!
Landed my promotion to Principal Software Engineer.
Looking forward to many more years on the .NET team and all the exciting things coming in .NET 10
@xoofx sorry to see you leaving Unity, but looking forward to seeing the amazing work I know you'll do wherever you go!
I just sent my resignation letter today at Unity.
Unfortunately I won't see the completion of the migration of Unity from Mono to CoreCLR that I first prototyped almost 8 years ago.
I'm still proud of the work accomplished, Burst initially and then the .NET tech group that I have created and led for the past 3 years.
I still have a notice period to deal with but I look forward to take a break.
I joined in as a guest for the .NET Community Standup today where I answered questions around the Tensor work happening in .NET.
Give it a watch and feel free to reach out!
If you needed something positive today, here it is.
So it's ultimately a balancing game where you want to put some things, but not everything, on the stack.
Where even if it is on the stack, you want to avoid copies for non enregistered values as it trivially add up to more than the cost that of a free
Where for heap allocations you want to avoid being wasteful with many short lived allocations, you want to amortize the cost by pooling/etc instead
Heaps (malloc, new, the .NET GC heap, etc) tend to be very efficient. Allocation isn't quite as cheap as stackallocation, but they tend to be very cheap. Inversely, "free" tends to be the thing where cost actually occurs with allocations (although this does vary from allocator to allocator).
There's also hardware level optimizations for things that are on the stack and putting too much on the stack can break these optimizations.
@ladeak Consider that a Matrix4x4 is 16 floats, therefore 64 bytes.
This is 1 cache line. If you only ever pass it by reference (ref Matrix4x4, in Matrix4x4, etc) then the same 64-bytes of memory are being touched, so you only ever take 64 bytes of cache space.
If you copy it once, then you have 128 bytes of memory that have been touched, so you've used twice the cache space. Copy it again that's 192 bytes and 3x the cache space, etc.
Large copies are where manytypical slowdowns occur
The consideration is that the indirection means no copy is made so if you access x bytes, you get x bytes in the cache. If a copy is made, such as because its pass by value, then you get x bytes to load the original data, then x bytes for the storage of the data to the new location.
Also note that ref structs aren't passed by reference, they are allowed to contain ref fields; there's a distinction. You must still explicitly pass them by reference if that's the intended behavior.
New figure skating outfit for the 2025 Pacific Coast Adult Sectionals this March