Python on korkean tason ohjelmointikieli.
Äskettäin uutisoitiin, että Python-projektin ohjauskomitea on ilmoittanut haluavansa hyväksyä Python-kielen laajennusehdotus «PEP-0703", mikä tekee globaalista tulkin lukituksesta valinnaisen CPythonissa ja joka periaatteessa määrittää CPython-käännöstilan upotuksen ilman Global Interpreter Lock (GIL) -lukkoa.
PEP-0703 määrittää lopettamaan GIL:n käytön oletuksena, mutta lisää koontivaihtoehto “–sin-gil” poistaaksesi sen käytöstä. Mitä kuuluul Uuden tilan odotetaan ratkaisevan rinnakkaisuuden ongelman operaatioista moniytimisissä järjestelmissä, mikä johtuu siitä, että globaali lukko ei salli rinnakkaista pääsyä jaettuihin objekteihin eri säikeistä.
Mainitaan, että pitkällä aikavälillä (5 vuoden kuluttua) shell on tarkoitus muuttaa oletusarvoisesti vain globaalissa lukitsemattomassa tilassa, mutta samalla pudotetaan tuki GIL-kääntämiselle.
Kiitos kaikille no-GIL-ehdotusta koskevaan kyselyyn vastanneille. On selvää, että yleinen mielipide on myönteinen sekä yleisidean että erityisesti PEP 703:n kannalta. Hallitus on myös pääosin positiivinen molemmissa asioissa. Aiomme hyväksyä PEP 703:n, vaikka käsittelemme vielä hyväksymisen yksityiskohtia.
Kuten olemme tehneet muutaman kerran aiemmin, haluamme viestiä aikomuksestamme hyväksyä PEP sekä tämänhetkisen ajattelumme hyväksymiseen liittyvistä yksityiskohdista.
Sen lisäksi Mainitaan, että muutokset, jotka on suunniteltu toteutettavaksi kolmessa vaiheessa, jotka ovat lyhyen, keskipitkän ja pitkän aikavälin Olettaen että Ensimmäisessä vaiheessa GIL:n poistaminen käytöstä oletusarvoisesti on epäkäytännöllistä roskankeräimen, muistinhallintajärjestelmän ja lukkojen järjestämisen primitiivien muuttamiseen liittyvien yleiskustannusten vuoksi. Esimerkiksi, koska säikeiden eristämiseen käytetään viitelaskentaa, yksisäikeisten komentosarjojen suorituskyky heikkenee (pyperformance-testipaketissa 10 %). Samanaikaisesti saattaa olla tarpeen poistaa GIL käytöstä tieteellisessä laskennassa, jolle rinnakkaisuuden puute on vakavampi ongelma kuin koodin suorittamisen lineaarinen nopeus.
Toisessa vaiheessa periaatteessa odotetaan vahvistusta. ja että yhteisö saa riittävästi tukea "ei-GIL on käyttökelpoinen" ja varmista, että GIL-vapaa rakennus on tuettu, mutta ei oletuksena.
Viimeisessä vaiheessa no-GIL on jo oletusarvo ja kaikki GIL:n jäänteet poistetaan (riittämättä tarpeettomasti taaksepäin yhteensopivuutta).
On havaittu, että GIL:stä poistuminen tehdään erittäin huolellisesti, jotta virhettä ei toisteta mitä tapahtui mainostettaessa Python 3: Muun kuin GIL-koontiversion on varmistettava yhteensopivuus Pythonin vanhempien versioiden kanssa, ja kaikkien muiden kuin GIL-koontiversioiden toimimiseen vaadittavien kolmannen osapuolen koodimuutosten pitäisi toimia myös GIL-koontiversioissa.
Ei aiota numeroida versioita Python 4:ksi muissa kuin GIL-koontiversioissa, koska ne säilyttävät ABI-yhteensopivuuden.
Koko prosessin ajan meidän (ydinkehittäjien, ei vain SC:n) on arvioitava uudelleen edistyminen ja ehdotetut aikataulut. Emme halua, että tästä tulee uusi kymmenen vuoden takainen yhteensopivuustaistelu, ja haluamme, että voimme peruuttaa PEP 703:n ja löytää toisen ratkaisun, jos se näyttää olevan ongelmallinen, joten meidän on tarkistettava säännöllisesti, että työn jatkaminen kannattaa.
Toivomme, että tämä selventää PEP:n tulevaisuutta, kun selvitämme hyväksymisen tarkkoja yksityiskohtia. Valvontakomitea pyrkii saattamaan hyväksynnän päätökseen lähiviikkoina.
Ennen täydellistä siirtymistä ei-GIL-koontiversioihin aiomme saavuttaa täyden yhteisön tuen näille koontiversioille sekä tarjoavamme ylimääräisiä C-sovellusliittymiä ja Python-sovellusliittymiä turvallisen monisäikeisen käytön mahdollistamiseksi olemassa olevassa koodissa.
Lopuksi, kuten jo mainittiin, on odotettavissa, että siirtyminen kolmanteen vaiheeseen voi tapahtua vähintään 5 vuoden kuluttua ja PEP-0703:n todennäköinen päivämäärä on Python 3.13:n julkaisu, joka on suunniteltu ensi syksynä.
Jos olet kiinnostunut tietämään asiasta lisää, voit tarkistaa yksityiskohdat Seuraavassa linkissä.