Lëshimi i gjuhës programuese Go 1.16

Prezantohet lëshimi i gjuhës së programimit Go 1.16, e cila po zhvillohet nga Google me pjesëmarrjen e komunitetit si një zgjidhje hibride që kombinon performancën e lartë të gjuhëve të përpiluara me avantazhe të tilla të gjuhëve të skriptimit si lehtësia e shkrimit të kodit. , shpejtësia e zhvillimit dhe mbrojtja nga gabimet. Kodi i projektit shpërndahet nën licencën BSD.

Sintaksa e Go bazohet në elementë të njohur të gjuhës C me disa huazime nga gjuha Python. Gjuha është mjaft koncize, por kodi është i lehtë për t'u lexuar dhe kuptuar. Kodi Go përpilohet në skedarë të ekzekutueshëm binar të pavarur që funksionojnë në mënyrë origjinale pa përdorur një makinë virtuale (modulet e profilizimit, korrigjimit dhe nënsistemet e tjera të zbulimit të problemeve të kohës së ekzekutimit janë të integruara si komponentë të kohës së ekzekutimit), gjë që lejon performancë të krahasueshme me programet C.

Projekti është zhvilluar fillimisht duke pasur parasysh programimin me shumë fije dhe funksionimin efikas në sistemet me shumë bërthama, duke përfshirë sigurimin e mjeteve në nivel operatori për organizimin e llogaritjeve paralele dhe ndërveprimin midis metodave të ekzekutuara paralelisht. Gjuha ofron gjithashtu mbrojtje të integruar kundër blloqeve të kujtesës së tepërt dhe ofron mundësinë për të përdorur një grumbullues mbeturinash.

Karakteristikat kryesore të reja të prezantuara në Go 1.16:

  • U shtua paketa e embed, e cila ofron mjete për futjen e skedarëve dhe drejtorive arbitrare në program. Një direktivë e re "//go:embed" ofrohet për të specifikuar skedarët që do të futen në kohën e përpilimit. Për shembull, specifikimi "//go:embed test.txt" në komentin e kodit dhe më pas deklarimi i variablës "var f embed.FS" do të çojë në futjen e skedarit test.txt dhe mundësinë për t'iu qasur atij përmes " f” përshkrues. Në mënyrë të ngjashme, mund të futni skedarë me burime ose vlera individuale të një lloji të caktuar të nevojshëm për punë, për shembull, për të marrë variablin e vargut "s" nga skedari version.txt, mund të specifikoni: import _ "embed ” //go:embed version.txt var s print (s) vargu
  • Si parazgjedhje, tani kërkohet sistemi i ri i modulit me mbështetje të integruar të versionimit, duke zëvendësuar menaxhimin e varësisë të bazuar në GOPATH. Variabli i mjedisit GO111MODULE tani është vendosur në "on" si parazgjedhje dhe modaliteti i moduleve përdoret pavarësisht nga prania e një skedari go.mod në drejtorinë e punës ose prind. Në modalitetin e ri, komandat e ndërtimit si "go build" dhe "go test" nuk ndryshojnë përmbajtjen e go.mod dhe go.sum, dhe komanda "go install" përpunon argumentet e versionit ("go install example.com/[email mbrojtur]"). Për të kthyer sjelljen e vjetër, ndryshoni GO111MODULE në "auto". Vihet re se 96% e zhvilluesve tashmë kanë kaluar në sistemin e ri të modulit.
  • Lidhësi është optimizuar. Për projektet e mëdha, faqosja tani është 20-25% më e shpejtë dhe kërkon 5-15% më pak memorie.
  • Përpiluesi ka shtuar mbështetje për zgjerimin inline të funksioneve me përkufizime të shkurtuara të sytheve "për", vlerat e metodës dhe konstruksionet e 'ndërruesit të tipit'.
  • Mbështetje e shtuar për sistemet Apple të pajisura me çipin e ri Apple M1 ARM. U shtuan porte netbsd/arm64 dhe openbsd/mips64 me mbështetje për NetBSD në ARM 64-bit dhe OpenBSD në sistemet MIPS64. U shtua mbështetje për cgo dhe modalitetin "-buildmode=pie" në portin linux/riscv64.
  • Mbështetja për modalitetin e përpilimit x87 është ndërprerë (GO386=387). Mbështetja për procesorët pa udhëzim SSE2 është tani e disponueshme nëpërmjet modalitetit të softuerit "GO386=softfloat".

Për më tepër, mund të vërejmë fillimin e testimit të lëshimit beta të gjuhës Dart 2.12, në të cilën është stabilizuar mënyra e sigurt për përdorimin e vlerës "Null" (siguria null), e cila do të ndihmojë në shmangien e përplasjeve të shkaktuara nga përpjekjet për të përdorur variabla të të cilëve vlera është e papërcaktuar dhe është vendosur në "Null". Modaliteti nënkupton që variablat nuk mund të kenë vlera null nëse atyre nuk u është caktuar në mënyrë eksplicite vlera null. Modaliteti respekton rreptësisht llojet e variablave, gjë që lejon përpiluesin të aplikojë optimizime shtesë. Pajtueshmëria e tipit kontrollohet në kohën e përpilimit, për shembull, nëse përpiqeni t'i caktoni vlerën "Null" një ndryshoreje me një lloj që nuk nënkupton gjendje të pacaktuar, si "int", do të shfaqet një gabim.

Burimi: opennet.ru

Shto një koment