Go programozási nyelv 1.15 kiadás

Által benyújtott programozási nyelv kiadása Menjen az 1.15, amelyet a Google a közösség részvételével fejlesztett ki hibrid megoldásként, amely egyesíti a lefordított nyelvek nagy teljesítményét a szkriptnyelvek előnyeivel, mint például a kódírás egyszerűsége, a fejlesztés sebessége, és hibavédelem. Projekt kód forgalmazza a BSD licenc alatt.

A Go szintaxisa a C nyelv ismerős elemein alapul, néhány kölcsönzés a Python nyelvből. A nyelvezet meglehetősen tömör, de a kód könnyen olvasható és érthető. A Go kódot önálló bináris futtatható fájlokba fordítják, amelyek natív módon futnak virtuális gép használata nélkül (a profilozási, hibakeresési és egyéb futásidejű problémaészlelő alrendszerek integrálva vannak futásidejű összetevők), amely lehetővé teszi a C nyelvű programokhoz hasonló teljesítmény elérését.

A projektet kezdetben a többszálú programozás és a többmagos rendszerek hatékony működésének szem előtt tartásával fejlesztették ki, beleértve a kezelői szinten megvalósított eszközök biztosítását a párhuzamos számítás és a párhuzamosan végrehajtott módszerek közötti interakció megszervezéséhez. A nyelv emellett beépített védelmet nyújt a lefoglalt memóriablokkok túllépése ellen, és lehetőséget biztosít a szemétgyűjtő használatára.

A főbb innovációk, bevezetve a Go 1.15 kiadásban:

  • A linker munkája jelentősen javult, mind a működési sebesség növelése és a memóriafelhasználás csökkentése, mind a kódkarbantartás egyszerűsítése irányába. ELF futtatható fájlformátumot használó operációs rendszereken (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris) tesztelve a nagy Go alkalmazások tipikus készlete 20%-kal gyorsabban épült fel, és a memóriafelhasználás átlagosan 30%-kal csökkent. A termelékenység növelését az új objektumfájlformátumra való átállás és a belső szakaszok átdolgozása tette lehetővé a munka párhuzamosításának növelése érdekében. A natív linker mostantól alapértelmezés szerint használatos a linux/amd64 és linux/arm64 rendszereken a "-buildmode=pie" formátumban, amihez már nincs szükség C linker használatára.
  • Futás közben jelentősen javult a kis objektumok elosztása a nagyszámú CPU maggal rendelkező rendszereken, és csökkent a késleltetés. Hiba esetén a cím helyett numerikus és karakterlánc típusú értékek jelennek meg. Amikor SIGSEGV, SIGBUS és SIGFPE jeleket küld egy Go alkalmazásnak, os/signal hiányában.Notify kezelő, az alkalmazás verem nyomkövetési kimenettel lép ki (korábban a viselkedés kiszámíthatatlan volt).
  • A fordítóprogramot úgy optimalizálták, hogy átlagosan 5%-kal csökkentse a generált futtatható fájlok méretét azáltal, hogy leállítja bizonyos metaadatok felvételét a szemétgyűjtő számára, valamint a fel nem használt metaadatok agresszívabb tisztítását.
  • A fordítóhoz és az assemblerhez hozzáadtuk a „-spectre” jelzőt a Spectre osztályú támadások elleni védelem érdekében (a legtöbb programnál ez nem kötelező; az opció engedélyezése csak akkor indokolható, ha néhány nagyon konkrét eset).
  • Az X.509-tanúsítványokban a CommonName mező elavult, amelyet a rendszer többé nem kezel állomásnévként, ha hiányzik a Tárgy alternatív nevei mező.
  • A "go" parancs a GOPROXY környezeti változóban mostantól több proxyt is listázhat, vesszővel vagy "|"-vel elválasztva. Ha a lista első proxyja hibát ad vissza (404 vagy 410), akkor a rendszer megpróbálja felvenni a kapcsolatot a második proxyn stb.
  • Az állatorvosi segédprogram figyelmeztetést adott a string(x)-ből történő konvertálásra, ha az "x" egy rúnától vagy bájttól eltérő egész típusú.
  • A "-gnu" jelző hozzáadásra került az objdump segédprogramhoz, hogy támogassa a GNU assembler szintaxis szétszedését.
  • Új csomag hozzáadva idő/tzdata, amely lehetővé teszi az időzóna adatait tartalmazó adatbázis integrálását a programba.
  • Forrásszövegekből és dokumentációból eltávolították a whitelist/blacklist és a master/slave kifejezések, amelyeket most az "allowlist", "blocklist", "process", "pty", "proc" és "control" váltott fel.
  • A szabványos könyvtár kisebb fejlesztéseinek nagy részét elvégezték.
  • Az OpenBSD 6.7 támogatása hozzáadva GOARCH=arm és GOARCH=arm64 módban (korábban csak a GOARCH=386 és GOARCH=amd64 volt támogatott).
  • Folytatódott a 64 bites RISC-V platform (GOOS=linux, GOARCH=riscv64) fejlesztése.
  • A 32 bites x86-os rendszerek esetében a következő kiadás növeli a minimális rendszerkövetelményeket – továbbra is csak az SSE2-vel rendelkező processzorok lesznek támogatottak. A GOARCH=386 módban való építéshez legalább egy Intel Pentium 4-re (2000-ben jelent meg) vagy egy AMD Opteron/Athlon 64-re (2003-ban) lesz szüksége.

Forrás: opennet.ru

Hozzászólás