У Flutter, платформы Google с открытым исходным кодом для создания мультиплатформенных приложений для мобильных устройств, Интернета и настольных компьютеров, вчера в Кении прошла конференция Flutter Forward. Как следует из названия, команда использовала мероприятие, чтобы продемонстрировать перспективные функции платформы, большинство из которых все еще находятся на очень ранней стадии цикла разработки.
Основной упор был сделан на значительно улучшенной графической производительности, возможности более легко встраивать код Flutter в существующие веб и мобильные приложения, а также поддержке новых архитектур, таких как Web Assembly и RISC-V. Практически все эти возможности все еще находятся в канареечных ветвях и в экспериментах, но они показывают, как Google планирует развивать платформу в ближайшие месяцы и помогают всей экосистеме с открытым исходным кодом вокруг нее понять, где может быть полезна дополнительная работа (около 40% контрибьюторов Flutter находятся за пределами Google).
Тим Снит, директор Google по продукту и UX для Flutter и языка программирования Dart, сказал, что команда создала Impeller, новую среду рендеринга для Flutter. Новая версия направлена на исправление некоторых существующих сбоев предыдущего движка, но также значительно повышает производительность — и все так же предлагает поддержку горячей перезагрузки и других основных функций Flutter.
«Это совсем другой опыт. Он такой гладкий, шелковистый», — сказал он. «По сути, мы можем создать механизм рендеринга графики, адаптированный для Flutter, а не использовать универсальный рендерер».
Чтобы обеспечить эту производительность, движок теперь включает предварительно скомпилированные шейдеры, что позволяет избежать потери кадров во время компиляции шейдеров. Также теперь есть поддержка пользовательских шейдеров и пиксельных шейдеров, что позволяет использовать ряд новых эффектов, что, в свою очередь, позволит разработчикам создавать множество новых возможностей поверх Flutter. Под всем этим скрываются низкоуровневые графические API-интерфейсы Vulkan и Metal 3D для Android и iOS. В настоящее время команда фокусирует свою работу на мобильных устройствах, хотя многие из этих новых графических возможностей уже должны работать на macOS и Windows. «Наша общая модель для Flutter — использовать его везде, где можно рисовать пиксели», — сказал Снит.
Говоря о повсеместном использовании Flutter, еще одна новая функция, которую анонсирует команда — это встраивание элементов. Для веб-разработчиков это означает, что они могут использовать эту функцию для простого встраивания контента Flutter с помощью стандартного элемента <div>. Хотя, очевидно, можно написать целое приложение с помощью Flutter и Dart, многие разработчики могут захотеть интегрировать новый код в существующие приложения, которые написаны на другом языке.
Команда также работает над новым пакетом, который обеспечивает лучшую совместимость JavaScript и Dart, а также над новым инструментом, который позволит Flutter более легко вызывать системные API на Android и iOS. У фреймворка уже была такая возможность раньше, но чтобы заставить ее работать, нужно было написать много стандартного кода.
Команда также начинает свои первые попытки компиляции Flutter в WebAssembly. Учитывая, что ажиотаж вокруг этого бинарного формата быстро растет, а поддержка браузеров и серверных инструментов совершенствуются, неудивительно, что команда Flutter также заинтересована в этой технологии. По большей части речь идет о получении дополнительной производительности от Flutter, объяснил Снит. «Dart преобразуется в скомпилированный код JavaScript, но это все еще код JavaScript, поэтому он может быть загружен и интерпретирован — и для нас WebAssembly выглядит так, как будто это даст нам некоторое ускорение загрузки, уменьшение размера и количества мегабайтов. Это кажется интересным», — сказал он. «Возможность WebAssembly — как в Интернете, так и за его пределами — стать новым переносимым универсальным языком. Мне нравится идея, что мы можем взять и использовать код на других языках в WebAssembly».
Что касается RISC-V, бесплатной архитектуры с открытым стандартом, которая также начинает набирать обороты в отрасли, Снит отметил, что это еще очень ранние дни (хотя он сказал, что ему очень понравилось играть с ClockworkPi DevTerm Kit), но он считает, что поддержка этой архитектуры может открыть новые платформы для Flutter, особенно в сфере встраиваемых систем. Поскольку команда Google Android также инвестирует в эту архитектуру, определенно стоит последить за тем, что Google делает здесь, даже несмотря на то, что количество разработчиков, специально нацеленных на эту архитектуру, безусловно, все еще довольно мало.
Наконец, команда Flutter также запускает новый интересный инструментарий для издателей новостей, основанный на успехе аналогичной инициативы, запущенной командой для разработчиков игр на конференции разработчиков Google I/O в прошлом году. Этот набор инструментов должен позволить новым издателям быстро создать новое мобильное приложение с поддержкой аутентификации, интеграции рекламы, уведомлений и многого другого — и все это без необходимости разрабатывать эти элементы с нуля.