khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

So far, the big-ticket items for 8 seem to be:

  • C# 12 language enhancements
  • Authentication changes
  • Blaaaaaaaaaaaaaaaaaaaaaazor updates,
  • Ahead of Time compilation (AOT) and trimming
  • Roslyn, Roslyn, (analyzers)

Smaller items:

  • Rate limiting fixes/improvements
  • Linux package acquisition
  • More OTel
  • Host Improvements (Host)
  • Low-level intrinsic enhancements
  • NuGet improvements
rafaelldi,

@khalidabuhakmeh Cool! And you forget about some improvements in the Docker area 🐳

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@rafaelldi oh right, thanks for pointing that out.

jchannon,
@jchannon@hachyderm.io avatar

@khalidabuhakmeh thanks for the summary, genuinely!

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@jchannon Thanks, you’re one of 5 people that saw it :P

bitbonk,
@bitbonk@mastodon.social avatar

@khalidabuhakmeh @jchannon
My favorite feature is probably the new artifacts folder - no more bin folders scattered all over the place. https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8#simplified-output-paths

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@bitbonk @jchannon perhaps. Does the obj folder go in there too?

chethusk,
@chethusk@hachyderm.io avatar

@khalidabuhakmeh @bitbonk @jchannon yup! Give it a try :)

bitbonk,
@bitbonk@mastodon.social avatar

@khalidabuhakmeh @jchannon Yes! Cleanup for the whole solution is now as simple as deleting the artifacts folder.

tannergooding,

@khalidabuhakmeh

> Smaller items:
> - Low-level intrinsic enhancements

>.>

+66,578; -14,479 across 58 PRs (plus a few others PRs I know aren't in my tracked list)

Definitely smaller from the perspective of who will directly use it, but big from those that can indirectly benefit via the BCL or implicit improvements to existing SIMD code ;)

khalidabuhakmeh, (edited )
@khalidabuhakmeh@mastodon.social avatar

@tannergooding Bingo. While many folks will benefit from it, I think few will comprehend what the work means for them. Maybe I should have used “top-of-mind”. I was not attempting to diminish the work that went into it, apologies. :)

From my perspective, that stuff is “BIG” since it’s one step forward on the road to Wasm. I think Wasm could be the great uniter, bringing ecosystems together. The ring to rule them all.

tannergooding,

@khalidabuhakmeh

Speaking of WASM and intrinsics, WASM SIMD has been getting worked on as well and I didn't include that in my numbers.

Plus lots of general SIMD light-up for Mono JIT and Mono Interpreter (Arm64, x64, and WASM) which will help other workloads as well

Lots of big perf wins showing up in the micro-benches and translating to measurable wins in the "real world" benchmarks/apps and dedicated benchmarks like TechEmpower as well

Adding IUtf8SpanFormattable also gave some pretty nice wins in real workloads. IUtf8SpanParsable is also in the works and should do the same

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@tannergooding Personally, I don’t put a lot of stake in the TechEmpower benchmarks. Many produced results are from code that many folks wouldn’t write.

That said, I’m sure the benefits are there.

My wishlist item would be for MS to invest more in NuGet and bring a first-class Wasm dependency into MSBuild, like you would with any other package. In the process, an .NET compatible interface would be generated based on the Wasm interface manifest.

tannergooding,

@khalidabuhakmeh

> Many produced results are from code that many folks wouldn’t write.

Right, that's why I called out real world separately. For "real world", we measure things like Roslyn, Paint.NET, ILLink, bepuphysics2, Bing, etc

filipw,
@filipw@mathstodon.xyz avatar

@khalidabuhakmeh @tannergooding my question would rather be why is Mono VM getting any investments at all, instead of fully focusing on .NET Native (including for mobile targets). That would be something

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@filipw @tannergooding I believe the Mono runtime is what Blazor is based on (correct me if I’m wrong). So those are the assemblies that get pushed to the client.

scottgal,
@scottgal@hachyderm.io avatar

@khalidabuhakmeh @filipw @tannergooding Steve sanderson did a good history a few years ago https://blog.stevensanderson.com/2017/11/05/blazor-on-mono/ TL:DR: Yup based on Mono

scottgal,
@scottgal@hachyderm.io avatar

