Brython 3.10 (Browser Python) er lansert, som implementerer programmeringsspråket Python 3 for kjøring i webleseren, og gjør det mulig å bruke Python i stedet for JavaScript for å utvikle skript for web. Prosjektkoden er skrevet i Python og distribueres under BSD-lisensen.
Ved å koble til bibliotekene brython.js og brython_stdlib.js kan webutviklere bruke Python til å definere logikken for nettsidene på klientsiden, og anvende Python i stedet for JavaScript. For å inkludere Python-kode på sidene brukes <script>-taggen med mime-typen «text/python». Både innbakt kode på siden og lastingen av eksterne skript (<script type="text/python" src="test.py">) er tillatt. Skriptet gir full tilgang til DOM-elementer og -hendelser. I tillegg til tilgang til Python sitt standardbibliotek tilbys spesialiserte biblioteker for interaksjon med DOM og JavaScript-biblioteker som jQuery, D3, Highcharts og Raphael. Bruk av CSS-rammeverkene Bootstrap3, LESS og SASS støttes.
Utføring av Python-kode fra blokker <script> производится через предварительную компиляцию этого кода, выполняемую обработчиком Brython после загрузки страницы. Компиляция инициируется при помощи вызова функции brython(), например через добавление «<body onload="»brython()»">». На основе Python-кода формируется представление на языке JavaScript, которое затем выполняется штатным JavaScript-движком браузера (для сравнения, проект PyPy.js предлагает для выполнения Python-кода в браузере скомпилированный в asm.js интерпретатор CPython, а Skulpt реализует интерпретатор на JavaScript).
Den endelige ytelsen i de innebygde Python-skriptene på nettsidene er nært opptil ytelsen til CPython. Forsinkelse oppstår bare i kompileringstrinnet, men dette kan løses ved å laste inn forhåndskomplisert JavaScript-kode, noe som brukes for å akselerere innlastingen av standardbiblioteket (Brython tilbyr verktøy for å lage JavaScript-biblioteker basert på Python-moduler).
Den nye utgivelsen er bemerkelsesverdig ved å sikre kompatibilitet med Python 3.10, inkludert støtte for mønster-matchingoperatorer (match/case). Den nye versjonen tilbyr også en tidlig implementering av abstrakt syntaks tre (AST, Abstract Syntax Tree) for Python-språket, som senere kan brukes til å generere JavaScript-kode fra et universelt AST.
Kilde: opennet.ru
