Технологии, наука и безопасность своими словами

Технологии

Brython 3.15.0 перенёс возможности Python 3.15 в браузер

Вышел Brython 3.15.0, реализация языка Python для веб-браузеров, которую проект называет Browser Python. Смысл выпуска в том, что клиентские сценарии сайта можно описывать на Python и не переписывать ту же логику на JavaScript. Для команды, которая уже ведёт сервер и утилиты на Python, страница перестаёт быть отдельным языковым островом.

Ветка Brython 3.15 доведена до совместимости с CPython 3.15. В неё вошла большая часть возможностей этого выпуска: отложенный импорт модулей, типы frozendict и sentinel, операторы «*» и «**» для распаковки списочных включений. Разработчику, который сверяет браузерный код с обычным CPython, не нужно вычитывать отдельный список запретов по каждому из этих новшеств.

Отложенный импорт сдвигает момент, когда модуль реально подключается, а frozendict и sentinel добавляют неизменяемое отображение и особое сигнальное значение. Распаковка через «*» и «**» внутри списочных включений позволяет собирать новые коллекции из уже готовых, не расписывая элементы вручную. В браузерной ветке эти конструкции заявлены не как черновик, а как часть совместимости с CPython 3.15.

Код самого Brython написан на Python и распространяется под лицензией BSD. На страницу подключают библиотеки brython.js и brython_stdlib.js, после чего веб-разработчик задаёт логику сайта на стороне клиента на Python. JavaScript при этом не исчезает из браузера: он остаётся языком, на котором в итоге исполняется подготовленное представление.

Фрагмент помещают в тег script с mime-типом text/python. Код можно встроить прямо в разметку или загрузить внешний скрипт, указав type="text/python" и src="test.py". Отдельный серверный прогон для такого блока не нужен: сценарий живёт на странице и обращается к тому, что браузер уже показал пользователю.

Из скрипта есть полный доступ к элементам и событиям DOM. Кроме стандартной библиотеки Python предлагаются специализированные библиотеки для взаимодействия с DOM и с JavaScript-библиотеками jQuery, D3, Highcharts и Raphael. Уже собранные графики, схемы и виджеты не приходится собирать заново только потому, что логика страницы написана на Python.

Рядом поддержаны CSS-фреймворки Bootstrap3, LESS и SASS. Стили и сетка остаются в привычном фронтенд-наборе, а Python берёт на себя реакцию интерфейса на события. Клиентская часть поэтому не отрывается ни от существующей вёрстки, ни от языка, на котором команда пишет остальной код.

Исполнение кода из блоков script идёт через предварительную компиляцию. Её выполняет обработчик Brython после загрузки страницы. Компиляцию запускают вызовом функции brython(), например добавляя телу страницы onload со значением brython().

До этого вызова вставленный Python остаётся текстом разметки, а не работающей программой. На основе Python-кода формируется представление на JavaScript, и его выполняет штатный JavaScript-движок браузера. Проект не подменяет движок вкладки собственным интерпретатором: он переводит сценарий в вид, который браузер уже умеет запускать.

Для тех, кто следит за обновлениями этой платформы, в том числе за , клиентский Python оказывается завязан на тот же движок, что и обычные скрипты. Скорость большинства операций в Python-сценариях внутри веб-страниц близка к производительности CPython. Задержка появляется только на этапе компиляции.

Чтобы её убрать, можно загружать код, заранее скомпилированный в JavaScript; этим же приёмом ускоряют загрузку стандартной библиотеки, отдавая готовое представление вместо разбора модулей на каждой странице. Сам Brython даёт инструментарий, чтобы собирать JavaScript-библиотеки из модулей Python. Тяжёлые части стандартного набора и собственных модулей можно подготовить до открытия страницы и не тратить время посетителя на одну и ту же компиляцию.

Выпуск 3.15.0 поэтому одновременно подтягивает язык к CPython 3.15 и сохраняет уже известный способ сократить паузу при старте.

инновации python программирование интернет

Оригинал

Обсуждение

Комментариев пока нет.

Похожие новости