Lëshimi i gjuhës së programimit Go 1.24

Pas një periudhë gjashtë mujore zhvillimi, është publikuar lirimi i gjuhës së programimit Go 1.24, e zhvilluar nga kompania Google në bashkëpunim me komunitetin. Gjuha kombinon performancën e lartë, të karakteristikë të gjuhëve të kompiluara, me avantazhet e gjuhëve të skriptimit, siç janë lehtësia e shkruarjes së kodit, shpejtësia e lartë e zhvillimit dhe mbrojtja nga gabimet. Kodi i projektit shpërndahet nën licencën BSD.

Sintaksa e Go bazohet në elemente të njohura të gjuhës C me huazime të veçanta nga gjuha Oberon. Gjuha është mjaft konçize, por kodi lexohet dhe perceptohet lehtësisht. Kodi në gjuhën Go kompilohet në skedarë executable të veçantë, që funksionojnë natyrshëm, pa përdorimin e një makine virtuale (modulet e profilimit, debuguese dhe nënkategoritë e tjera të zbulimit të problemeve integrohen si komponente runtime), duke mundësuar arritjen e një performance të ngjashme me programet në gjuhën C.

Projekti është fillimisht zhvilluar me një fokus në programimin me shumë përgjegjësi dhe punën efikase në sisteme me shumë bërthama. Për shembull, në nivelin e operatorëve janë zbatuar mjete për organizimin e llogaritjeve paralele dhe ndërveprimin mes metodave që ekzekutohen paralelisht. Gjuha gjithashtu ofron mjete të ndërtuara për mbrojtjen nga daljet jashtë kufijve të buffers dhe mundësinë e përdorimit të mbledhësit të plehrave.

Ndryshimet në publikimin e ri përfshijnë:

  • Është siguruar mbështetje e plotë për pseudonimet e përgjithshmërisë (generic type alias) - pseudonimi i tipit mund të përcaktohet si një tip parametrizues, ashtu si tipi i parë që përcaktohet (kur përcaktohet pseudonimi i tipit tani lejohet të tregohet parametrat e tipit). type set[P comparable] = map[P]bool
  • Janë bërë optimizime në runtime, të cilat kanë çuar në një reduktim të ngarkesës së procesorit prej 2-3% gjatë testeve standarde të performancës. Mes optimizimeve të realizuara: një realizim i ri i integruar i operacionit 'map', i bazuar në përdorimin e tabelave hash Swiss Table; rritja e efikasitetit të përdorimit të memories gjatë vendosjes së objekteve të vogla; një implementim i ri i mutexit, i integruar në runtime.
  • Ekzekutimi 'go' për modulet Go ka marrë një mekanizëm për gjurmimin e varësive ekzekutuese (mjetet ndihmëse, të shkruara në gjuhën Go dhe të përdorura gjatë zhvillimit të modulit, për shembull, linter-ët ose utilitat për formatimin e kodit). Përcaktimi i mjeteve në skedarin go.mod bëhet përmes drejtorisë 'tool', për shtimin e së cilës në modul aktual është propozuar komanda 'go get -tool' (p.sh., 'go get -tool golang.org/x/tools/cmd/stringer'). Për ta ekzekutuar mjetin, i përcaktuar në drejtorinë 'tool', është shtuar komanda 'go tool emri_mjetit'.
  • Në komandat 'go build' dhe 'go install' është shtuar opsioni '-json' për të dalë në formatin JSON.
  • Është shtuar variabla e mjedisit GOAUTH për të caktuar parametrat e autentifikimit, të nevojshëm për të tërhequr modulet, aksesin ndaj të cilave e kufizojnë.
  • Në komandën 'go vet' është realizuar një analizues i ri i testeve (test analyzer), që identifikon gabimet tipike gjatë përfshirjes së testeve, mjeteve të fuzzing, utiliteteve të kontrollit të performancës dhe shembujve të aplikacioneve.
  • Në bibliotekën standarde janë përfshirë implementime të algoritmeve të kriptografisë, të miratuara në standardin e sigurisë FIPS 140-3.
  • Në paketën testing është shtuar metoda B.Loop për të ekzekutuar teste të performancës. Përdorimi i 'for b.Loop() { … }' në vend të cikleve të zakonshme lejon përjashtimin nga optimizimi i plotë i trupit të ciklit nga kompajleri dhe nxjerrjen jashtë ciklit të fazave të konfigurimit dhe pastrimit të testit.
  • Është shtuar tipi os.Root, duke lejuar izolimin e operacioneve me sistemin e skedarëve në një katalog të caktuar.
  • Në runtime është shtuar një mekanizëm i ri i finalizimit runtime.AddCleanup, më fleksibël dhe efikas se runtime.SetFinalizer.
  • Është shtuar paketa weak c me implementimin e treguesve të dobët, të cilët nuk posedojnë objektin, nuk e rrisin numrin e referencave dhe nuk parandalojnë çlirimin e objektit.
  • Janë shtuar paketa: crypto/mlkem me implementimin e algoritmeve kriptografikë ML-KEM-768 dhe ML-KEM-1024 (Kyber), të qëndrueshëm për përputhjen në kompjuterët kuantike; crypto/hkdf me implementimin e funksionit të formimit të çelësit mbi bazën e HMAC (RFC 5869); crypto/pbkdf2 me implementimin e funksionit të formimit të çelësit mbi bazën e fjalëkalimit (PBKDF2, RFC 8018); crypto/sha3 me implementimin e hash-eve SHA-3.
  • Është shtuar një paketë eksperimentale testing/synctest me funksione për testimin e multithreading-ut.
  • Është përmirësuar mbështetja për WebAssembly. Është shtuar mundësia për të ndërtuar aplikacione Go në formën e bibliotekës ose trajtuesit WASI (WebAssembly System Interface). Është realizuar direktiva go:wasmexport për eksportimin e funksioneve për përdorim në WebAssembly.
  • Në utilitarin objdump është shtuar mbështetje për disassemblim për arkitekturën LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) dhe S390X (GOARCH=s390x).

Burimi: opennet.ru

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster