Каждую неделю мы получаем вопрос: "Когда уже Ivy будет готов?". Пришло время рассказать, как обстоят дела с версией 8.0, а также поделиться с вами планами по доведению до ума и релизу движка Ivy.


В восьмой версии, выходящей во втором квартале текущего года, мы хотели бы ввести возможность опционального включения предварительной версии Ivy (Ivy Preview).



Что нового в версии 8.0


Пока большая часть нашей команды с головой ушли в разработку, мы готовы представить несколько обновлений для версии 8.0, над которыми мы так усердно работаем. Стоит заметить, что некоторые возможности в окончательной версии могут отличаться от описанного ниже.


  • Дифференцированная загрузка современного JavaScript.
    CLI теперь будет создавать бандлы как устаревшего (ES5), так и современного (ES2015+) стандартов JavaScript в рамках процесса сборки, которые будут загружаться на стороне клиента в зависимости от браузера, тем самым уменьшая скорость загрузки и время до первого взаимодействия в современных браузерах. Данный функционал разработан совместно с Мэнфредом Стейером и основан на его проекте ngx-build-modern.
  • Возможность подключения Ivy Preview.
    Оцените как будет работать ваше приложение с Ivy и сообщите нам свои впечатления, чтобы мы могли внести необходимые корректировки в финальную версию.
  • Полная совместимость с предыдущими версиями роутера Angular.
    Мы добавили режим обратной совместимости, который упростит процесс обновления объемных проектов. Разработчикам будет легче перейти на Angular, разрешив отложенную загрузку частей приложений AngularJS с помощью $route API.
  • Улучшенный бандлинг Web Worker'ов.
    Веб-воркеры — отличный способ написания кода, который запускается в отдельном потоке, что ускоряет работу и улучшает параллелизуемость приложения. По многочисленным просьбам разработчиков, интерфейс командной строки будет поддерживать бандлинг веб-воркеров.
  • Отправка данных об использовании (опционально).
    Мы добавим телеметрию в интерфейс командной строки, чтобы как можно лучше понимать нужды разработчиков. С вашего согласия, мы будем собирать анонимные данные вроде используемых вами команд или скорости сборки. Чем больше у нас будет информации о том, как разработчики используют Angular, тем лучше мы сможем сделать наш продукт.
  • Обновление зависимостей.
    Как и всегда, мы обновим зависимости, в частности TypeScript, RxJS, и Node, дабы не отставать от остальной части экосистемы JavaScript.

Как будет выглядеть дальнейшее развитие Ivy?


В версии 8.0 мы хотели бы ввести возможность включения Ivy Preview. Если вы не знакомы с Ivy, посмотрите презентацию Кары об Ivy на конференции Google I/O 2018.


В предварительной версии будет возможность переключаться между Ivy и стандартным View Engine. Более подробную информацию об этом можно будет найти в последующих бета версиях. Если приложение будет собрано компилятором Ivy, то любые зависимости из Angular или других сторонних компонентов будут по-прежнему работать, благодаря прогону через компилятор совместимости. С помощью предварительной версии вы сможете обнаружить ошибки при подключении зависимостей и помочь нам доработать компилятор.


Чего можно ожидать от Ivy Preview:


  1. Сгенерированный код, который легко читать и отлаживать во время исполнения
  2. Уменьшение времени пересборки
  3. Оптимизированный размер бандла (уменьшение размера бандла уже заметно на реальных приложения, однако в будущем планируются еще некоторые улучшения по данной части)
  4. Усовершенствованная проверка типов шаблонов
  5. Полная совместимость с предыдущими версиями

Ivy пока не готов покрыть все варианты использования. Некоторые фичи, такие как i18n в Angular Universal, скорее всего, не будут поддерживаться в превью. В частности, Angular Language Service не будет работать с Ivy Preview.


Цель предварительной версии — перенос существующих приложений на движок Ivy без необходимости их переписывания. Также существует множество специфичных для Ivy API, которые мы позже добавим к своему публичному API в рамках Angular Labs и будущих релизов.


Когда всё будет готово?


В апреле 2019 мы планируем представить release candidate, а месяцем позже — релиз общедоступной версии 8.0.0, но твёрдых гарантий по поводу сроков мы дать не можем. В версии 8.0.0 Ivy Preview призвана проверить тезис о полной совместимости с предыдущими версиями Angular. Также это позволит нам разработать автоматизированные инструменты миграции, которые могут понадобиться в дальнейшем.


Мы хотели бы принудительно включить Ivy для всех в следующей мажорной версии, планируемой к выпуску этой осенью, поскольку мы нацелены на достижение полной совместимости с предыдущими версиями и поддержку существующих приложений.


Введение полной функциональности Ivy в девятой версии откроет множество возможностей для разработчиков, и это не может не радовать. Вскоре мы поделимся своими планами по введению новых фич, API, особенностями использования Ivy и разработки с его помощью.


Следите за нашими постами в блоге, твиттере и приходите на конференцию ng-conf, чтобы узнать больше о наших планах.

Комментарии (1)


  1. c_kotik
    03.04.2019 14:47

    Может кто подскажет по возможностям реализации такой задачи, как динамическая подмена (изменение) шаблона компонента? Возможно будет реализовать функцию с предстоящей предварительной Ivy Preview?
    Или для реализации стоит ждать более поздних обновлений.
    Хотелось бы избавится от костылей и JIT.