Announcing .NET 8 RC1
От: Разраб  
Дата: 16.09.23 05:14
Оценка: 11 (1) +2
https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc1/

Впечатления положительные от AOT. Консольное приложение реально стало стартовать заметно быстрее. под убунтой размер бинаря 3.7МБ
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re: Announcing .NET 8 RC1
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 16.09.23 10:12
Оценка:
Здравствуйте, Разраб, Вы писали:

Р>https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc1/


Р>Впечатления положительные от AOT. Консольное приложение реально стало стартовать заметно быстрее. под убунтой размер бинаря 3.7МБ


Да AOT это хорошая штука, но в общем ограничена. Программистам нравятся деревья выражений и прочая динамическая компиляция.
Больший выхлоп я вижу для WASM https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc1/#wasmstripilafteraot-mode-on-wasm
В том числе и симбиоз AOT и интерпретатора.
и солнце б утром не вставало, когда бы не было меня
Re[2]: Announcing .NET 8 RC1
От: Разраб  
Дата: 16.09.23 11:37
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Разраб, Вы писали:


Р>>https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc1/


Р>>Впечатления положительные от AOT. Консольное приложение реально стало стартовать заметно быстрее. под убунтой размер бинаря 3.7МБ


S> Да AOT это хорошая штука, но в общем ограничена. Программистам нравятся деревья выражений и прочая динамическая компиляция.

S> Больший выхлоп я вижу для WASM https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc1/#wasmstripilafteraot-mode-on-wasm
S>В том числе и симбиоз AOT и интерпретатора.

Ну аот это более быстрый старт и экономия памяти. Значит у гоу появился конкурент.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: Announcing .NET 8 RC1
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 16.09.23 11:49
Оценка: +1
Здравствуйте, Разраб, Вы писали:

S>> Да AOT это хорошая штука, но в общем ограничена. Программистам нравятся деревья выражений и прочая динамическая компиляция.

S>> Больший выхлоп я вижу для WASM https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc1/#wasmstripilafteraot-mode-on-wasm
S>>В том числе и симбиоз AOT и интерпретатора.

Р>Ну аот это более быстрый старт и экономия памяти. Значит у гоу появился конкурент.


На самом деле есть еще фишка, это обфускация. Многие приложения на .Net не делают именно из-за того, что можно легко декомпилировать IL.
И да экономия памяти это хорошо для контейнеров. Меньше платить
https://habr.com/ru/companies/T1Holding/articles/502510/

Не стоит выделять на ВМ больше памяти, чем это требуется. Очень часто пользователи облака конфигурируют ВМ эмпирически: «Ну примерно столько-то памяти нужно отсыпать и столько ядер». При этом именно оперативная память, как правило, — самый дорогой ресурс в облаке.

и солнце б утром не вставало, когда бы не было меня
Re: Announcing .NET 8 RC1
От: nmd  
Дата: 16.09.23 12:52
Оценка: 18 (2)
Здравствуйте, Разраб, Вы писали:

Р>https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc1/


Р>Впечатления положительные от AOT. Консольное приложение реально стало стартовать заметно быстрее. под убунтой размер бинаря 3.7МБ


У ASP.NET Core в native AOT пока много ограничений, возможно к релизу исправят.
Re[2]: Announcing .NET 8 RC1
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 17.09.23 12:12
Оценка:
Здравствуйте, nmd, Вы писали:

nmd>У ASP.NET Core в native AOT пока много ограничений, возможно к релизу исправят.

Подскажите, если разбирались (я просто наскоро просмотрел и не уверен, что понял правильно) — ASP.Net MVC Native это вообще-вообще другой тип приложения будет?
Т.е., условно, просто переключив опцию компилятора мы не сможем получить Native-сборку?

Ну и в целом для остальных типов приложений аналогично?
Re[3]: Announcing .NET 8 RC1
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 17.09.23 17:15
Оценка:
Здравствуйте, Михаил Романов, Вы писали:


nmd>>У ASP.NET Core в native AOT пока много ограничений, возможно к релизу исправят.

МР>Подскажите, если разбирались (я просто наскоро просмотрел и не уверен, что понял правильно) — ASP.Net MVC Native это вообще-вообще другой тип приложения будет?
МР>Т.е., условно, просто переключив опцию компилятора мы не сможем получить Native-сборку?

