projekta izlaišana (Browser Python) ar Python 3 programmēšanas valodas ieviešanu, lai izpildītu tīmekļa pārlūkā, ļaujot izmantot Python kā JavaScript, izstrādājot skriptus tīmeklim. Projekta kods ir uzrakstīts Python valodā un izdotas ar BSD licenci. Jaunais laidums izceļas ar saderības nodrošināšanu ar un standarta bibliotēkas atjaunināšanu.
Pievienojot bibliotēkas un , tīmekļa izstrādātājs var izmantojot Python, lai noskaidrotu vietnes klienta puses loģiku, izmantojot Python kā alternatīvu JavaScript. Lai pievienotu Python kodu lapām, tiek izmantots tags ar MIME tipu „text/python”. Atļauts gan iekļaut kodu lapā, gan ielādēt ārējus skriptus (). No skripta tiek nodrošināta pilnīga piekļuve DOM elementiem un notikumiem.
Papildus piekļuvei Python standarta bibliotēkai tiek piedāvātas specializētas bibliotēkas interakcijai ar DOM un JavaScript bibliotēkām, piemēram, jQuery, D3, Highcharts un Raphael. Tiek atbalstīta CSS ietvaru Bootstrap3, LESS un SASS izmantošana.
Python koda izpilde no blokiem <script> производится через предварительную компиляцию этого когда, выполняемую обработчиком Brython после загрузки страницы. Компиляция инициируется при помощи вызова функции brython(), например через добавление «<body onload="»brython()»">». На основе Python кода формируется представление на языке JavaScript, которое затем выполняется штатным JavaScript-движком браузера (для сравнения, проект nodrošina iespēju izpildīt Python kodu pārlūkā, kas ir kompilēts asm.js, interpretatoru CPython, bet īsteno interpretu JavaScript valodā).
Galu galā, vairuma operāciju veikšanas veiktspēja Python skriptu iebūvēšana tīmekļa lapās CPython veiktspējai. Aizture rodas tikai kompilācijas posmā, taču tā ir novērsta, piedāvājot iespēju ielādēt iepriekš kompilētu JavaScript kodu, ko izmanto standarta bibliotēkas ielādes paātrināšanai (Brython veicot JavaScript bibliotēkas, kuru pamatā ir Python moduļi).
<script type=»text/python»>
import time
import math
from browser import document
import browser.timer
content = document["content"]
…
canvas = content.select_one(".clock")
if hasattr(canvas, 'getContext'):
ctx = canvas.getContext("2d")
browser.timer.set_interval(set_clock, 100)
show_hours()
else:
content.select_one('.navig_zone').html = "canvas is not supported"
</script>
Avots: opennet.lv
