Пару дней назад на GDC Unity анонсировала Alpha релиз CoreCLR в Unity.
Странно, но почему-то новость не встретила большого хайпа и бурного обсуждения.
Наверное, потому что это, пока, все еще обещание, а не фактический релиз.
Более того, новость Unity пока опубликовали в виде короткого shorts на youtube.
Для тех, кто вдруг пропустил, я написал 3 подробных поста сравнения основных отличий и преимуществ, что нам даст CoreCLR:
▫️CoreCLR в Unity — это круто
▫️CoreCLR vs Mono
▫️CoreCLR vs IL2CPP
🔸Что мы узнали нового:
1️⃣ Alpha релиз будет в версии 6.8 позже в этом году
Ну, как говорится: "Могу только поставить 🕯 и верить, что в этот раз версия и сроки не будут сдвинуты".
А если серьезно, то назначение конкретного номера версии — это уже коммитмент по срокам.
🔻Мой прогноз:
6.8 точно не LTS, а значит, это tech release. 6.4а и 6.5а (текущие tech release) были выпущены в Октябре-Декабре.
Ожидаю, что 6.8a появится с Сентября по Декабрь 2026.
2️⃣ У нас будет .NET 10 и C# 14
И тут сюрприз — ожидал максимум .NET 8, а получили сразу десятку.
Поддержка именно последней версии .NET и C# говорит о том, что маловероятно это будет fork .NET с фиксами, как это было с Mono.
Что, безусловно, радует — возможно, будем регулярно получать свежие версии .NET в Unity.
3️⃣ Прощай Domain Reload и Mono
Ну, тут лишь подтверждение моего прогноза из поста CoreCLR vs Mono:
Время Domain Reload снизится минимум на 75%.
В моём примере — с 12 секунд до 3. Останутся только вызовы Awake/Destroy и десериализация состояния сцен.
Технически, именно Domain Reload и правда уйдет в небытие как термин. Т.к. мы будем выгружать не весь домен, а лишь перекомпилированные assembly.
Потому просто жду переименования Domain в Assembly Reload (или что-то около).
Это и правда уберет примерно 75% времени, но вот избавиться от вызовов Awake/Destroy/InitializeOnLoad, а также полного сброса состояния сцены и редактора, мне кажется, что не получится.
Так что прогноз все еще валидный, ждем релиза и замеров 😊
4️⃣ Полный переход на csproj и msbuild
Тут, если не знать деталей, как компилируется проект, можно сразу задать вопрос: "И что нам это дает?".
Сейчас компиляция проекта выглядит примерно так:
Изменение в скрипте
|- Изменения видит редактор
|- Запуск рекомпиляции
|- bee_backend (
|— Чтение DAG файла (ориентированный ацикличного граф, который построила Tundra)
|— Расчёт хэшей
|— Если хэш другой
|— Вызываем msbuild на каждой ноде (по факту asmdef)
|— Domain Reload
И переход на csproj и msbuild позволит полностью уйти от bee_backend и переложить всю обязанность за рекомпиляцию на msbuild.
И это просто пушка-бомба, описать сколько всего изменится, поста не хватит, но вот несколько самых важных пунктов:
🔸 Раньше, новые фичи компилятора приходилось согласовывать с bee_backend.
Т.е. нельзя было просто включить тот же SourceGenerator. Нужно было жестко шаманить (там гайд на 14 пунктов так-то).
С CoreCLR, просто поставил атрибут и все заработало сразу. И ладно мы этому радуемся, а как рад этому весь тех. отдел Unity, которому больше не нужно придумывать, как вкорячить новую фичу .NET в движок 😇
🔸 Управление зависимостями переедет в csproj. Никаких больше NuGet for Unity и asmdef.
сsproj по объему функционала напрочь разрывает все то, что есть в asmdef.
Могу здесь ошибиться с полным избавлением от asmdef, сам ассет, скорее всего, останется для обратной совместимости, но наверняка будет сильно изменен.
🔸 Можно будет скомпилировать проект, не запуская unity.
Прикиньте, можно будет editor тесты или код без unity зависимостей взять и запустить без самой Unity.
Там целое поле для оптимизаций CI пайплайна открывается 😊
Про остальные пункты напишу в комментах, т.к. в пост тупо все не влезет.
Присоединяйтесь к тусовке и давайте вместе подумаем что еще изменится в Unity благодаря этому обновлению 👨💻
Ты знаешь, кому переслать этот пост 🫡
Ставь 👍 если уже начал обратный отсчет дней до релиза 6.8a 😅
#проект_в_разработке@UniArchitect