De release van het Brython 3.10-project (Browser Python) is gepresenteerd, met de implementatie van de programmeertaal Python 3 voor uitvoering aan de clientzijde in web-browsers, waarmee ontwikkelaars Python in plaats van JavaScript kunnen gebruiken voor scriptontwikkeling voor het web. De code van het project is geschreven in de programmeertaal Python en wordt verspreid onder de BSD-licentie.
Door de bibliotheken brython.js en brython_stdlib.js aan te sluiten, kan de webontwikkelaar de programmeertaal Python gebruiken om de logica van de website aan de clientzijde te definiëren, waarbij Python in plaats van JavaScript wordt toegepast. Voor het insluiten van Python-code op pagina's wordt de <script>-tag met mime-type 'text/python' gebruikt. Zowel het insluiten van code op de pagina als het laden van externe scripts (<script type='text/python' src='test.py'>) is toegestaan. Vanaf het script is er volledige toegang tot elementen en evenementen in de DOM. Naast toegang tot de standaardbibliotheek van Python zijn er gespecialiseerde bibliotheken beschikbaar voor interactie met de DOM en JavaScript-bibliotheken zoals jQuery, D3, Highcharts en Raphael. Het gebruik van CSS-frameworks zoals Bootstrap3, LESS en SASS wordt ondersteund.
Uitvoeren van Python-code vanuit blokken <script> производится через предварительную компиляцию этого кода, выполняемую обработчиком Brython после загрузки страницы. Компиляция инициируется при помощи вызова функции brython(), например через добавление «<body onload="»brython()»">». На основе Python-кода формируется представление на языке JavaScript, которое затем выполняется штатным JavaScript-движком браузера (для сравнения, проект PyPy.js предлагает для выполнения Python-кода в браузере скомпилированный в asm.js интерпретатор CPython, а Skulpt реализует интерпретатор на JavaScript).
De uiteindelijke prestatie van de meeste bewerkingen in de Python-scripts die in webpagina's zijn ingebed, ligt dicht bij de prestaties van CPython. Vertraging treedt alleen op tijdens de compilatiefase, maar om dit op te lossen is er de mogelijkheid om vooraf gecompileerde JavaScript-code te laden, wat wordt toegepast om de laadtijd van de standaardbibliotheek te versnellen (Brython biedt een toolkit voor het maken van JavaScript-bibliotheken op basis van Python-modules).
De nieuwe uitgave is opmerkelijk vanwege de compatibiliteit met Python 3.10, inclusief ondersteuning voor patroonmatching (match/case). In de nieuwe versie is ook een initiële implementatie van de abstracte syntaxisboom (AST, Abstract Syntax Tree) voor de programmeertaal Python aangeboden, die later kan worden gebruikt om JavaScript-code te genereren vanuit een universele AST.
Bron: opennet.ru
