.NET 9 е версията на .NET ,която ще бъде официално готова през Ноември на .NET Conf.
Но защо да се вълнуваме и да се интересуваме от нея, когато и .NET 8 работи достатъчно добре за нашето приложение и при това .NET 9 ще се поддържа само 18 месеца?
.NET 9 идва с много подобрения и повече възможности , които са подробно описани в блога на Майкорософт, но тук ще споделя моите 3 причини:
1. Performance или по-бързо работещо приложение.
2. Намаляване рaзмера на приложението .
Интересен начин да отбележим, кои фунцкионалности не се подържат в текущата инстанция на деплойното приложение и да намалим размера му е използването на: FeatureSwitchDefinitionAttribute
C#
if (Feature.IsSupported)
Feature.Implementation();
public class Feature
{
[FeatureSwitchDefinition("Feature.IsSupported")]
internal static bool IsSupported =>AppContext.TryGetSwitch("Feature.IsSupported", out bool isEnabled) ? isEnabled : true;
internal static Implementation() => ...;
}
За да се премахне кода, който не искаме да се съпортва е нужно да го отбележим и в настройките на проекта (proj файла):
<ItemGroup>
<RuntimeHostConfigurationOption Include="Feature.IsSupported" Value="false" Trim="true" />
</ItemGroup>
А за какво ни е този атрибут? Защо просто не изтрием кода, който не е нужен?
Използването на feature switch е удобно, когато искаме да ограничим използването на даден фийчър примерно при:
- А/B тестове
- ограничение според правата на потребителите
- ограничение от deployment Конфигурацията.
Повече за feature switch може да намерете тук:
3. Разширяване възможностите на ML.NET с добавяне на нови токънайзери, които позволяват да обработваме текст по-точно:
- Добавена поддръжка на Tiktoken.
- Добавена е поддръжка на токенизатор за модела Llama.
- Добавен е токенизаторът CodeGen, който е съвместим с модели като codegen-350M-mono и phi-2.
- Добавени са претоварвания на EncodeToIds, които приемат екземпляри на Span<char> и ви позволяват да персонализирате нормализиране и претокенизиране.
- Работи в тясно сътрудничество с общностите на DeepDev TokenizerLib и SharpToken, за да покрие сценарии, обхванати от тези библиотеки.