41 ms·
.NET 8
- vyrotek 3y ago.NET Conf - Day 1 https://m.youtube.com/watch?v=xEFO1sQ2bUc https://m.youtube.com/watch?v=xEFO1sQ2bUc
- shortstuffsushi 3y agoAdding spreading is neat, but curious why they chose to go the two dot route instead of three. It's been a while since I've worked in C#, so I can't remember if there are any reserved implications of three dots.
- shortrounddev2 3y agoI think 3 dots is the varargs syntax so they didn't want to collide
- rjbwork 3y agoVariable number of arguments is a keyword, params. I don't believe there's any 3 dot operator in C#. https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/ https://learn.microsoft.com/en-us/dotnet/csharp/language-ref...
- colejohnson66 3y ago[deleted; I was wrong]
- shortstuffsushi 3y agoPerhaps I'm misunderstanding you, but I think you have it backwards. It appears that the new array spread being introduced does use two dots, which could mean potential conflict with the existing range syntax?
- Metasyntactic 3y agoHi there. I'm the language designer who created the 'Collection Expression' design/specification: https://github.com/dotnet/csharplang/issues/5354 https://github.com/dotnet/csharplang/issues/5354 You can see the entire history of the proposal there. To answer you specific question, we went with `..` because that's what the language already uses for the complimentary 'pattern matching deconstruction' form for collection patterns. In other words, you can already say this today: if (x is [var start, .. var middle, .. var end]) { ... } So the construction compliment to that is: M([start, .. middle, end]) We very much want 'construction/deconstruction' to have this sort of parity, and we will be continuing to follow that principle with new features we are continuing to invest in. -- Now, if your next question is "why was .. picked for collection deconstruction?" the answer is "because we considered that the nicest syntax from the choices we considered". Syntax is often very subjective, and we often come up with numerous forms to consider (along with examining other languages to see what they've done). In this case, we simply preferred `..` over `...`. The extra dot didn't add anything for us, and we also felt like it might be an operator we might want to use in the future for other language features. -- Finally, if you're interested in these sorts of questions/designs, def participate on github.com/dotnet/csharplang. We do all our design in the open over there, and are always interested in community perspectives on these sorts of things. Thanks!
- eddtries 3y agoThis is why I love HN - info straight from the source. Thanks :)
- nmarinov 3y agoA general offtopic comment, but something that confused me when I was looking at the github issues and docs for the spread operator. I've noticed that `...` is frequently used to denote that there's some code that's omitted. However with the spread operator being added (and being `...` in other languages) and "we also felt like it might be an operator we might want to use in the future for other language features" it's a bit confusing at a glance whether that's new syntax or just a shorthand. And it makes searching difficult. I'm not sure what to replace it with, possibly a comment would be clearer: `/* code here */` or at least `/* ... */`. P.S. Collection expressions are an awesome new addition!
- xeromal 3y agoTangentially related but I was impressed with .NET recently. I was recently tasked with tackling an extremely old and proprietary video format that embedded GPS, video, audio, and several other components. The files were huge and just a mess to understand and I eventually found an old player application that was also proprietary. I decompiled it into C# and stripped the player aspect out of it leaving the code the peeled back the container and allowed me to export MP4 and other pieces. After getting to build into a console application on windows on .net 4 I think I decided to give it a go to upgrade it enough to compile AND run on linux. I upgraded 2x and then updated around 10-15 lines of code that no longer compiled. It was extremely easy considering there were 1000s of lines of code to parse this format. I finally got it running on linux and it only took about a day of full effort. Pretty crazy considering the code I was running was over 10 years old.
- RajT88 3y agoThe .Net ecosystem has a lot of great tooling, for sure. The main issue I have had is if you are trying to get into the .Net Ecosystem without spending money. There are quite good free tools, but you have to figure out what works best for you if you're used to the non-free ones. I assume instead of Reflector for the decompilation, you used DotPeek?
- guhidalg 3y agoI've used ILSpy instead of JetBrain's tools for this. If you're a real OG, you used `ildasm`.
- xeromal 3y agoI learned this from Jeffry Ritcher (https://www.amazon.com/CLR-via-C-Developer-Reference-ebook/dp/B00JDMQJKQ/ref=sr_1_1?crid=27Q9PDF0KHPV3&keywords=clr+via+c%23&qid=1699983990&s=digital-text&sprefix=clr+via+c+%2Cdigital-text%2C118&sr=1-1 https://www.amazon.com/CLR-via-C-Developer-Reference-ebook/d...) A lot of what I know about C# is from his books. I wish every language had someone of his caliber write a book about it. I think the version of the book I read was "CLR via c#" about 10 years ago
- rjbwork 3y agoThe new interceptors in C# 12 look pretty wild. Will have to play around with them. Was hoping for more of a PostSharp style AOP framework, and this doesn't appear to be that.
- owlstuffing 3y agoYeah, interceptors via source generators is hardcore power. Reminds me of project Manifold[1], the work they are doing is amazing eg. in-line type-safe SQL, GraphQL, etc. Mind bending, beyond next generation level stuff. 1. https://github.com/manifold-systems/manifold https://github.com/manifold-systems/manifold
- SideburnsOfDoom 3y agoIt seems though that you're not going to use interceptors to code up your business logic, or at least not without producing unsuitable code. What they're likely aimed at is scenarios such as DI frameworks where there is currently "serious magic" code that generates code at runtime using reflection and lightweight code gen; and in new AOT scenarios all of this has to be done ahead of time, during compilation, in source generators, without runtime reflection. In other words, if you're not writing such an DI / AOP library, it's not for you. But if you want to make a "PostSharp style AOP framework" then this is a tool for you to use when building it.
- klauserc 3y agoApart from the very welcome QoL features in C# 12 (collection literals, primary constructors for ordinary classes), the "Aspire" announcement is very interesting. Haven't decided yet if its a good thing or too much "magic".
- SideburnsOfDoom 3y agoI will start reading about it here: https://devblogs.microsoft.com/dotnet/introducing-dotnet-aspire-simplifying-cloud-native-development-with-dotnet-8/ https://devblogs.microsoft.com/dotnet/introducing-dotnet-asp...
- ryanjshaw 3y agoKind of annoyed - I just spent the past week getting familiar with Dapr, and now there's Aspire which seems to have similar goals and is also funded by Microsoft: the Azure CTO even wrote the introduction to the Dapr for .NET Developers book! And of course the Aspire announcement makes no mention of Dapr - I wonder if the teams have even spoken to each other!
- dodyg 3y agoI was asking about Orleans integration. They are working on it (https://twitter.com/reubenbond/status/1724463381686686075 https://twitter.com/reubenbond/status/1724463381686686075). I think it's a matter of time for Dapr stuff to be integrated. It is after all the first preview. edit: here's more info about Dapr and Aspire https://learn.microsoft.com/en-us/dotnet/aspire/reference/aspire-faq https://learn.microsoft.com/en-us/dotnet/aspire/reference/as...
- Rapzid 3y agoOrleans seems to have stagnated greatly past year or two. Someone raised this issue over a year ago(that only like one person was working on it and seemingly part time) and they swore it was still going to be getting resources and continuing R&D. Fast forward to now and it's only bug and compatibility fixes. A shame cause reminders v2 would have been an amazing addition.
- leeman2016 3y agoExcited about the smaller standalone binary (native AoT) .NET 8 can generate to compete with the likes of Go
- anotherhue 3y agoBetter than go, more like Graal
- geodel 3y agoHow is Graal better. Half of the Java ecosystem wouldn't work with Graal.
- svick 3y agoHalf of the .Net ecosystem doesn't work with AOT either.
- Smaug123 3y ago(Corrective upvote from me. Pretty much any use of reflection dooms you, and reflection is very common.)
- pjmlp 3y agoJust like with Native AOT, as it only supports CLI, dynamic libraries with C ABI, and a special flavour of ASP.NET with minimal APIs introduced now in .NET 8. Mono AOT supports a bit more, with focus on iOS and Android workloads. None of them work with GUI frameworks or classical ASP.NET applications.
- neonsunset 3y agoMAUI iOS can also be targeted by NativeAOT[0] and Avalonia has been proven to work with it as well. Also, you can statically link NativeAOT libraries into existing C/C++/Rust/etc. code, and you can statically link existing static libraries into NativeAOT binaries[1]. [0] https://devblogs.microsoft.com/dotnet/dotnet-8-performance-improvements-in-dotnet-maui/#nativeaot-on-ios https://devblogs.microsoft.com/dotnet/dotnet-8-performance-i... [1] https://github.com/lixinyang123/AvaloniaAOT https://github.com/lixinyang123/AvaloniaAOT [2] https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/interop#linking https://learn.microsoft.com/en-us/dotnet/core/deploying/nati...
- financltravsty 3y agoLots of very cool stuff here (AOT, Aspire, etc.). .NET has been held down by the image of its early days, but it has become a pure joy to work with recently. The improvements in tooling and ergonomics have made it a replacement for Go in our org (we migrated from .NET Core 3.1 to Go back to .NET 6 recently).
- menacingly 3y agoWith consistent, reasonable-by-default threading abstractions baked in
- bmitc 3y agoAre those new? What are they by name?
- leosanchez 3y agoI think the parent comment is talking about System.Threading.Tasks. I might be wrong though.
- bmitc 3y agoOh, I see. I was hoping for something new. I keep on hoping some sort of BEAM-like (from Erlang) process gets added to .NET.
- menacingly 3y agoI have considered the that, but I ultimately decided they work because they are a fabric of what that ecosystem _is_, not what it has. It's the same reason two sites that are more or less the same will have entirely different communities. There isn't any reason you couldn't implement the one on the other, but it's not in the core substance.
- valcron1000 3y agoIt was tried and the dotnet team decided to drop it: https://github.com/dotnet/runtimelab/issues/2398 https://github.com/dotnet/runtimelab/issues/2398
- pdntspa 3y agoI just wish its cross-platform UIs weren't such a mess. Particularly with its MVCish implementation, it was like it couldn't decide what it wanted to be. I really really wish there was a good, straightforward desktop GUI for .Net that simply worked crossplatform and wasn't a complete pain in the ass to program.
- creshal 3y agoIn their defence, does any other language have one, these days? The landscape hardly looks good, which is how electron et al. got so popular to begin with.
- collaborative 3y agoJava and Python have a few. I still don't get how electron got so popular. It's always been pretty straightforward to ship an app with a self-contained Java runtime, much the same as electron ships with v8. Java GUIs have always been worse than c++ ones, but still.. much better than electron I'd say
- creshal 3y agoAnd now try to get either to work mobile, or in a browser, or at least try to share frontend code between them. That's where electron shines, and all the "classic" frameworks really don't. QtQuick and JavaFX kiiiind of work for at least some platforms, but it's fairly rough all considered, even compared to the inelegant brute force solution of electron. I'd put my money on the competing "electron, but smarter" solutions that keep bubbling up, rather than any language-centric framework.
- pdntspa 3y agoI hate that we are completely enamored with browsers. Desktop apps and browser webapps are different platforms, with different methodologies and motifs. I hate hate hate it when a desktop app looks and acts like a web app.
- 3y ago
- EspressoGPT 3y ago.NET 5, .NET Standard, .NET Framework, .NET Core, ... now .NET 8. It's so confusing still.
- rjbwork 3y agoIf you're doing any new work as of the past 3 years, it's just .NET. It's really not that confusing unless you're updating legacy software in which case you're probably quite embedded in the ecosystem already.
- egeozcan 3y agoI wanted to create an application. So apparently among the options are .net core blazor and MAUI blazor and their non-blazor versions. So many options with very confusing marketing. Seems like others are confused too: https://www.reddit.com/r/dotnet/comments/pqi891/net_maui_app_vs_net_maui_blazor_app/ https://www.reddit.com/r/dotnet/comments/pqi891/net_maui_app...
- donny2018 3y agoStarting from .NET 6 I think, it's pretty consistent. It's just .NET 6, 7, 8, etc.
- croes 3y agoStill confusing if can't simply switch to the most recent version or have legacy software. .NET Framework 4.8 will be longer supported than .Net 5, 6, 7 and maybe 8.
- meibo 3y agoThis is not unusual in Microsoft-land. If a tech stack or version is very widely adopted or heavily revamped in a new version, they will often support that old version for a very long time - see Windows 7.
- croes 3y agoNo problem with LTS but why the confusing name scheme. Just like their Xboxes.
- jordigh 3y agoCan I get an explanation of the relationship between .NET and Mono? I have vague memory of reading somewhere that Mono or maybe just MonoBuild was completely obsolete since everything was now open source in .NET. Does Mono still have a reason to exist? Is it all incorporated into .NET now? (btw, I still don't get why it's called .NET, and I don't know if assemblies are native code or bytecode wrapped in the same binary format as .exe, where is the ".NET for hardcore open source Linux nerds" blog post?)
- deleted 3y ago[deleted]
- SideburnsOfDoom 3y ago> Does Mono still have a reason to exist? From .NET 5 onwards, the framework is cross-platform. So as a separate thing, Mono isn't usually needed or part of the mainstream any more. > I don't know if assemblies are native code or bytecode wrapped in the same binary format as .exe, Yes, they are. Either, depending on your build target.
- sander1095 3y agoMono is still used by Unity, and by .NET MAUI for their iOS and Android implementations. https://learn.microsoft.com/en-us/dotnet/maui/what-is-maui#how-net-maui-works https://learn.microsoft.com/en-us/dotnet/maui/what-is-maui#h.... For most .NET apps you can use .NET 5/6/7/8.
- neonsunset 3y agoApparently .NET MAUI iOS target can run on NativeAOT[0] instead (with better performance and smaller binary size) but I'd expect it to be a bit unstable experience for now since it's very new. [0] https://devblogs.microsoft.com/dotnet/dotnet-8-performance-improvements-in-dotnet-maui/#nativeaot-on-ios https://devblogs.microsoft.com/dotnet/dotnet-8-performance-i...
- orra 3y agoMonoVM lives on in the .NET Runtime repo. This is used for non-AOT WebAssembly (or at least it was in .NET 5).
- willsmith72 3y agoI'd love to hear from some .NET fanatics, how would you convince someone to use that ecosystem over another?
- kcb 3y agoYou can make a fully functional API service with minimal or no third party dependencies.
- SideburnsOfDoom 3y agoAs a long-term happy .NET user; you should use what makes you happy.
- willsmith72 3y agofair enough, I'm happy with what I've used through my career, but I've never been in a situation using .NET and only tried a hello world. I think you can always learn something from trying totally different tech, so i'm game to try it for a personal project, but want to hear what people love about it so I can dig in the right direction.
- SideburnsOfDoom 3y agoIDK, you can find many basic online articles about "what is C#" and "why C#". What are you comparing C# and .NET to? If you prefer loosely typed languages such as Perl, Python, JavaScript then you will find C# too picky about types. Personally, I prefer to have the discipline. If you are doing low-level stuff where a GC is out of the question then you would prefer C++ or Rust. But in the in-between space; for most web or business apps, it's very good.
- elorant 3y agoI'm not a fanatic, just a long time user. The tooling and the documentation are superb. Plus the really long term support of everything. You can still compile and run applications that were build 20 years ago, even more.
- 3y ago
- debugnik 3y agoThey link to "Announcing C# 12", but not a single mention of F# and "Announcing F# 8"[1], huh? (Edit: At least there's a link now.) It actually addresses several warts (finally span pinning!), brings some new shortands, makes the syntax more uniform and comes with some performance improvements as well. [1]: https://devblogs.microsoft.com/dotnet/announcing-fsharp-8/ https://devblogs.microsoft.com/dotnet/announcing-fsharp-8/
- neonsunset 3y agoThere is a separate post on HN :) https://news.ycombinator.com/item?id=38265390 https://news.ycombinator.com/item?id=38265390
- debugnik 3y agoNice, although I'm mostly concerned about the fact that they didn't bother to mention it. I know it isn't too popular, but it's still a part of the toolchain and not in maintenance mode like VB.NET is.
- jackfoxy 3y agoOne of the first comments on the site points out this lacuna. Leave it to the F# community to be vocal about this.
- KurtMueller 3y agoWe gotta be. We know Microsoft isn't gonna be :D.
- jackfoxy 3y agoI'm with ya. I still use F# for scripting in Linux. I've been out of enterprise computing for over 2 years.
- AndreyKarpov 3y agoWhat's new in .NET 8? - https://pvs-studio.com/en/blog/posts/csharp/1080/ https://pvs-studio.com/en/blog/posts/csharp/1080/
- at_a_remove 3y agoI haven't touched .NET in well over a decade. Last time I tried, I felt like a chimpanzee strapped into the cockpit of an F-15. Everything was "deploy!" and "endpoint for automatic upgrades" and "ENTERPRISE" and "web service." Does .NET have any "write a small program that is only a CLI?" options? Or GUI instead of web interface? Something modest.
- ejb999 3y agoYes, it has all that - console applications with no GUI, GUI interfaces on the desktop as well as web interface - has pretty much everything if you know where to look.
- leonheld 3y agoAnd Visual Studio is probably one of the best if not the best IDEs out there.
- at_a_remove 3y agoMaybe it has gotten better. I found it way too much, but then I am writing Python in Notepad++. All I saw was far too many options and an assumption that you were Writing At Enterprise Scale.
- artimaeis 3y agoIf it was a whole decade ago it's hard to state how much the ecosystem has changed since then. Since 2014 they've released Community Editions of Visual Studio, with a lot more useful features and less restrictive licensing than the old Express editions. But if you're used to writing Python in Notepad++ I'd skip VS entirely. You can install the dotnet SDK and just keep using Notepad++. Here's literally everything to write a CLI app in .NET 7: A csproj file: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net7.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> </Project> A program.cs file: Console.WriteLine("Hello, World!"); Then open a terminal and navigate to the folder you put the files in and run `dotnet build`. Or just pass in the folder in the argument `dotnet build .\demo\demo.csproj`. Voila. A CLI executable is built in the .\bin\Debug directory.
- poulpy123 3y agoI'm looking at a language to write simple executables with or without GUI and that are not too verbose or too complicated. A bit like a compiled python :) Would .NET 8 be a good challenger ? I previously didn't consider it because the compilation to binary was looking more like an experiment, and the example I've seen were quite verbose (in a java way).
- imiric 3y agoGo seems like a good fit for that.
- eddtries 3y agoYup, Go is absolutely the language for this! And almost every scripting thing you need to do is probably in the standard library, which is helpful.
- kaba0 3y agoGo is insanely verbose compared to both C# and Java due to its low expressivity, especially around its error “handling”.
- imiric 3y agoI think you're confusing Go's simplicity and explicitness with verbosity. Yes, it won't help you write the least amount of code, but this forces you to write readable code and avoid cleverness, which is almost always a good thing. Its error handling is an exhausted topic, but avoiding exceptions and being forced to decide how to handle errors where they happen is also a good thing IMO. On the other hand, I would absolutely use verbose to describe both C# and Java. They are huge languages, with many features, a complex syntax, and conventions and patterns that lead to writing a lot of hard to understand code. I'd use Go over both of them any day, especially when it comes to writing cross-platform GUI or console apps that can be quickly compiled and easily distributed. Other options to consider might be Nim or Zig, but these are not as mature as Go.
- 3y ago
- neonsunset 3y agoIt may go under the radar of many but .NET 8 comes with DynamicPGO which is now enabled by default (improved since its earlier iterations in 6 and 7, which were opt-it). It will help numerous abstraction-heavy codebases the most thanks to guarded devirtualization of interface/virtual calls, delegate inlining and branch reordering which has progressively more impact the more bloated code is.
- Capricorn2481 3y agoSeems like AOT compilation is spotty on Asp.NET apps. A fresh app made with dotnet new webapi -o aot-api did not work when run.
- baz00 3y agoKilling that startup JIT is important if you want to scale out fast.
- mdasen 3y agoI haven't completely followed the AOT stuff, but I remember hearing some stuff about some reflection-heavy code doesn't play well with AOT. But .NET has a great option in this case: ReadyToRun. Basically, it AOT compiles a ton of stuff, but also creates the byte code which can be JIT optimized at runtime. The file output is larger which is a downside, but is usually a very minute downside. ReadyToRun takes care of start up times because you have the machine code to get things running fast. Plus, the JIT can sometimes make optimizations that can't be done at compile time so you can end up with better overall performance (at the cost of a larger executable file). One of the things that is nice about .NET is that a lot of things come with sustained, multi-year effort with some good things coming every year. Microsoft is working on making more and more of .NET AOT-friendly and really upgrading the way things are done. Along the way, there are things like ReadyToRun which work really well for what most people want/need.
- neonsunset 3y agoGive 'dotnet new webapiaot' a try (you can see more details with 'dotnet new list' or 'dotnet new {template} -h' to see extra options for a specific template).
- pjmlp 3y agoASP.NET with AOT is only supported in minimal APIs, nothing else.
- codeTired 3y agoAs full stack .net dev, I am so disappointed every “who is hiring” thread. I would be game to join a trendier group of like minded devs but if you get one .net posting you are lucky, and it’s most likely rockstar. :(
- mdasen 3y agoI think an issue here is that .NET was closed source for most of its existence. It was only 2019 when Microsoft announced that the open-source .NET would be the future of .NET. That will mean that a lot of startups wouldn't have chosen it. Even now, it means that a lot of the "trendier" devs will have learned other ecosystems that have been open source for longer. It takes time to shift developers.
- davidelettieri 3y agoMicrosoft started open sourcing .net framework on 2007 with 3.5 version. The roslyn compiler is open source since 2014. I guess it's fine if people don't like .net but I think the open source part is not that relevant.
- mdasen 3y agoI think it depends on who you are. In 2007, a lot of people distrusted Microsoft and with good reason. They'd spent a lot of time extinguishing competitors. .NET Core was initially released in 2016, but Microsoft wasn't saying that .NET Core was their plan for the future. It seemed like an experiment they'd likely kill off or that it might just be a small subset of .NET. I think saying that Microsoft started open sourcing .NET in 2007 feels a bit disingenuous. Plus, wasn't it source-available under the Microsoft Reference License? Regardless, .NET was still tied to Windows unless you wanted to use Mono (which was slow and had an uncertain future). If you were someone who developed on Mac or Linux and deployed to Linux, you couldn't choose .NET in 2007 or 2014. Even in 2016, are you going to choose a brand-new ASP.NET Core? Microsoft announced .NET Core 1.0 at the Red Hat Summit in 2016 which isn't exactly an endorsement that the company thought it was the future of .NET. It seemed like Microsoft was trying to open up just enough to hook a company on .NET Core and then tell them "well actually, you should really upgrade to the real .NET Framework on Windows" when they ran into problems. That's not what happened, but Microsoft certainly hadn't committed to .NET Core in 2016. Their messaging was "well, Red Hat will offer support for this thing we made." If I didn't have a Windows PC in 2015, I couldn't do .NET development (Mono aside). If I wanted to deploy to Linux in 2015, I couldn't do .NET development (Mono aside). The open source part matters to lots of people because .NET simply wasn't a choice for those who didn't want to be beholden to Windows and licensing until recently. People definitely ignored .NET because it simply wasn't an option for them.
- oij23io 3y agoI hope Blazor will replace JavaScript some day. I am tired of learning a new JS framework/library/etc. every 2 months. Time to end this.
- kaba0 3y agoI am no JS fan, but to be honest that new framework thing has not been a thing for half a decade. React is the de facto standard, plus a few smaller frameworks are what everyone uses.
- FrustratedMonky 3y agoCurious if these improvements to F# signal that it has improved standing in the ecosystem. https://devblogs.microsoft.com/dotnet/announcing-fsharp-8/ https://devblogs.microsoft.com/dotnet/announcing-fsharp-8/
- zengid 3y agoBlazor actually looks compelling now that it has server side streaming and rendering, as well as component level interactivity. Once .NET is integrated with the new WasmGC features, it will get even better! (I don't think they mentioned WasmGC on the roadmap but I can bet anything they're going to do it).
- Dudester230602 3y agoI am slightly surprised they still did not replace it with some 80% similar "WasmUI". Which XAML framework are we on now by number?
- oaiey 3y agoYou could run Maui with canvas rendered controls. Just some coding work away. But honestly, .NET is a enterprise thingy. Normal for them is that they coexist with angular, react, and many other UI toolkits. Reuse of css and web components is the customer need, not a Silverlight.
- mdasen 3y agoYes, it really does. It means that you can use component style development while having a regular server-rendered app. If/when you want some interactivity, you can add it simply without much effort. With .NET 8's Blazor, you can just have regular pages for 90% of your stuff and just use WASM (or websockets) for 10% of stuff. The good thing here is that you get fast initial page loads and navigation and the disadvantages of WASM are a lot smaller (like larger downloads than JS since it's shipping a GC and such). .NET is following the WASM GC stuff. There are some Post-MVP features for WASM GC that will benefit .NET. Note, I'm not an expert on this and this is coming from memory. That said, .NET has some features that won't be supported well by the WASM GC MVP. There's always a trade-off between supporting more and getting stuff out into the world so that languages that might not need the features can start using it (and they can learn from the usage which will benefit everyone). For example, .NET allows more pointer stuff than a lot of GC'd languages. .NET's `unsafe` isn't used much by most .NET programmers, but it is there. I think maybe .NET has stronger guarantees around finalizers than Java (where they aren't guaranteed to ever be run). The WASM GC is just an MVP at this point, but it has landed and they're working on its future. It really feels like we're getting to that point where WASM is going to really offer a better experience in the near future. Ultimately, the timing of WASM GC wouldn't work out for the .NET 8 timetable, but I'd expect there to be a lot of work on it for .NET 9 next year. It's possible that a lot of Post-MVP stuff will land in WASM GC to help .NET and there's probably some opportunity to make Blazor work around other stuff. I think they haven't mentioned it or put it on the roadmap because they're still figuring out how it's going to go (and we'll probably know more in like February). But they are certainly looking at WASM GC and it's likely to offer a nice boost for .NET 9.
- Rapzid 3y agoSuper stoked for a few things. List expressions I'm overly excited about. Can't wait to use and of course dictionary expressions will be amazing in the future. EF Core complex types. Also it'll be fantastic when these can be used to model composite keys. The using enhancements. Hopefully I don't end up overusing tuples. If Orleans had secretly been working on reminders v2 it'd be early Christmas.
- reubenbond 3y agoWe should chat more about Reminders v2 - I want to learn more about what you'd like it to provide. Can you comment on the issue (https://github.com/dotnet/orleans/issues/7573 https://github.com/dotnet/orleans/issues/7573)? If you'd like to see some of what is in the works, please message me on Discord and we can chat more about it (https://aka.ms/orleans/discord https://aka.ms/orleans/discord)
- aryehof 3y agoBeen away from .NET for many years. In those days, business logic was largely represented as procedural code using classes for organization, manipulating recordsets or datasets. Is that still the case?
- sebazzz 3y agoYou can use micro-ORMs like Dapper, but I don't how you would do anything else than classes to represent your result sets unless you want to stuff everything in a dynamic ExpandoObject (which you can). In that case, go back to PHP or where-ever you come from ;-)
- aryehof 3y agoYou can use an object domain model to model a complex system. Something more common in say Java than .NET with its traditional “wizard” based tooling legacy. Worth looking up if all you know is recordsets and datasets.
- sebazzz 3y agoYes, active records and such. There are various ORMs in .NET that allow this.