МР>Ну и в целом для остальных типов приложений аналогично?


Ну надо менять сериализаторы
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/native-aot?view=aspnetcore-8.0#changes-to-support-source-generation
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/native-aot?view=aspnetcore-8.0#minimal-apis-and-json-payloads
Прописывать типы для рефлексии, ну и никаких деревьев выражений для компиляции
и солнце б утром не вставало, когда бы не было меня
Re: Announcing .NET 8 RC1
От: BlackEric http://black-eric.lj.ru
Дата: 20.09.23 15:29
Оценка: +1
Здравствуйте, Разраб, Вы писали:

Р>https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc1/


Р>Впечатления положительные от AOT. Консольное приложение реально стало стартовать заметно быстрее. под убунтой размер бинаря 3.7МБ


Reverse engineering natively-compiled .NET apps

Ага, теперь сложность реверса практически совпадает с нативными бинарниками. И обфускатор не нужен.
https://github.com/BlackEric001
Re[3]: Announcing .NET 8 RC1
От: nmd  
Дата: 28.09.23 15:31
Оценка: 90 (2)
Здравствуйте, Михаил Романов, Вы писали:

МР>Здравствуйте, nmd, Вы писали:


nmd>>У ASP.NET Core в native AOT пока много ограничений, возможно к релизу исправят.

МР>Подскажите, если разбирались (я просто наскоро просмотрел и не уверен, что понял правильн

о) — ASP.Net MVC Native это вообще-вообще другой тип приложения будет?
МР>Т.е., условно, просто переключив опцию компилятора мы не сможем получить Native-сборку?

МР>Ну и в целом для остальных типов приложений аналогично?


Посмотрел, как время было.
В SDK 8 RC1 есть шаблон AOT проекта только для Web API — webapiaot, для MVC, SPA (angular, react) шаблонов проектов нет, есть обычные шаблоны без AOT.

Попробовал собрать Native для разных проектов.

dotnet --version
8.0.100-rc.1.23455.8

mkdir test_webapiaot && cd test_webapiaot
dotnet new webapiaot && dotnet publish


Проект собрался и запустился без ошибок и предупреждений.

MVC:

mkdir test_mvc && cd test_mvc
dotnet new mvc && dotnet publish /p:PublishAot=true


Собрался с предупреждениями AOT, при запуске выдал ошибку:

  Скрытый текст
