NativeAOT for .NET APIs Is Here and It’s INSANE!

Поділитися
Вставка
  • Опубліковано 26 лис 2024

КОМЕНТАРІ • 149

  • @cricket7994
    @cricket7994 Рік тому +113

    if everyone had to learn dotnet from Nick it would be the most popular language

  • @lfbarni
    @lfbarni Рік тому +29

    I use the publish single file a lot, very useful, being able to AOT compile it certainly would make it much nicer with all the speed.

  • @sapiencesoftware3089
    @sapiencesoftware3089 Рік тому +3

    One thing to note, you can see when comparing the first api calls in postman.. you can see the first request in AOT is 7ms compared to 119ms! Sure there are some things you can do to mitigate this, but to have this right away is amazing.

  • @81NARY
    @81NARY Рік тому +12

    This is great for me! I'm building an open source end to end encrypted cloud storage and needed to build a CLI for people who prefer them (like me), and the file size of the executables were huge 😅 it's also one of those places where 10x start time improvements is quite actually visible.

  • @computer9764
    @computer9764 Рік тому +4

    I can't wait to be able to do this for real-world applications.
    There's so many benefits of AOT, from the load time improvements, to the executable size, to the not having to rely on JIT on lower-end hardware.
    Hopefully we start seeing better tooling and such for microcontrollers and RISCV that will be able to take some of the education/hacker market share from micropython.

  • @slowsigma
    @slowsigma Рік тому +1

    Great video. Well done! Very accurate info based on my experience. Last year, I created a translation tool for our dev team (translate old HTML/VBScript to HTML5/JavaScript). Started out in .NET 6 self-contained, but then I switched it to .NET 7 AOT. The use case favors AOT with devs translating pages one by one. However, I built the translator to be able to spin through folders and translate multiple pages using concurrency. Translating 1K+ files under AOT is actually slower than under MSIL.

  • @andyfitz1992
    @andyfitz1992 9 місяців тому

    I know I'm 9 months late to the party on this but I love this, I was going to write an essay long paragraph on why this is just how c# should be written where you can but I'm too old and tired now to fight with developers who live by the mantra 'to simply exist and never push boundaries is enough', let their response time SLAs with clients be the thing that looses them the contract you win.

  • @xavhow
    @xavhow Рік тому +3

    Great intro on NativeAOT.
    But so far, it's only good in startup time (serverless) and publish size (docker), like Nick said.

  • @Stabruder
    @Stabruder Рік тому +2

    Finally the feature is there. I love it!

  • @proosee
    @proosee Рік тому +27

    When I saw minimal APIs, I thought, "huh, looks a bit like nodejs" - so, now, with NativeAOT, you can have node-like experience when creating small APIs without compromising performance for whole node VM overhead, which might be pretty useful for some applications.

    • @EzequielRegaldo
      @EzequielRegaldo Рік тому +1

      Its like a Golang with steroids lol

    • @proosee
      @proosee Рік тому +2

      @@gordonfreimann not exactly, I don't want to go into details, but since C# is compiled to IL some optimization can be made at the start of application (this is why startup is relatively long), whereas if you have fully interpreted language like JS it is almost impossible. JIT is a bit of a different story and, yeah, it is quite similar.

    • @shioli3927
      @shioli3927 Рік тому

      ​@@EzequielRegaldo Wouldn´t necessarily say so, go is from the ground up built for this. So everything it can do just works without thinking about "can this be AOT compiled". The go compiler is also crazy fast at compiling. It´s not even close in that department (like seriously the go compiler is orders of magnitude faster). Runtime I don´t know... test it for your usecase I guess. For the most part I´d expect go to edge out c#. Both c# and go are much faster than my performance requirements pretty much all the time. I did not actually end up using go for anything that I want to keep alive though. But not because I think c# is hands down better, but because it would be more friction to keep it alive when I don´t use go regularly. I have to use c# at work so I can´t exactly forget the syntax. I would with go if I don´t use it for a few month. The main thing I wanted was a smaller file size for containers. So this change is gonna do exactly that.

    • @EzequielRegaldo
      @EzequielRegaldo Рік тому

      @@shioli3927 aot c# uses 30-40 mb, isnt huge difference

  • @saeedbarari2207
    @saeedbarari2207 Рік тому +7

    how is it that you have a dotnet news every day but at work my dotnet procedures haven't changed for some 2-4 years 😂

  • @charlpohlmann4237
    @charlpohlmann4237 Рік тому +16

    The more things change, the more they stay the same. If memory serves me right, MS removed the capability to compile to Native code in VB 5 (before the .NET days.) Then came along .NET with IL code, and now AOT is back again. Pretty soon I'm guessing MS will introduce a new language to the mix, and maybe they'll call it Assembler.

  • @daymaker_trading
    @daymaker_trading 26 днів тому

    This is so awesome :) Hope Microsoft will keep investing in AOT area.

  • @TristanHyams
    @TristanHyams Рік тому

    Nice to see this gaining traction. Earlier this year I created authorizers in AWS Lambda using light weight NET7 Okta/Auth0 authorizer that had incredible response times for JWT validation. Probably the fastest thing I have ever built (simple though). Took a while to figure out how I would do the JSON source generation as that was new to me and the AWS SDK contracts don't match production AWS but I got it there in the end.

    • @michaelakin766
      @michaelakin766 Рік тому

      How were you able to figure out everything to exclude and things that need to be source generated? I have an app but have not been able to work through all that yet for my aws lambda.

  • @gamedev_expert
    @gamedev_expert Рік тому +3

    Looks like il2cpp from unity engine tool. I used it a lot. What i know after years: writing aot friendly code is difficult, but possible. And it always be few steps behind jit, and also will contain some bugs. But in some scenarios it's very good

  • @Aralmo640
    @Aralmo640 Рік тому

    This is really nice for autoscaled microservices where spin up times are important.

  • @robotinike
    @robotinike Рік тому +6

    C# é uma das melhores linguagens, por anos atuei, hoje com o Java, sinto muita falta do Dotnet......

  • @daymaker_trading
    @daymaker_trading 26 днів тому

    In my tests AOT and regular "Release" mode build are exactly the same speed. Measured on for-loops that calculate simple time-series-like arithmetics.

  • @mkvoidgod
    @mkvoidgod Рік тому +2

    Do-Me-Train!
    Sorry, couldn't resist, really nice vid, thanks 👍👍👍

    • @nickchapsas
      @nickchapsas  Рік тому +2

      You are not the first to bring this up 😂

    • @phizc
      @phizc Рік тому

      @@nickchapsas is it "Dome train" as in "get that into your thick dome"?

  • @astarfullofskies8735
    @astarfullofskies8735 Рік тому +7

    Hi Nick,
    amazing video and content, I have a couple of questions and a little premise:
    In order to gain the AOT startup time advantages, you always release your application, and then verify that the startup is faster as compared to the JIT compiler.
    If the application makes use of some not supported features, for instance, the reflection-based JSON serialization, you just "discover" the error because you get an internal server error the moment the API is called.
    1) Is there anything we can do to make the application fail at startup time?
    I feel like it's ok that some features are not supported, but it's not really optimal to discover what you did wrong at Runtime, it is bad for the user experience and it violates the concept of "fail fast".
    2) You always release the application and then take measurements, is it possible to debug native code?

    • @GumbootMan
      @GumbootMan Рік тому +5

      1) Is there anything we can do to make the application fail at startup time?
      The compiler will emit warnings if you are compiling for NativeAOT and it detects code patterns that are problematic. You can actually see just such a warning in the video (it's the big block of yellow text). If you want the compilation to fail entirely, just enable the "treat warnings as errors" feature in the project file.

    • @astarfullofskies8735
      @astarfullofskies8735 Рік тому

      @@GumbootMan thank you! This is a good practice in general, also outside of the AOT scenario

    • @nocturne6320
      @nocturne6320 Рік тому

      @@GumbootMan It would be great to add some attribute that would allow you to tag an assembly as AOT compatible/incompatible, so that we could see an error at compilation. Would be great for libraries that rely on reflection, or runtime compilation.

    • @DamianPEdwards
      @DamianPEdwards Рік тому +1

      ​@@nocturne6320 that's exactly how the warning systems works. Libraries that have been annotated as trimmable and had their APIs decorated with the appropriate attributes will result in analyzer based warnings at design time & compile time when the consuming project is marked for PublishTrimmed or PublishAot

  • @coomservative
    @coomservative Рік тому +1

    this would be way more popular if there was a transpiler/scaffolding tool that found all everything that used reflection and implemented an alternative automatically or if none existed provided meaningful error explaining which calls that will fail (and line numbers of course)

  • @oleksandrdidenko1872
    @oleksandrdidenko1872 Рік тому +1

    Amazing 😻 Waiting for your example with AWS lambda web api, especially in case where your lambda should consume your own nuget packages from Code Artifact.

  • @williamliu8985
    @williamliu8985 Рік тому +6

    I hope it can finally apply to WPF/WinForm applications. It can also prevent such client programs from being decompiled in a sense.

  • @spuriousGeek
    @spuriousGeek Рік тому

    This is very interesting and exciting. Thanks for the great content!

  •  Рік тому

    This is very nice for serverless applications.

  • @antosha2224
    @antosha2224 Рік тому

    Тhanks Nick. I thick you should start making your videos on mac or linux since so many people have questions about supporting other platforms except windows

  • @gabrielilie4460
    @gabrielilie4460 Рік тому +1

    Feels like a huge improvement for the future of serverless with this greatly reduced start up time. Really looking forward on how serverless will evolve in few years.

  • @der.Schtefan
    @der.Schtefan Рік тому

    This is mainly usefull for command line programs, and IOT EDGE modules on memory constrained devices, or devices that update over slow 3G cellular.

  • @michaelnee1987
    @michaelnee1987 Рік тому

    Most benefit will be for Lambda's and functions where you want it as small as possible and native.

  • @EER0000
    @EER0000 Рік тому +1

    I've already tried it and wile inspired by Eric Sink's articles where he links C libraries directly into the native AOT app did the same with some of our own applications. It looks pretty cool, but I don't think we will be able to do this in a real-world app just yet with the existing limitations.

  • @Alex-qt9oo
    @Alex-qt9oo Рік тому +2

    what about some big projects where a lot of serializable objects? What about their memory and startup time?

  • @stephenraphael6911
    @stephenraphael6911 Рік тому +3

    hi Nick, thanks for very interesting and informational video. But let's imagine what in some minimal api project type which contains a lot of http clients and serialization flows (as example 5-6 different serialization models) . Now do we need to create each time (5-6) json serializer context(s) and register in start up? Or it not relevant to do? Thanks

  • @KieranDevvs
    @KieranDevvs Рік тому +4

    The biggest lacking feature for me is the ability to statically link native dependency assemblies. It defeats the point of single file publish and limits it to managed assemblies only.
    Also the file size output test wasn't fair, you'd need to enable trimming under link mode in the managed assembly, to have a fair comparison.

    • @nofmxc
      @nofmxc Рік тому

      You can statically link some Linux native dependencies. What native dependencies were you trying to link?

  • @mightybobka
    @mightybobka Рік тому

    gRPC support is already enough to start using this feature. Very interesting.

  • @Palladin007
    @Palladin007 Рік тому +2

    I don't need it but it's awesome!

  • @rafaelfabro4782
    @rafaelfabro4782 Рік тому +2

    Will NativeAOT improve Azure functions cold start as well?

  • @yatsuk
    @yatsuk Рік тому

    Going to use it for AWS lambdas

  • @justblue4864
    @justblue4864 Рік тому +5

    Hi Nick! You are great teacher and I enjoy every clip you make. Have you thought on making these courses (from dometrain I mean) available also on Udemy?

    • @nickchapsas
      @nickchapsas  Рік тому +6

      No this will never happen. My courses will always be exclusive to my own platform

  • @Ronaldoroot
    @Ronaldoroot Рік тому

    woww ! Thanks for the great content!

  • @T___Brown
    @T___Brown Рік тому

    Very nice. Ty! I wonder if it removes the startup cost of a new comnection. Dotnet is very slow on connections compared to native.

  • @vekzdran
    @vekzdran Рік тому

    Yeah #dotnet10 as you say, that'd be grand. :-). Great video Nick!

  • @ArnonDanon
    @ArnonDanon Рік тому

    Very cool indeed but i hope the efforrt are not in one direction only, i'm worried about compatbilty. "Tommorow" this will be the new way to do things and im still "fighting" to move from controllers accepting xml to minimal api. I like the fact the we are getting a glimps to the future but i hope not to much will be "barried" in the past (signalR for example).

  • @IagoMartinsJ
    @IagoMartinsJ Рік тому

    Enjoyed your contenT, THANKS! 2 QUESTIONS though: What are and how do you use extensions in the prompt? And why can't I save your video in my playlist? =(

  • @IpsianNeo
    @IpsianNeo 10 місяців тому

    Whcih console application tool you are using while publishing the AOT app in the demo? which is showing colorfullp path?

  • @tomlee7073
    @tomlee7073 Рік тому +2

    could this be used instead of obfuscating my code that is running on user desktops to prevent people easily decompiling using dotpeek. Also is it possible to just build a library project with AOT then reference that dll in another normally built c# winforms/console app

  • @RajaKajiev
    @RajaKajiev Рік тому +1

    "Preview" agian? Nick, can you tag videos about preview features somehow, please?

  • @jasdefer
    @jasdefer Рік тому +1

    How does this startup performance improvement scale? Is it always x times faster even for bigger/more complex applications, or always 100ms faster?

    • @nickchapsas
      @nickchapsas  Рік тому +8

      We'll take a very close look at that in the next NativeAOT video :)

    • @mariocamspam72
      @mariocamspam72 Рік тому

      @@nickchapsas Exciting!

  • @sekarcse
    @sekarcse Рік тому

    Great video, Nick! Have you considered whether Native-AOT supports Linux? It could be beneficial for containerized applications if it's faster than AKS. What are your thoughts on this?

    • @nickchapsas
      @nickchapsas  Рік тому

      It’s does support Linux and with .NET 8 it supports MacOS too

  • @Tellalca
    @Tellalca Рік тому

    How does it affect integration testing? You need to change your code in some cases as you said (reflection). How do I test that using automated testing? Can you run integration/unit tests against native code? If so, do you still need to change how you develop/run your tests (IDE tools, additional workarounds)?
    If I can't develop automated tests to make sure my code works, that is a big deal breaker for me.

    • @DamianPEdwards
      @DamianPEdwards Рік тому

      You cannot test using the usual approaches once you've published native AOT. Typically you'll write your tests as normal with the testing framework of your preference and run those tests in non-AOT mode. How you approach automated functional testing of the native AOT app output will depend a lot on the type of project it is (web UI, web API, grpc, etc.)

    • @Tellalca
      @Tellalca Рік тому

      @@DamianPEdwards Yes, that is what I was saying and it is a big no-no for me.

  • @leonardomoreno23
    @leonardomoreno23 Рік тому

    I didn't know that I needed till now 😂

  • @rick2591
    @rick2591 Рік тому +1

    This may be why azure functions are slow on applying AOT... since most functions I write opperate at a higher tier where the code is always running. I do this do to start up times... By not supporting this many people are forced to a higher tier.

  • @zhamed9587
    @zhamed9587 Рік тому

    Very cool! Which console are you using?

  • @a-s733
    @a-s733 Рік тому

    Nick, is this valid for Desktop applications as well?

  • @parcanapp1193
    @parcanapp1193 Рік тому

    Would love to see you explore bFlat

  • @DaliborHomola
    @DaliborHomola Рік тому

    Anyone know if Complete Course Bundle will also include a future courses or just the released ones?🙂 Btw. Thank you for your videos on youtube Nick.

  • @vmachacek
    @vmachacek Рік тому +1

    i think this is great match with azure func or aws lambdas where you are penalized for cold start significantly

  • @HNoriega
    @HNoriega 7 місяців тому

    Hi Nick, can i use this ApiJsonSerializerContext with Generic Types? Like

  • @ilia-tsvetkov
    @ilia-tsvetkov Рік тому +3

    What about Native AOT for Linux, as nobody hosts their apps on Windows anyways?

    • @nickchapsas
      @nickchapsas  Рік тому +3

      Sure just compile it for Linux. Both Windows, Linux and MacOS are supported for both x64 and ARM64

    • @nickchapsas
      @nickchapsas  Рік тому +3

      ​@@KimBrusevoldTV You can actually use a docker image to build it in the docker image as well. That's how AWS allows you to build NativeAOT Lambdas form windows for Linux

  • @MrKyriotetes1
    @MrKyriotetes1 Рік тому +1

    Hi, how to make my terminal looks like yours?

  • @_iPilot
    @_iPilot Рік тому

    I'm wondering why did you mention docker and native compilation in one sentence. Is docker still necessary for AOT compiled applications?!

  • @TonoNamnum
    @TonoNamnum Рік тому +1

    Why will anyone use GO after this feature is fully supported. Learning GO was amazing but using it not that much. I guess I will stick with c# for a long long time!

  • @perdonomai8060
    @perdonomai8060 Рік тому +3

    Shit, finally back to sanity? I hate packed/unpacked/self-contained/or whatever and huge nonsense compiled files! This should be the normal output as it was years ago.

  • @SunriseTequila523
    @SunriseTequila523 Рік тому

    I did not understand something: basically if you generate the code with the AOT are you basically compiling both your stuff AND the kestrel webserver together?

    • @nickchapsas
      @nickchapsas  Рік тому

      Yes, everything into that since file

  •  Рік тому

    Nice!
    We can attach the nativeaot process on visual studio for debug the code?

    • @DamianPEdwards
      @DamianPEdwards Рік тому +1

      Yes but you'll be debugging a native app at that point which is a different experience

  • @Masteroxify
    @Masteroxify Рік тому

    Nick I have other question. Is your chair good for long work on computer ? I see that it is gaming chair. I found a lot of info that only ergomonic chair can be comfortable. Thanks in advance for asnwer! 😊

    • @nickchapsas
      @nickchapsas  Рік тому +1

      I’ve been using it for 2-3 years now and I’ve been very happy with it. I sit on it for 10-18 hours a day

    • @silkfire
      @silkfire Рік тому

      I can really recommend the Herman Miller Embody if you can afford it :)

  • @DavidMerinos
    @DavidMerinos Рік тому

    How do we use this in a lambda? I had the concept that we use Api Gateway adressed to a lambda so we no longer need our lambda to be an API itself, i.e. we only need the function handler, what am I missing here?

  • @gordonfreimann
    @gordonfreimann Рік тому

    Well, we could be expert at other languages such as Go until we have full support for AoT and have these things much sooner :P

  • @feefifofum6383
    @feefifofum6383 Рік тому

    Anyone know if this would be a good idea with isolated azure function apps? Do they execute a new instance on each invocation?

  • @DennisHaney
    @DennisHaney Рік тому

    Tried to try it.... but it isn't supported in the official 8.0 docker image

  • @rogeriobarretto
    @rogeriobarretto Рік тому +1

    How about the decompile? For Native I is it still possible?

    • @nickchapsas
      @nickchapsas  Рік тому +1

      It’s native code so just like native code

    • @cubody
      @cubody Рік тому +2

      You can read assembler instructions via IDA for example, but can't get source code.

  • @MsbowElite
    @MsbowElite Рік тому

    How to do the 4:57 implementation in Visual Studio 2022 community?

  • @AEF23C20
    @AEF23C20 6 місяців тому

    this has been working for a long time
    GAC cancelled?

  • @marcoguerra6349
    @marcoguerra6349 Рік тому

    would you use this in prod?

  • @primado
    @primado Рік тому

    May I know the IDE you're using?

  • @InfinityFnatic
    @InfinityFnatic Рік тому

    Does this work with EntityFramework?

  • @der.Schtefan
    @der.Schtefan Рік тому +2

    Why is everything "INSANE" nowadays? Technology develops, things get smaller, small programs used to be small. NativeAOT does exactly what it advertises. How is that "INSANE" in all-caps? I would call it insane if it would NOT perform how it performs.

  • @shbita
    @shbita Рік тому

    how to do it in linux ? there is no visual studio there

  • @ninjaturtle11754
    @ninjaturtle11754 Місяць тому

    but, what is NativeAOT?

  • @emmanuelcruz6026
    @emmanuelcruz6026 Рік тому

    Nice

  • @ConAim
    @ConAim Рік тому

    use autocannon to compare the diff...

  • @realivanjx
    @realivanjx Рік тому

    is linux arm64 supported yet?

  • @UweKeim
    @UweKeim Рік тому

    My face after watching 5+ minutes and slowly realizing that I confused AOT with AOP.

  • @ahmedsk1608
    @ahmedsk1608 Рік тому

    What about garbage collection?

    • @nickchapsas
      @nickchapsas  Рік тому +1

      There’s still a garbage collector in there

  •  Рік тому +1

    I wouldnt use it yet, maybe in the future

  • @nzam3593
    @nzam3593 Рік тому

    👍

  • @orterves
    @orterves Рік тому +2

    Is there a command line option to build aot instead of modifying the project file?

    • @nickchapsas
      @nickchapsas  Рік тому +1

      Yeah you can always pass csproj parameters through the CLI.

    • @DamianPEdwards
      @DamianPEdwards Рік тому +8

      @@nickchapsas We don't recommend that approach as the PublishAot property set in the project file will also enable the trimming and native AOT analyzers, resulting in warnings during design-time (in the editor) when you call APIs that can cause incompatibility issues with native AOT. So yes, technically possible by passing the property value as stated, but as designed it's intended to be but in your project file.

    • @orterves
      @orterves Рік тому

      @@DamianPEdwards thanks! that's a very important clarification of the use and effect of AOT on the application design

  • @IvanRandomDude
    @IvanRandomDude Рік тому +11

    I am sure they are not magically 10x faster just by compiling them to native executable. Maybe 10x faster startup time. But overall no way. It might even get a little bit slower.

    • @drewfyre7693
      @drewfyre7693 Рік тому +13

      He says exactly that in the video. Did you even watch it?

    • @IvanRandomDude
      @IvanRandomDude Рік тому +8

      @@drewfyre7693 Yes. I was simply addressing the clickbait in the thumbnail

    • @nickchapsas
      @nickchapsas  Рік тому +2

      It’s 10 time faster startup, not runtime like mentioned in the video.

    • @phizc
      @phizc Рік тому +6

      @@nickchapsas To be fair, the thumbnail does say "10X FASTER AND SMALLER .NET APIS". 😄

    • @jeonsywork
      @jeonsywork Рік тому +5

      @@phizc Gotta get them clicks somehow

  • @LilPozzer
    @LilPozzer 6 місяців тому

    😢😢 ef core is just 😮😮😮😢😢😢 gone 😢😢

  • @Inf4mousKidGames
    @Inf4mousKidGames Рік тому

    so machine code... cool

  • @Kingside88
    @Kingside88 Рік тому +4

    I feel like Microsoft optimize thinks which are fast enough for 99,9% of the users.
    But do not care of thinks people really needs.
    For example:
    1. XSLT Parser is still in Version 1.0 and do not XSLT transformation 3.0
    2. RDLC is still not in plan for creating reports
    3. Developing Backend with minimalApi and ASP WebApi is both very nice but when it comes to front end, there is no real competition to nodeJs. Razor is old and Blazor is slow and has a small environment.

    • @warny1978
      @warny1978 Рік тому

      I think there's need for real time applications, and I do believe that such low level functionnality is a step to achieve that.
      It's been long I have not used xslt, but I remember that the xslt processor can be extended. There may be an extension library to achieve XSLT 3.0.

  • @parlor3115
    @parlor3115 Рік тому +2

    GO's dead
    Edit: Oh wait, not yet but soon

  • @cvelebele18
    @cvelebele18 Рік тому

    Blazingly fast

  • @serus164
    @serus164 Рік тому

    Without JWT support it is useless...

  • @LucasOliveira-sn8ls
    @LucasOliveira-sn8ls Рік тому

    Also, the security of an AOT app has no comparison with a JIT app

    • @nickchapsas
      @nickchapsas  Рік тому

      How do you define security here given that it’s a very broad term that could mean anything

    • @LucasOliveira-sn8ls
      @LucasOliveira-sn8ls Рік тому

      @@nickchapsas I mean, we can't revert a code generated as AOT so easily then revert a code using JIT, there is some tools where we could revert a JIT compiled application and see the code behind it...

  • @DummyFace123
    @DummyFace123 Рік тому

    I hope it includes a garbage collector in it! 😂

  • @HikingUtah
    @HikingUtah Рік тому +1

    A couple of notes.
    First, I don't know what AOT stands for and had trouble finding this online.
    Second, it has bothered me since .NET Framework 1.0. Why has Microsoft resisted being able to compile to native code? I've always thought the JIT compiler was silly. This seemed like the obvious need to me. And yet it's considered an exciting new feature now? This is insanity to me!
    Finally, why is this specific to APIs? Let us compile our code please. Not just for some tasks. Just let us compile our code!
    The thinking behind all this here is really annoying.

    • @Rein______
      @Rein______ Рік тому

      Because C# is not C++? It's designed to run in a runtime as managed code, with garbage collection... It's designed to be agnostic of processor architecture. Also it;s Microsoft's answer to Java and the JVM

    • @deathtidegame
      @deathtidegame Рік тому +2

      AOT means "Ahead Of Time", the opposite of JIT "Just In Time".

    • @HikingUtah
      @HikingUtah Рік тому

      @@GumbootMan Before C# came out, I had a background in C and C++. I'm not saying compiling to native code is trivial, but it isn't that hard. It's just that the mindset behind .NET has been going in another direction for reasons I never quite understood. And now changing that design to more easily compile to native code may be hard.

    • @GumbootMan
      @GumbootMan Рік тому

      @@HikingUtah Right, compiling to native code isn't that hard. The JIT is doing that already, you "just" need to run that as part of the compilation process. I'm saying that's not the problem, the problem is dealing with dynamic features like runtime code generation, reflection and runtime assembly loading. These features have been there since .NET 1.0 (I'm pretty sure) so it's not really a change in direction. Of course you may argue that these features are more trouble than they're worth but MS doesn't really have the luxury of ignoring them now that they are so widely used.

    • @cocoscacao6102
      @cocoscacao6102 Рік тому +1

      AOT = Awesome Optimization Tricks

  • @cocoscacao6102
    @cocoscacao6102 Рік тому

    Java is still better, because it's an awesome and beautiful island, while C# is just another programming language... :/

  • @RealCheesyBread
    @RealCheesyBread Рік тому

    Seems odd that it's not supporting reflections. There are already attributes to flag classes and class members so that they don't get trimmed, so it's odd that reflections and the default json deserialization functionality would not work.
    But of course your 3rd party libraries are gonna be hit/miss since they probably won't have their classes properly flagged.

    • @orterves
      @orterves Рік тому +1

      Seems like a good reason to be weaned off reflection and move on to source code generation

  • @zeeluck7128
    @zeeluck7128 7 місяців тому

    ERR_SSL_PROTOCOL_ERROR when created project without any change

  • @liquidcode1704
    @liquidcode1704 Рік тому

    that super sexy ohmyposh cmd line =]