Nuitka

Nuitka
Utvecklare Kay Hayen och andra
Stabil frisättning
1.1.3 / 8 oktober 2022 ; 4 månader sedan ( 2022-10-08 )
Förhandsgranska release
1.1
Förvar github .com /Nuitka /Nuitka
Skrivet i C , Python
Tillgänglig i engelsk
Typ källa-till-källa-kompilator
Licens Apache-licens 2.0
Hemsida nuitka .net

Nuitka (uttalas som / n juː t k ʌ / ) är en käll-till-källa-kompilator som kompilerar Python -kod till C -källkod, och tillämpar vissa kompileringstidsoptimeringar i processen, såsom konstant veckning och spridning , inbyggd anropsprediktion , typ inferens och exekvering av villkorlig sats. Nuitka designades ursprungligen för att producera C++-kod, men nuvarande versioner producerar C-källkod med endast de funktioner i C11 som delas av C++03 , vilket möjliggör ytterligare kompilering till ett binärt körbart format av moderna C- och C++-kompilatorer inklusive gcc , clang , MinGW eller Microsoft Visual C++ . Den accepterar Python-kod som är kompatibel med flera olika Python-versioner (stöder för närvarande versionerna 2.6, 2.7 och 3.3–3.10) och tillåter valfritt att skapa fristående program som inte kräver att Python installeras på måldatorn.

Nuitka diskuterades vid EuroPython-konferensen 2012 och en allvarlig utveckling började i slutet av samma år. Det stöder nu praktiskt taget alla funktioner i Python-språket. Ytterligare optimering av kompileringstid planeras för framtida utgåvor, inklusive att undvika användningen av Python-objekt för ytterligare variabler vars typ kan utläsas vid kompilering, särskilt när man använder iteratorer, vilket förväntas resultera i en stor prestandaökning.

Begränsningar

För närvarande är det inte möjligt att korskompilera binärfiler (t.ex. att bygga den körbara filen på Windows och skicka den till macOS).

Fristående binärfiler byggda med kommandoradsalternativet --standalone inkluderar en inbäddad CPython -tolk för att hantera aspekter av språket som inte bestäms när programmet kompileras och som måste tolkas under körning, såsom duck typing , undantagshantering och dynamisk kodexekvering ( eval -funktionen och exec -funktionen eller -satsen), tillsammans med de Python- och inbyggda bibliotek som behövs för exekvering, vilket leder till ganska stora filstorlekar.

Nuitkas design är starkt beroende av CPython-tolkens inre delar, och som ett resultat av detta kan andra implementeringar av Python-språket som PyPy , Jython och IronPython inte användas istället för CPython för runtime-tolken och biblioteket.

Användande

Nuitka kan installeras från arkiven i många Linux-distributioner. Den kan även installeras genom pip respektive pip3 . Kompileringen görs antingen med nuitka program.py eller med Python själv ( python -m nuitka program.py ) .

externa länkar