Unhandled Exception: System.TypeLoadException: The type 'Microsoft.AspNetCore.Mvc.ApplicationParts.ConsolidatedAssemblyApplicationPartFactory' cannot be found in assembly 'Microsoft.AspNetCore.Mvc.Razor, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
   at System.Reflection.Runtime.Assemblies.RuntimeAssemblyInfo.GetTypeCore(String, Boolean, Boolean) + 0x6f
   at System.Reflection.TypeNameParser.GetType(String, ReadOnlySpan`1, String) + 0xbd
   at System.Reflection.TypeNameParser.NamespaceTypeName.ResolveType(TypeNameParser&, String) + 0x39
   at System.Reflection.TypeNameParser.GetType(String, Func`2, Func`4, Boolean, Boolean, Boolean, String) + 0xb8
   at Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartFactory.GetApplicationPartFactory(Assembly) + 0x68
   at Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartManager.PopulateDefaultParts(String) + 0x93
   at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.GetApplicationPartManager(IServiceCollection, IWebHostEnvironment) + 0x57
   at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection) + 0x29
   at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddControllersCore(IServiceCollection) + 0xa
   at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddControllersWithViewsCore(IServiceCollection) + 0xa
   at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddControllersWithViews(IServiceCollection) + 0x11
   at Program.<Main>$(String[] args) + 0x1b
   at test_mvc!<BaseAddress>+0xa09400


Angular:
mkdir test_angular && cd test_angular
dotnet new angular && dotnet publish /p:PublishAot=true


Собрался с предупреждениями, запустился без ошибок.

  AOT Warnings
MSBuild version 17.8.0-preview-23418-03+0125fc9fb for .NET
  Determining projects to restore...
  Restored d:\tmp\test_mvc\test_mvc.csproj (in 385 ms).
C:\Program Files\dotnet\sdk\8.0.100-rc.1.23455.8\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInferenc
e.targets(311,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-polic
y [d:\tmp\test_mvc\test_mvc.csproj]
d:\tmp\test_mvc\Program.cs(4,1): warning IL2026: Using member 'Microsoft.Extensions.DependencyInjection.MvcServiceColle
ctionExtensions.AddControllersWithViews(IServiceCollection)' which has 'RequiresUnreferencedCodeAttribute' can break fu
nctionality when trimming application code. MVC does not currently support trimming or native AOT. https://aka.ms/aspne
t/trimming [d:\tmp\test_mvc\test_mvc.csproj]
  test_mvc -> d:\tmp\test_mvc\bin\Release\net8.0\win-x64\test_mvc.dll
  Generating native code
d:\tmp\test_mvc\Program.cs(4): Trim analysis warning IL2026: Program.<Main>$(String[]): Using member 'Microsoft.Extensi
ons.DependencyInjection.MvcServiceCollectionExtensions.AddControllersWithViews(IServiceCollection)' which has 'Requires
UnreferencedCodeAttribute' can break functionality when trimming application code. MVC does not currently support trimm
ing or native AOT. https://aka.ms/aspnet/trimming [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.Core.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Mvc.Core' produced trim warnings. For more information se
e https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.ViewFeatures.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Mvc.ViewFeatures' produced trim warnings. For mor
e information see https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Components.Endpoints.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Components.Endpoints' produced trim warnings.
 For more information see https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Components.Endpoints.dll : warning IL3053: Assembly 'Microsoft.AspNetCore.Components.Endpoints' produced AOT analysis w
arnings. [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Components.dll : warning IL3053: Assembly 'Microsoft.AspNetCore.Components' produced AOT analysis warnings. [d:\tmp\tes
t_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.Core.dll : warning IL3053: Assembly 'Microsoft.AspNetCore.Mvc.Core' produced AOT analysis warnings. [d:\tmp\test_mv
c\test_mvc.csproj]
ILC : warning IL3000: Microsoft.AspNetCore.Mvc.ApplicationParts.RelatedAssemblyAttribute.GetRelatedAssemblies(Assembly,
Boolean,Func`2<String,Boolean>,RelatedAssemblyAttribute.AssemblyLoadContextWrapper): 'System.Reflection.Assembly.Locati
on.get' always returns an empty string for assemblies embedded in a single-file app. If the path to the app directory i
s needed, consider calling 'System.AppContext.BaseDirectory'. [d:\tmp\test_mvc\test_mvc.csproj]
ILC : warning IL3000: Microsoft.AspNetCore.Mvc.ApplicationParts.RelatedAssemblyAttribute.GetRelatedAssemblies(Assembly,
Boolean,Func`2<String,Boolean>,RelatedAssemblyAttribute.AssemblyLoadContextWrapper): 'System.Reflection.Assembly.Locati
on.get' always returns an empty string for assemblies embedded in a single-file app. If the path to the app directory i
s needed, consider calling 'System.AppContext.BaseDirectory'. [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.Abstractions.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Mvc.Abstractions' produced trim warnings. For mor
e information see https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.Abstractions.dll : warning IL3053: Assembly 'Microsoft.AspNetCore.Mvc.Abstractions' produced AOT analysis warnings.
 [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.DataAnnotations.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Mvc.DataAnnotations' produced trim warnings. F
or more information see https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\runtime.win-x64.microsoft.dotnet.ilcompiler\8.0.0-rc.1.23419.4\framework\System.Linq.Expressions.dll : warning
 IL3053: Assembly 'System.Linq.Expressions' produced AOT analysis warnings. [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.Razor.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Mvc.Razor' produced trim warnings. For more information
see https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Components.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Components' produced trim warnings. For more informatio
n see https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.ViewFeatures.dll : warning IL3053: Assembly 'Microsoft.AspNetCore.Mvc.ViewFeatures' produced AOT analysis warnings.
 [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.Razor.dll : warning IL3053: Assembly 'Microsoft.AspNetCore.Mvc.Razor' produced AOT analysis warnings. [d:\tmp\test_
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.