A Python fejlesztői fontolgatják a Rust programozási nyelv bevezetését a CPythonban

Két CPython magfejlesztő, Emma Smith és Kirill Podoprigora nemrégiben előterjesztett egy ambiciózus javaslatot, amely a Rust programozási nyelv integrálását célozza a CPythonba, a Python referencia implementációjába. A Pre-PEP néven ismert előzetes javaslat kezdetben csak opcionális kiterjesztési modulok írására engedélyezné a Rust használatát a CPython standard könyvtárában, de hosszú távon a cél az, hogy a Rust kötelező függőséggé váljon (ezt a tervet azonban később elvetették a közösségi visszajelzések alapján, és most kizárólag az opcionális modulok integrációjára fókuszálnak a platformkompatibilitás megőrzése érdekében), és hogy szabadon alkalmazható legyen a teljes kódbázison, beleértve a magkomponenseket is. Ez a lépés jelentős változást hozhat a Python fejlesztésében, mivel a CPython hagyományosan C nyelven íródott. A fejlesztők szerint a Rust bevezetése modernizálhatja a programnyelvet, miközben javítja annak biztonságát és teljesítményét.

A Python fejlesztői fontolgatják a Rust programozási nyelv bevezetését a CPythonban

Várt előnyök a Rust bevezetése kapcsán

A Rust integrációjának elsődleges indoka a memória- és szálbiztonság fokozása, hiszen a nyelv tulajdonosi rendszere már fordítási időben azonosítja és elhárítja a tipikus hibákat, például a memóriatúlcsordulást, a felszabadított memória illetéktelen elérését vagy az adatkonfliktusokat.

Ezek a biztonsági garanciák a RustBelt projekt keretében formálisan bizonyítottak, és kiemelt jelentőségűek a CPython kontextusában, ahol a múltban sok hiba és programösszeomlás vezethető vissza érvénytelen memória-hozzáférésekre. A javaslat külön hangsúlyozza a Rust nulla költségű absztrakcióit, például a Vec, HashMap vagy Mutex elemeket, amelyek fejlett struktúrákat biztosítanak C-szintű hatékonysággal, továbbá a makrórendszerét, ami tiszta metaprogramozást támogat. Ráadásul a Cargo build rendszer remekül menedzseli a függőségeket, a vendoring folyamatát és a cross compilationt, ezzel egyszerűsítve a CPython fejlesztési munkafolyamatait. A fejlesztők álláspontja szerint a Rust nemcsak a biztonságot emeli magasabb szintre, hanem csábítóbbá teszi a projektet a Rust-közösség tagjai számára, mérsékli a sebezhetőségeket, és egyben teljesítménybeli optimalizálást is eredményez.

Végrehajtási terv, lehetséges hátrányok

A megvalósítás szakaszosan történne: először opcionális Rust-modulokat adnának hozzá a Modules/ könyvtárhoz, bindgen segítségével generálva FFI-kötéseket a C API-ból, és egy új cpython-sys crate-et létrehozva. A javaslat frissítése alapján a Rust kötelező függőséggé tétele visszavonásra került, és a fókusz most kizárólag az opcionális Rust-modulok integrációjára helyeződik, hogy elkerüljék a platformkompatibilitási és közösségi aggályokat, miközben továbbra is lehetővé teszik a Rust használatát a CPython kódbázisában a biztonság és teljesítmény javítása érdekében.

A platformtámogatás erős, mivel a Rust minden PEP 11 platformot lefed, kivéve néhány elavult architektúrát. Nyitott kérdések közé tartozik a függőségkezelés, a bootstrapping konfliktus – mivel a Rust fordítója Python-függő –, valamint a build-idő növekedése. Lehetséges hátrányok a tanulási görbe a C-fejlesztők számára, a bináris méret növekedése és a közösségi feszültségek, hasonlóan a Linux kernel Rust-integrációjához.

Pozitív fogadtatás a Python közösségen belül, azon kívül vegyes a fogadtatás

A Rust bevezetését célzó Pre-PEP javaslat közzététele óta aktív diskurzus bontakozott ki a fejlesztői közösségben, ahol a pozitív vélemények elsősorban a memória- és szálbiztonság javítását, valamint a teljesítményoptimalizálást emelik ki. A hivatalos Python fórumon a neves fejlesztők túlnyomórészt támogatóan nyilatkoztak, tréfásan felvetve akár a CRPython névváltoztatást is, és elismerve, hogy a javaslat nem egy teljes átírásról szól, hanem fokozatos integrációról, kezdve opcionális modulokkal, ami enyhíti a kezdeti aggályokat. A több mint 120 hozzászólásból álló thread építő jellegű, részletesen vitatva technikai aspektusokat, mint a függőségkezelés, a bootstrapping-probléma és a kötelezővé tétel időzítése.

Külső platformokon azonban vegyes a fogadtatás: a Hacker News threadjén nyolc hozzászólás gyűlt össze, ahol a támogatók a hibacsökkentést dicsérik, idézve a javaslatot, miszerint a Rust konstrukciós szinten megakadályozza az érvénytelen memória-hozzáféréseket, ám a kritikusok biztonsági kockázatokat látnak a Rust fordító függőségében. A Reddit r/linux subredditjén negyvenhét komment született, ahol a támogatók a Rust-alapú eszközök sikerét hozzák fel, míg az ellenzők a memória biztonság buzzword jellegét támadják. Az X platformon különösen heves reakciók érkeztek a Lunduke Journal posztja alatti komment szekcióban, maga a posztoló pedig a posztban külön érvként kiemelni, hogy a Rust kötelező függősége kizárná a programnyelv modern verzióit bizonyos platformokról, mellyel kulturális háborút szítanak a Rust-evangelisták és a C-tradicionisták között.