Компилаторът Python-to-C ++ обещава по-бързо изпълнение

Колкото по-популярен е езикът, толкова по-разнообразни са неговите изпълнения. Python е класически пример, като повечето заместители на неговия интерпретатор по подразбиране са написани, за да ускорят изпълнението на езика. Сред най-новите и най-интригуващите е Нуйка.

Nuika (с отворен код на GitHub) компилира Python в C ++ код, който след това може да бъде изпълнен на място или пакетиран като самостоятелен файл за преразпределение. За разлика от някои други заместители на съществуващи интерпретатори на Python, той претендира за пълна съвместимост с всички езикови конструкции в Python 2.6, 2.7, 3.2 и 3.3.

Според ръководството на проекта, Кей Хайен, първият крайъгълен камък на Нуитка - паритет с езика - вече е постигнат. Hayen представи дискусия за Nuitka още на конференцията EuroPython 2012 и работата започна сериозно (въз основа на историята на ангажираността на GitHub) около края на същата година.

За да работи магически, Nuitka изисква както текуща версия на интерпретатора на Python (клон 2.x или 3.x), така и компилатор на C ++. Microsoft Visual Studio, MinGW и Clang / LLVM се поддържат за последните, както в 32-, така и в 64-битовите издания. Кръстосаното компилиране - да речем, от Linux към Windows или обратно - не се поддържа и компилирането на 64-битова изпълнима програма на Windows изисква компилатора на Microsoft.

Друг недостатък е създаването на самостоятелни изпълними файлове. За да направи това, Nuitka включва разпространимите на CPython (в Windows, колекция от DLL файлове и други поддържащи файлове) с изпълнимия файл. Следователно, самостоятелните програми идват с доста големи разходи: Един прост скрипт от командния ред „Здравей, свят“ за Python 2.7 създава 2.6MB 32-битова изпълнима програма на Windows, заедно с 7.4MB файлове за поддръжка. (Графичната версия на същата програма претегля 10MB за изпълнимия файл, общо 20MB.)

И все пак това, което Нуитка вече може да постигне, е впечатляващо и плановете на Хайен за бъдещето й са амбициозни. Следващите стъпки са да направим кода, генериран от Nuitka, по-ефективен, включително по-добро боравене с променливи типове и оптимизации за управление на потока. По-нататък в пътната карта има още по-сложни и ценни функции, като например интерфейс Nuitka директно с C код, използван в Python чрез системата за чужди функции на ctypes на езика.