Megérkezett a GNU C függvénykönyvtárba az Y2K38 bug javítása a legacy ABI -hoz, ami sokunk számára igazán örvendetes hír, de mit is jelent ez egészen pontosan ?
Aki esetleg nem tudja miről van szó, a világvége rövid leírása: https://skamilinux.hu/y2038-az-uj-armageddon/
A megoldás kidolgozása, itt még nem voltak konkrétumok, csak előkészület: https://skamilinux.hu/kernel-5-6-a-32-bites-gepek-megmentoje/
Kezdjük talán az LSB és a ABI fogalmakkal.
A linux rendszerek (hivatalosan GNU/linux) nem légből kapott ötletek, hanem olyan szabványok alapján készülnek, mint például a POSIX vagy az FHS.
A legismertebb, legnagyobb disztrók fejlesztői közösen létrehoztak egy LSB szabványt annak érdekében, hogy elősegítsék a rendszerek és az újonnan készített alkalmazások kompatibilitását.
Egyszerűbben fogalmazva, ha egy Ubuntu alatt írunk egy LSB 5.0 szabványú programot, akkor az fusson egy másik ugyanilyen szabványú ARCH, vagy RED HAT linux alatt, persze ez így azért elég sarkos leírása a dolgoknak.
Az LSB meghatározza például: a szabványos könyvtárakat (például az ld-lsb.so), számos parancsot és segédprogramot, amelyek kiterjesztik a POSIX szabványt, a fájlrendszer hierarchiájának elrendezését, a futási szinteket, a nyomtatási rendszert, beleértve az olyan spoolereket, mint a CUPS és az olyan eszközöket, mint a Foomatic, valamint az X Window System számos kiterjesztését.
Bővebben az LSB szabványról az angol nyelvű wikipédián:
https://en.wikipedia.org/wiki/Linux_Standard_Base
Az LSB hivatalos weboldala:
https://refspecs.linuxfoundation.org/lsb.shtml
Az LSB 5.0 szabvány összes leírása:
https://refspecs.linuxfoundation.org/LSB_5.0.0/allspecs.shtml
Most folgalkozzunk kicsit az ABI -val.
A linux kernel két típusú alkalmazásprogramozási felületet (Application Programming Interface – röviden API) vagy ismertebb nevén interfészt biztosít, ami egy program vagy rendszerprogram azon eljárásainak (szolgáltatásainak) és azok használatának dokumentációja, amelyet más programok felhasználhatnak.
Az egyik a kernel-user space API és a másik a kernel internal API.
Egy nyilvános API segítségével lehetséges egy programrendszer szolgáltatásait használni anélkül, hogy annak belső működését ismerni kellene.
Az API általában nem kötődik programozási nyelvhez, bármilyen programnyelvből lehetséges azok meghívása, amennyiben a megfelelő paramétereket a hívás biztosítja, és képes lekezelni az esetleges eredményt.
A linux kernel és a GNU C library biztosítja azt a Linux API ( kernel–user space API) -t, ami a programok lefordítása után a kész binárisok által biztosított ABI.
Bővebben az angol nyelvű ABI leírásban:
https://en.wikipedia.org/wiki/Application_binary_interface
Ez az ABI a biztosíték arra, hogy a sajátunktól eltérő , de megfelelően feltelepített rendszeren, ahol a környezet is megfelelően van beállítva és a szükséges library -k is rendelkezésre állnak, egy alkalmazásunk ugyanúgy futtatható legyen, tehát angolul portable, azaz hordozható legyen.
Na és akkor most jön a feketeleves és mindenki érteni fogja, miért akartam ekkora feneket kerítei a bevezetésnek.
A Linaro egyik mérnöke, Adhemerval Zanella írta azt, hogy egy új build flag, a _TIME_BITS lehetővé teszti az új 64-bites időbélyegek használatát a legacy ABI -k számára, ahol a 32-bites time_t az alapértelmezett.
A teljes 64 bit támogatás csak akkor lesz ervényes, ha az LFS (_FILE_OFFSET_BITS=64) opció is be van kapcsolva.
Az alábbi eszközön is engedélyezésre került a szükséges ABI -kban: armhf, csky, hppa, i386, m68k, microblaze, mips32, mips64-n32, nios2, powerpc32, sparc32, s390-32, sh.
A funkció bekapcsolásához minimum 5.1 -es linux kernel szükséges, egyébként a 32 bites programjaink EOVERFLOW hibaüzenettel elszállhatnak.
A 64 bites time változó előkészítésre került továbbá: fstat, gettimeofday, mktime, nanosleep, select, stat, time, utime programokban, több libc függvényben és eljárásban mint a librt és a libanl.
Tehát a régi rendszereink még egy kicsit fellélegezhetnek, persze ez sokkal nem fogja elodázni az elavult eszközök cseréjét, hiszen már napjainkban is egyre nehezebb jó 32 bites alkalmazásokat találni és ahogy azt sejteni lehet, szépen, lassan kikopnak ezek a gépek is, de azért azt ne felejtsük el, hogy rengeteg helyen, főként a termelés, gyártás, az erőművek és a hadiipar területén még rengeteg olyan eszköz található, amit nehézkes és körülményes cserélni, vagy egyszerűen csak túl drága lenne.
A GNU C library 2.34 hivatalos bejelentés és technikai részletek a téma iránt érdeklődőknek:
https://sourceware.org/pipermail/libc-alpha/2021-August/129718.html
Továbbra is várunk mindenkit nagy szeretettel csevegő oldalunkon élőben:
https://skamilinux.hu/chat/
Aktív fórum témák:
https://skamilinux.hu/phpBB3/search.php?search_id=active_topics
Legutóbbi PuppySzoftverek:
https://sourceforge.net/p/puppyszoftver/activity