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
- Sistemi i ri i moduleve me mbështetje të integruar të versionimit tani kërkohet si parazgjedhje, duke zëvendësuar menaxhimin e varësive të bazuara në GOPATH. Variabli i mjedisit GO111MODULE tani është vendosur në "on" si parazgjedhje, dhe modaliteti i modulit përdoret pavarësisht pranisë së një skedari go.mod në direktorinë e punës ose atë prind. Në modalitetin e ri, komandat e ndërtimit si "go build" dhe "go test" nuk modifikojnë përmbajtjen e go.mod dhe go.sum, dhe komanda "go install" përpunon argumente specifike për versionin ("go install example.com/cmd@v1.0.0"). Për t'u rikthyer në sjelljen e mëparshme, ndryshoni GO111MODULE në "auto". Vërehet se 96% e zhvilluesve kanë migruar tashmë në sistemin e ri të moduleve.
- 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
