Выпускаем .NET 5.0 Preview 7. Это пред-пред-последний релиз из предварительных (до перехода на RC). На этом этапе большинство функций должны быть очень близки к финальным. Встроенные функции (интринсики) одного файла и ARM64 — две функциональные области, для интеграции которых нам требуется наибольшее время, но они будут готовы к следующему Preview 8. Изучайте пост .NET 5.0 Preview 4 для лучшего понимания релиза в целом.
Новые ASP.NET Core и EF Core также уже готовы.
Вы можете загрузить .NET 5.0 Preview 7 для Windows, macOS и Linux:
Вам нужно использовать Visual Studio 2019 16.7 для работы с .NET 5.0. .NET 5.0 теперь поддерживается Visual Studio для Mac. Установите последнюю версию расширения C# для использования .NET 5.0 с Visual Studio Code.
Подробнее о Preview 7 под катом.
Стивен Тауб недавно опубликовал свой пост «Улучшения производительности в .NET 5», последний в своей серии. Он покрывает ~250 ориентированных на производительность pull-request-ов, которые содержат улучшения, которые могут даже удивить людей, внимательно следящих за производительностью .NET Core.
Мы добавили функцию юзабилити в новый JSON API. Следующие функции являются новыми в Preview 7 (больше будет и в Preview 8).
Теперь GC предоставляет подробную информацию о самом последнем сборе через метод GC.GetGCMemoryInfo, который возвращает структуру GCMemoryInfo. GCMemoryInfo предоставляет информацию о машинной памяти, heap-памяти и о самом последнем сборе, или о самом последнем сборе того типа GC, который вы укажете — эфемерная (ephemeral), полная блокировка или фоновая GC.
Наиболее вероятные варианты использования этого нового API — для логгирования/мониторинга или для указания балансировщику загрузчика, что машина должна быть выведена из ротации для запроса полного GC. Это также может быть использовано, чтобы избежать жестких ограничений контейнера за счет уменьшения размера кэшей.
RyuJIT — это генератор кода сборки для .NET, предназначенный как для чипов Intel, так и для ARM. Большая часть работы RyuJIT сосредоточена на производительности.
Пожалуйста, расскажите нам о своем опыте использования Preview 7. Еще не поздно поделиться своими отзывами. Мы приближаемся к релизу, и сейчас больше внимания уделяем качеству, поскольку в основном закончили разработку новых функций.
Новые ASP.NET Core и EF Core также уже готовы.
Вы можете загрузить .NET 5.0 Preview 7 для Windows, macOS и Linux:
Вам нужно использовать Visual Studio 2019 16.7 для работы с .NET 5.0. .NET 5.0 теперь поддерживается Visual Studio для Mac. Установите последнюю версию расширения C# для использования .NET 5.0 с Visual Studio Code.
Подробнее о Preview 7 под катом.
Производительность
Стивен Тауб недавно опубликовал свой пост «Улучшения производительности в .NET 5», последний в своей серии. Он покрывает ~250 ориентированных на производительность pull-request-ов, которые содержат улучшения, которые могут даже удивить людей, внимательно следящих за производительностью .NET Core.
System.Text.Json
Мы добавили функцию юзабилити в новый JSON API. Следующие функции являются новыми в Preview 7 (больше будет и в Preview 8).
- [Критическое изменение] Возможность игнорировать значения по умолчанию для свойств типа значения при сериализации — может использоваться для уменьшения затрат на сериализацию и передачу.
- Возможность обрабатывать циклические ссылки при сериализации — теперь ожидается, что форма API будет окончательной.
Сборка мусора (GC)
Теперь GC предоставляет подробную информацию о самом последнем сборе через метод GC.GetGCMemoryInfo, который возвращает структуру GCMemoryInfo. GCMemoryInfo предоставляет информацию о машинной памяти, heap-памяти и о самом последнем сборе, или о самом последнем сборе того типа GC, который вы укажете — эфемерная (ephemeral), полная блокировка или фоновая GC.
Наиболее вероятные варианты использования этого нового API — для логгирования/мониторинга или для указания балансировщику загрузчика, что машина должна быть выведена из ротации для запроса полного GC. Это также может быть использовано, чтобы избежать жестких ограничений контейнера за счет уменьшения размера кэшей.
RyuJIT
RyuJIT — это генератор кода сборки для .NET, предназначенный как для чипов Intel, так и для ARM. Большая часть работы RyuJIT сосредоточена на производительности.
- Основные улучшения
- Enable eliding some bounds checks — Credit @nathan-moore
- Optimize Enum.CompareTo after being rewritten in C# — performance is now at parity with previous C++ implementation.
- Improvement in register allocation for structs — Enregister multireg lclVars
- Improvements for removal of redundant zero inits
- Tail duplication improvement
- Stack based structs copy CQ fix
- Clean up a dead field assignment after removing redundant zero initializations
- Аппаратные интринсики ARM64 и оптимизация API
- Implement majority of «by element» intrinsics
- Implement fcvtxn, fcvtxn2, sqabs, sqneg, suqadd, usqadd intrinsics — #38010, #38110
- Optimize SpanHelpers.IndexOf(byte), SpanHelpers.IndexOf(char)
- Optimize SpanHelpers.IndexOfAny(byte)
- Optimize WithLower, WithUpper, Create, AsInt64, AsUInt64, AsDouble
- Optimize AsVector, AsVector128, GetUpper, As and WithElement
Заключение
Пожалуйста, расскажите нам о своем опыте использования Preview 7. Еще не поздно поделиться своими отзывами. Мы приближаемся к релизу, и сейчас больше внимания уделяем качеству, поскольку в основном закончили разработку новых функций.