Представена е версия на проекта Brython 3.10 (Browser Python) с реализация на езика за програмиране Python 3, което позволява изпълнението му от страна на уеб браузъра, даваща възможност за използване на Python вместо JavaScript за разработка на скриптове за уеб. Кодът на проекта е написан на Python и се разпространява под лиценция BSD.
След като свържете библиотеките brython.js и brython_stdlib.js, уеб разработчикът може да използва Python за задаване на логиката на работа на сайта от страната на клиента, прилагаща Python вместо JavaScript. За вмъкване на Python код в страниците се използва тагът с mime типа „text/python“. Позволява се както вграждане на код в страницата, така и зареждане на външни скриптове (). От скрипта се предоставя пълен достъп до елементите и събитията на DOM. Освен достъпа до стандартната библиотека на Python, се предлагат и специализирани библиотеки за взаимодействие с DOM и JavaScript библиотеки, като jQuery, D3, Highcharts и Raphael. Поддържа се използването на CSS фреймуъркове Bootstrap3, LESS и SASS.
Изпълнение на Python код от блокове <script> производится через предварительную компиляцию этого кода, выполняемую обработчиком Brython после загрузки страницы. Компиляция инициируется при помощи вызова функции brython(), например через добавление «<body onload="»brython()»">». На основе Python-кода формируется представление на языке JavaScript, которое затем выполняется штатным JavaScript-движком браузера (для сравнения, проект PyPy.js предлагает для выполнения Python-кода в браузере скомпилированный в asm.js интерпретатор CPython, а Skulpt реализует интерпретатор на JavaScript).
Крайната производителност на повечето операции в Python скриптове, вградени в уеб страниците, е близка до производителността на CPython. Забавянето възниква само на етапа на компилация, но за неговото елиминиране се предоставя възможност за зареждане на предварително скомпилиран код в JavaScript, който се използва за ускоряване на зареждането на стандартната библиотека (Brython предлага инструменти за създаване на JavaScript библиотеки на базата на Python модули).
Новият релиз е забележителен с осигурената съвместимост с Python 3.10, включително поддръжката на оператори за съпоставяне с образец (match/case). В новата версия е предложена и начална реализация на абстрактно синтактично дърво (AST, Abstract Syntax Tree) за Python, което в последствие може да се използва за генериране на JavaScript код от универсално AST.
Източник: opennet.ru