@khalidabuhakmeh @filipw @tannergooding Umm..not sure that's still true. It would be odd if it WASN'T .NET Core based now (considering .NET core started from silverlight's .net implementation IIRC)

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@scottgal @filipw @tannergooding Please hold. I can find out pretty quick (I think).

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@scottgal @filipw @tannergooding OK, Blazor is weird. Some assemblies are used from the current runtime, while some target 4.0.0 (I assume Mono). So…. Both? 🤷‍♂️

Here's a random subset of the assemblies transmitted to the client.

scottgal,
@scottgal@hachyderm.io avatar
khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@scottgal @filipw @tannergooding But to Tanner’s point, maybe this is what the transition looks like. So maybe the idea in later versions of .NET is to get rid of some of these dependencies.

WindowsBase.dll is really odd, but I guess that’s what a dependency graph does, it brings in weird dependencies.

agocke,
@agocke@hachyderm.io avatar

@khalidabuhakmeh @tannergooding Is the wasm thing actually useful? Like, what libraries are only available as WASM that you would consume in .NET?

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@agocke @tannergooding I think it’s a chicken/egg scenario tbh. But the idea that a polyglot team could artifact their ecosystem-based work (say Kotlin or Rust) into a Wasm distributable that could be hosted in a .NET process is a compelling case for using .NET.

agocke,
@agocke@hachyderm.io avatar

@khalidabuhakmeh @tannergooding Rust, maybe. Kotlin? Idk, you want to silently shove a whole JVM into your process as though it was just another NuGet package? Or worse, 10 JVMs?

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@agocke @tannergooding These are just examples.

Another might be to consume packages from other ecosystems, like an NPM package, to perform tasks not part of the .NET OSS ecosystem.

I mean, how else am I supposed to LeftPad?! (Just kidding).

On a more serious note, you could consume React/Vue/Svelte on the server in-process to render the server-side output of components as part of an request/response.

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@agocke @tannergooding The way folks are building component-based UIs today has a component of server-side rendering that does not work well with the Razor engine. Wasm extensions could provide packaged and executable versions of libraries to process the HTML on a Razor page, which would be faster than calling out to an external process to do the processing.

Just a crazy thought I’m having, maybe I’m in Lala land though.

agocke,
@agocke@hachyderm.io avatar

@khalidabuhakmeh @tannergooding Same deal, right? Now you're hosting a V8 engine or something similar? Fundamentally, if you compile to WASM you need to bundle a runtime as well. If you're Rust that's not a big deal because your runtime is tiny, but everyone GC'd is not gonna be small.

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@agocke @tannergooding Maybe this is naive on my part, but maybe you don’t need GC since these processes/calls are short-lived. Call into the dependency, get your result, destroy everything, and move on.

I believe that’s how FaaS hosts operate. They spin up your function, run it, and kill it. One provider takes a memory snapshot right after the first start is complete to reduce cold start times.

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@agocke @tannergooding I only think it’s important to distinguish between runtime and development-time dependencies. I would pay the memory and resource cost to get added functionality at compile time (I guess that is what AOT does, right?).

agocke,
@agocke@hachyderm.io avatar

@khalidabuhakmeh @tannergooding This isn't really a choice the user gets to make. If someone publishes a WASM package, they need to encode the runtime for their language because otherwise it just won't work. You can't go after the fact and pull out pieces of the runtime they packaged up.

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@agocke @tannergooding That’s a good point. 🤔

Can I just hope that packages/runtimes get smaller/faster/efficient and hardware gets bigger and more abundant? 😅

agocke,
@agocke@hachyderm.io avatar

@khalidabuhakmeh @tannergooding I think the best you can hope for is that WASM defines a GC spec which is actually usable by all the languages. I'm not sure how likely that is.

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar
chrismckee,

@khalidabuhakmeh the whole Ubuntu smol images using chisel is interesting too though that may also work with six, it all blurs into the mess of versioning differences I have to memorise back to .net 3.5 😂

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@chrismckee There is no spoon

chrismckee,
dazfuller,
@dazfuller@mstdn.social avatar

@khalidabuhakmeh does anyone else see (Authentication changes) and immediately go into a panic?

chrismckee,

@dazfuller @khalidabuhakmeh understandable after all these years of
Net core changes and the endless wiring yak shaving.
8 looks mostly to be removing the oss template option OOB and offering enhancements to the built in stuff https://github.com/dotnet/aspnetcore/issues/42158#issuecomment-1481742187

khalidabuhakmeh,
@khalidabuhakmeh@mastodon.social avatar

@chrismckee @dazfuller The SpaProxy stuff is really downplayed and a hidden gem. So is YARP.

chrismckee,
  • All
  • Subscribed
  • Moderated
  • Favorites
  • dotnet
  • DreamBathrooms
  • ngwrru68w68
  • modclub
  • magazineikmin
  • thenastyranch
  • rosin
  • khanakhh
  • InstantRegret
  • Youngstown
  • slotface
  • Durango
  • kavyap
  • mdbf
  • GTA5RPClips
  • JUstTest
  • tacticalgear
  • normalnudes
  • tester
  • osvaldo12
  • everett
  • cubers
  • ethstaker
  • anitta
  • Leos
  • provamag3
  • cisconetworking
  • megavids
  • lostlight
  • All magazines