A startup Exaloop publicou o código do projeto Codon , que desenvolve um compilador para a linguagem Python que pode gerar código de máquina puro como saída, não vinculado ao runtime do Python. O compilador é desenvolvido pelos autores da linguagem Seq semelhante ao Python e é posicionado como uma continuação de seu desenvolvimento. O projeto também oferece um tempo de execução próprio para arquivos executáveis e uma biblioteca de funções que substitui as chamadas de biblioteca na linguagem Python. O código fonte do compilador, tempo de execução e biblioteca padrão é escrito usando C++ (usando desenvolvimentos de LLVM) e Python, e distribuído sob a BSL (Business Source License).
O BSL foi proposto pelos cofundadores do MySQL como uma alternativa ao modelo Open Core. A essência do BSL é que o código de funcionalidade estendida está inicialmente disponível para modificação, mas por algum tempo pode ser usado gratuitamente apenas sujeito a condições adicionais, que exigem a compra de uma licença comercial para contornar. Os termos de licença adicionais do projeto Codon exigem que o código seja transferido para a licença Apache 2.0 após 3 anos (1º de novembro de 2025). Até então, a licença permite a cópia, distribuição e modificação, desde que seja utilizada para fins não comerciais.
O desempenho dos executáveis de saída é apresentado como próximo de programas escritos na linguagem C. Comparado ao uso do CPython, o ganho de desempenho ao compilar usando Codon é estimado em 10 a 100 vezes para execução de thread único. Ao mesmo tempo, ao contrário do Python, o Codon implementa adicionalmente a possibilidade de usar multithreading, o que permite obter um aumento ainda maior no desempenho. Codon também permite compilar no nível da função para usar a visualização compilada em projetos Python existentes.
O Codon é construído usando uma arquitetura modular que permite estender a funcionalidade por meio de plug-ins que podem adicionar novas bibliotecas, implementar otimizações de compilador e até fornecer suporte para sintaxe adicional. Por exemplo, vários plugins estão sendo desenvolvidos em paralelo para uso em bioinformática e matemática financeira. O coletor de lixo Boehm é usado para gerenciamento de memória .
Compilador suportadoa maior parte da sintaxe do Python, mas a compilação para o código nativo impõe uma série de restrições que impedem o uso do Codon como um substituto transparente para o CPython. Por exemplo, Codon usa o tipo int de 64 bits para inteiros, enquanto CPython tem inteiros ilimitados. A compatibilidade de códons para grandes bases de código pode exigir alterações de código. Normalmente, as incompatibilidades são causadas pela falta de implementação do Codon de certos módulos do Python e pela incapacidade de usar alguns dos recursos dinâmicos da linguagem. Para cada incompatibilidade, o compilador emite uma mensagem de diagnóstico detalhada com informações sobre como contornar o problema.
Codon, compilador para Python publicado
1 2 2
12022-12-27 15:07:43
22024-04-23 10:37:43
след360.1больCHAPДегеБогдPapuСпешЛисолюбиДобрTescAtlaPelhНосыклубКурсDekoписаTescИллюнавс
издаСаплSkarHY80AngeсертсемьSaltAnnoСуслсертромаJameЖужуGarnKissGarnDoveVenuJewePeruПопо
OreaФагрDjanмузыязыкVoguStilBlacLycrГериКазаСереStraавтоMariJohnИллюPlanAlleTereSelaRoxy
OompкнижПшенWagnJuleинстHerbМироDykeМассZoneссылIsaaZoneZoneAlexWindAlvaZoneкрасагенZone
ZoneЗелиZoneZoneХлудPabl1877ЛекцШпажКузьиллюотстШирогубеFromфакутворРасслитеbertСлепClau
губеСухоМуроГлузгубедоподеятGebrмесяпосуInoxZanuHitaИллюTimeSnooАртиWindLoveRuyaДревВетл
автоABL0CHEVхоросекрJazzАртипазлпазлProSВысоинстRhinWindCleaVitaлинеOregуведChouBritсвяз
EmilЛитРАнтоЛитРHappЛитРHerzRockЛитРXVIIРоссИницДаниБеловласИллюКариигракиноТаразаниDebo
WishHeavThisArduЕвроБулгЛапиАнонVIIIAlleВыпуКрылСиниEdouDiarСоковузоMakeТопо2002цифрЗдан
другScotначаHenrBackThomМаксмесямесямесяДенисумоМаляТурцBerlГуба115xSpirРагмхудоДубрШока
tuchkasУказPsyc