Opublikowano Codon, kompilator języka Python

Startup Exaloop opublikował kod projektu Codon, który rozwija kompilator dla języka Python zdolny do generowania czystego kodu maszynowego na wyjściu, niezwiązanego ze środowiskiem wykonawczym Pythona. Kompilator jest rozwijany przez autorów języka Python-podobnego Seq i jest pozycjonowany jako kontynuacja jego rozwoju. Projekt oferuje także własne środowisko uruchomieniowe dla plików wykonywalnych oraz bibliotekę funkcji, która zastępuje wywołania bibliotek w Pythonie. Kody źródłowe kompilatora, środowiska wykonawczego i biblioteki standardowej są pisane przy użyciu C++ (przy użyciu rozwiązań z LLVM) i Pythona i są rozpowszechniane na podstawie licencji BSL (Licencja Business Source).

Licencja BSL została zaproponowana przez współzałożycieli MySQL jako alternatywa dla modelu Open Core. Istotą BSL jest to, że kod o zaawansowanej funkcjonalności jest początkowo dostępny do modyfikacji, jednak przez pewien czas można z niego korzystać bezpłatnie jedynie po spełnieniu dodatkowych warunków, których obejście wymaga zakupu licencji komercyjnej. Dodatkowe warunki licencyjne projektu Codon wymagają przeniesienia kodu na licencję Apache 2.0 po 3 latach (1 listopada 2025). Do tego czasu licencja dopuszcza kopiowanie, rozpowszechnianie i modyfikowanie pod warunkiem wykorzystania w celach niekomercyjnych.

Wydajność wyjściowych plików wykonywalnych jest przedstawiana jako zbliżona do programów napisanych w języku C. W porównaniu do używania CPythona, wzrost wydajności podczas kompilacji przy użyciu Codon szacuje się na 10-100 razy w przypadku wykonania jednowątkowego. Co więcej, w odróżnieniu od Pythona, Codon dodatkowo implementuje możliwość wykorzystania wielowątkowości, co pozwala na jeszcze większy wzrost wydajności. Codon umożliwia także kompilację na poziomie poszczególnych funkcji w celu wykorzystania skompilowanej reprezentacji w istniejących projektach Pythona.

Codon zbudowany jest w oparciu o architekturę modułową, która pozwala zwiększyć funkcjonalność poprzez wtyczki, za pomocą których można dodawać nowe biblioteki, wdrażać optymalizacje w kompilatorze, a nawet zapewniać obsługę dodatkowej składni. Na przykład równolegle opracowywanych jest kilka wtyczek do wykorzystania w bioinformatyce i matematyce finansowej. Do zarządzania pamięcią służy moduł zbierający elementy bezużyteczne Boehma.

Kompilator obsługuje większość składni Pythona, ale kompilacja do kodu maszynowego nakłada szereg ograniczeń, które uniemożliwiają użycie Codon jako przezroczystego zamiennika CPythona. Na przykład Codon używa 64-bitowego typu int dla liczb całkowitych, podczas gdy CPython używa nieograniczonego rozmiaru dla liczb całkowitych. Duże bazy kodu mogą wymagać zmian w kodzie, aby osiągnąć zgodność z kodonami. Z reguły niekompatybilności są spowodowane brakiem implementacji dla Codon niektórych modułów Pythona i niemożnością wykorzystania niektórych dynamicznych funkcji języka. W przypadku każdej takiej niezgodności kompilator wysyła szczegółowy komunikat diagnostyczny z informacją o sposobie obejścia problemu.

Opublikowano Codon, kompilator języka Python


Źródło: opennet.ru

Dodaj komentarz