Именно это придётся делать дотнету для выживания в мире Mythos-level моделей, которые могут всё переписать
В этом посте разберём, что нейронки могут улучшить в .NET.
Критерии отбора задач:
- очевидна полезность
- гарантированно существует решение
- требует больших трудозатрат для реализации
1. Сделать кросскомпиляцию для NativeAOT. Сейчас фактически нужно компилировать код под каждую платформу отдельно. Хочу на Windows x64 компилировать под Macbook M5 Max, а на макбуке — под легаси Windows x64
2. Pauseless GC. Сейчас GC в .NET имеет неустранимые stop-the-world паузы, которые могут длиться неограниченное время. Нейронки могут вдохновиться Java и реализовать алгоритмы сборки мусора с гарантированным временем паузы
3. JIT-оптимизации по анроллингу циклов. Вот пример, где Java в 2 раза быстрее за счёт анроллинга
4. Const generics. Возможность использовать константу как generic-параметр.
Array<int, 3> arrayOfThreeInts. Прототип фичи уже реализован, но заброшен с аргументацией, что нужны ресурсы5. Green Threads. Уже были реализованы вручную, в итоге реализация оказалась неудачной, и была отвергнута в пользу Runtime Async. Имеет смысл сделать второй заход
6. Улучшение дебаг инструментов. Например, миграция PerfView на AvaloniaUI/Blazor. Должна быть возможность анализировать
dotnet trace без использования Windows и без конвертации в флеймграфы для браузера7. Нативная поддержка int128/int256 констант в языке C# (сейчас тип есть, а константу задать нельзя, только через
Int128.Parse("..."))8. llvm backend для NativeAOT, включающийся одним параметром
--llvm9. Переписать dotnet runtime с C++ на Rust
10. Оптимизировать все методы
ToString / TryFormat. Например, DateTime имеет оптимизированный путь для форматов O/R/S и неэффективный для форматной строки@epeshkblog