Бежать со всех ног, чтобы только оставаться на месте
Именно это придётся делать дотнету для выживания в мире 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 arrayOfThreeInts. Прототип фичи уже реализован, но заброшен с аргументацией, что нужны ресурсы
5. Green Threads. Уже были реализованы вручную, в итоге реализация оказалась неудачной, и была отвергнута в пользу Runtime Async. Имеет смысл сделать второй заход
6. Улучшение дебаг инструментов. Например, миграция PerfView на AvaloniaUI/Blazor. Должна быть возможность анализировать dotnet trace без использования Windows и без конвертации в флеймграфы для браузера
7. Нативная поддержка int128/int256 констант в языке C# (сейчас тип есть, а константу задать нельзя, только через Int128.Parse("..."))
8. llvm backend для NativeAOT, включающийся одним параметром --llvm
9. Переписать dotnet runtime с C++ на Rust
10. Оптимизировать все методы ToString / TryFormat. Например, DateTime имеет оптимизированный путь для форматов O/R/S и неэффективный для форматной строки
@epeshkblog
Именно это придётся делать дотнету для выживания в мире 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 arrayOfThreeInts. Прототип фичи уже реализован, но заброшен с аргументацией, что нужны ресурсы
5. Green Threads. Уже были реализованы вручную, в итоге реализация оказалась неудачной, и была отвергнута в пользу Runtime Async. Имеет смысл сделать второй заход
6. Улучшение дебаг инструментов. Например, миграция PerfView на AvaloniaUI/Blazor. Должна быть возможность анализировать dotnet trace без использования Windows и без конвертации в флеймграфы для браузера
7. Нативная поддержка int128/int256 констант в языке C# (сейчас тип есть, а константу задать нельзя, только через Int128.Parse("..."))
8. llvm backend для NativeAOT, включающийся одним параметром --llvm
9. Переписать dotnet runtime с C++ на Rust
10. Оптимизировать все методы ToString / TryFormat. Например, DateTime имеет оптимизированный путь для форматов O/R/S и неэффективный для форматной строки
@epeshkblog