Nuitka
Utvecklare | Kay Hayen och andra |
---|---|
Stabil frisättning | 1.1.3 / 8 oktober 2022
|
Förhandsgranska release | 1.1 |
Förvar | |
Skrivet i | C , Python |
Tillgänglig i | engelsk |
Typ | källa-till-källa-kompilator |
Licens | Apache-licens 2.0 |
Hemsida |
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
- Officiell hemsida
- Nuitka på GitHub - Källkod och manual