Codon, un compilator Python, este publicat

Startup-ul Exaloop a publicat codul pentru proiectul Codon, care dezvoltă un compilator pentru limbajul Python capabil să genereze cod mașină pur ca rezultat, care nu este legat de runtime-ul Python. Compilatorul este dezvoltat de autorii limbajului asemănător Python Seq și este poziționat ca o continuare a dezvoltării sale. Proiectul oferă, de asemenea, propriul său timp de rulare pentru fișierele executabile și o bibliotecă de funcții care înlocuiește apelurile de bibliotecă în Python. Codurile sursă ale compilatorului, runtime și bibliotecii standard sunt scrise folosind C++ (folosind dezvoltări de la LLVM) și Python și sunt distribuite sub BSL (Business Source License).

Licența BSL a fost propusă de co-fondatorii MySQL ca alternativă la modelul Open Core. Esența BSL este că codul de funcționalitate avansată este inițial disponibil pentru modificare, dar de ceva timp poate fi folosit gratuit doar dacă sunt îndeplinite condiții suplimentare, care necesită achiziționarea unei licențe comerciale pentru a o eluda. Termenii suplimentari de licență ai proiectului Codon necesită ca codul să fie transferat la licența Apache 2.0 după 3 ani (1 noiembrie 2025). Până în acest moment, licența permite copierea, distribuirea și modificarea, cu condiția ca aceasta să fie utilizată în scopuri necomerciale.

Performanța fișierelor executabile de ieșire este prezentată ca fiind apropiată de programele scrise în limbajul C. În comparație cu utilizarea CPython, câștigul de performanță la compilare folosind Codon este estimat a fi de 10-100 de ori pentru execuția cu un singur thread. În plus, spre deosebire de Python, Codon implementează suplimentar capacitatea de a utiliza multithreading, ceea ce permite o creștere și mai mare a performanței. Codon vă permite, de asemenea, să compilați la nivel de funcție individuală pentru a utiliza reprezentarea compilată în proiectele Python existente.

Codon este construit folosind o arhitectură modulară care vă permite să creșteți funcționalitatea prin plugin-uri, cu ajutorul cărora puteți adăuga noi biblioteci, puteți implementa optimizări în compilator și chiar oferi suport pentru sintaxă suplimentară. De exemplu, mai multe plugin-uri sunt dezvoltate în paralel pentru utilizare în bioinformatică și matematică financiară. Colectorul de gunoi Boehm este folosit pentru a gestiona memoria.

Compilatorul acceptă cea mai mare parte a sintaxei Python, dar compilarea în codul mașinii impune o serie de limitări care împiedică utilizarea Codonului ca înlocuitor transparent pentru CPython. De exemplu, Codon folosește tipul int pe 64 de biți pentru numere întregi, în timp ce CPython folosește o dimensiune nelimitată pentru numere întregi. Bazele de cod mari pot necesita modificări de cod pentru a obține compatibilitatea cu Codon. De regulă, incompatibilitățile sunt cauzate de lipsa implementării pentru Codon a anumitor module Python și de incapacitatea de a utiliza unele caracteristici dinamice ale limbajului. Pentru fiecare astfel de incompatibilitate, compilatorul emite un mesaj de diagnostic detaliat cu informații despre cum să ocoliți problema.

Codon, un compilator Python, este publicat


Sursa: opennet.ru

Adauga un comentariu