Brython 3.10 (Browser Python) har släppts med implementering av programspråket Python 3 för att möjliggöra körning i webbläsaren, vilket gör att man kan använda Python istället för JavaScript för att utveckla webbscripts. Projektets kod är skriven i Python och distribueras under BSD-licensen.
Genom att koppla in biblioteken brython.js och brython_stdlib.js kan webbutvecklare använda Python för att definiera webbplatsens logik på klientsidan, vilket innebär att man använder Python istället för JavaScript. För att inkludera Python-kod på sidorna används taggen med mime-typen "text/python". Såväl inbyggd kod som laddning av externa skript () är tillåten. Skriptet har full åtkomst till DOM-element och händelser. Utöver åtkomst till Pythons standardbibliotek erbjuds även specialbibliotek för interaktion med DOM och JavaScript-bibliotek, såsom jQuery, D3, Highcharts och Raphael. Användning av CSS-ramverk som Bootstrap3, LESS och SASS stöds.
Körning av Python-kod från block <script> производится через предварительную компиляцию этого кода, выполняемую обработчиком Brython после загрузки страницы. Компиляция инициируется при помощи вызова функции brython(), например через добавление «<body onload="»brython()»">». На основе Python-кода формируется представление на языке JavaScript, которое затем выполняется штатным JavaScript-движком браузера (для сравнения, проект PyPy.js предлагает для выполнения Python-кода в браузере скомпилированный в asm.js интерпретатор CPython, а Skulpt реализует интерпретатор на JavaScript).
Den slutliga prestandan för de flesta operationer i inbäddade Python-skript på webbsidor är nära CPythons prestanda. Fördröjning uppstår endast under kompileringen, men det finns möjlighet att ladda förkompilerad JavaScript-kod för att påskynda laddningen av standardbiblioteket (Brython tillhandahåller verktyg för att skapa JavaScript-bibliotek baserade på Python-moduler).
Den nya utgåvan är anmärkningsvärd för att den säkerställer kompatibilitet med Python 3.10, inklusive stöd för matchningsoperatorer (match/case). Den nya versionen erbjuder också en grundläggande implementering av ett abstract syntax tree (AST) för Python, vilket kan användas för att generera JavaScript-kod från ett universellt AST i framtiden.
Källa: opennet.ru
