Brython 3.11 (Browser Python) projektet er blevet lanceret med implementeringen af programmeringssproget Python 3 til udførelse i webbrowseren, hvilket muliggør brugen af Python i stedet for JavaScript til udvikling af scripts til Web. Projektets kode er skrevet i Python og distribueres under BSD-licensen.
Ved at tilslutte bibliotekerne brython.js og brython_stdlib.js kan web-udviklere bruge Python til at definere logikken bag en webside på klientsiden, anvendende Python i stedet for JavaScript. For at inkludere Python-kode på siderne anvendes <script>-tagget med mime-typen “text/python”. Både indlejring af kode på siden og indlæsning af eksterne scripts (<script type="text/python" src="test.py">) er tilladt. Scriptet giver fuld adgang til DOM-elementer og -begivenheder. Udover adgang til Python-standardbiblioteket tilbydes specialiserede biblioteker til interaktion med DOM og JavaScript-biblioteker som jQuery, D3, Highcharts og Raphael. Brug af CSS-frameworks som Bootstrap3, LESS og SASS understøttes.
Kørsel af Python-kode fra blokke <script> производится через предварительную компиляцию этого кода, выполняемую обработчиком Brython после загрузки страницы. Компиляция инициируется при помощи вызова функции brython(), например через добавление «<body onload="»brython()»">». На основе Python-кода формируется представление на языке JavaScript, которое затем выполняется штатным JavaScript-движком браузера (для сравнения, проект PyPy.js предлагает для выполнения Python-кода в браузере скомпилированный в asm.js интерпретатор CPython, а Skulpt реализует интерпретатор на JavaScript).
Den reelle ydeevne af de fleste operationer i indlejrede Python-scripts på web-sider nærmer sig ydeevnen af CPython. Der opstår kun forsinkelse under kompileringstrinnet, men der gives mulighed for at indlæse forudkompileret JavaScript-kode, som anvendes til at fremskynde indlæsningen af standardbiblioteket (Brython leverer værktøjer til oprettelse af JavaScript-biblioteker baseret på Python-moduler).
Den nye udgave er bemærkelsesværdig ved at sikre kompatibilitet med CPython 3.11 og implementere størstedelen af de nye funktioner fra denne version, herunder støtte til gruppeundtagelser og udtrykket «except*», detaljeret fejlrepræsentation i diagnosemeddelelser og vedhæfting af noter til undtagelser.
Kilde: opennet.ru
