ĂshtĂ« paraqitur versioni i gjuhĂ«s sĂ« programimit Go 1.16, e cila zhvillohet nga kompania Google nĂ« bashkĂ«punim me shoqĂ«rinĂ« si njĂ« zgjidhje hibride, duke kombinuar performancĂ«n e lartĂ« tĂ« gjuhĂ«ve tĂ« kompilimit me avantazhet e gjuhĂ«ve skiptike, si lehtĂ«sia nĂ« shkrimin e kodit, shpejtĂ«sia e zhvillimit dhe siguria nga gabimet. Kodi i projektit shpĂ«rndahet nĂ«n licencĂ«n BSD.
Sintaksa e Go-së është e bazuar në elemente të njohura nga gjuha C me disa huazime nga gjuha Python. Gjuha është mjaft e përshtatshme, por gjithashtu kodi lexohet dhe kuptohet lehtësisht. Kodi në gjuhën Go kompilohet në skedarë ekzekutivë binarë të veçantë, të cilët ekzekutohen në mënyrë natyrale pa përdorimin e makinerive virtuale (modulet e profilizimit, debugging dhe nën-sistemet e tjera për zbulimin e problemeve integrohen si komponentë të runtime), gjë që lejon arritjen e performancës që është në nivelin e programeve në gjuhën C.
Projekti zhvillohet fillimisht me fokus në programimin me shumë procese dhe funksionimin efikas në sisteme me shumë bërthama, duke ofruar gjithashtu mjete të implementuara në nivelin e operatorëve për organizimin e llogaritjeve paralel dhe ndërveprimin ndërmjet metodave që ekzekutohen paralelisht. Gjuha gjithashtu ofron mjete të integruara mbrojtjeje nga dalja jashtë zonave të lejuara të blloqeve të alokuar të memorjes dhe siguron mundësinë e përdorimit të një mbledhësi të plehrave.
Novitetet kryesore të prezantuara në versionin Go 1.16:
- Paketa embed është shtuar, duke ofruar mjete për integimin e skedarëve dhe katalogëve të rastësishëm në program. Për të specifikuar skedarët që duhet të integrohen në fazën e kompilimait, ofrohet një direktivë e re «//go:embed». Për shembull, duke specifikuar në kod një koment «//go:embed test.txt» dhe duke shpallur një variabël «var f embed.FS» do të çojë në integrimin e skedarit test.txt dhe mundësinë për t'u qasur tek ai përmes një referencë «f». Në mënyrë të ngjashme, mund të integrohen skedarët e nevojshëm për funksionimin ose vlerat e veçanta të një tipi të caktuar, për shembull, për të marrë një variabël string «s» nga skedari version.txt mund të specifikohet: import _ "embed" //go:embed version.txt var s string print(s)
- Sistemi i ri i moduleve me mbĂ«shtetje tĂ« integruar pĂ«r versionimin Ă«shtĂ« tani i detyrueshĂ«m, duke zĂ«vendĂ«suar mjetet pĂ«r menaxhimin e varĂ«sive bazuar nĂ« GOPATH. Variabli i mjedisit GO111MODULE tani Ă«shtĂ« i vendosur nĂ« 'on' siç Ă«shtĂ« standard, dhe regjimi i moduleve pĂ«rdoret pavarĂ«sisht pranisĂ« sĂ« skedarit go.mod nĂ« katalogun punues ose prind. NĂ« kĂ«tĂ« mod, komandat e ndĂ«rtimit, si âgo buildâ dhe âgo testâ, nuk ndryshojnĂ« pĂ«rmbajtjen e go.mod dhe go.sum, ndĂ«rsa komanda âgo installâ trajton argumentet me tregues versioni (âgo install example.com/cmd@v1.0.0â). PĂ«r tĂ« rikthyer sjelljen e vjetĂ«r, duhet tĂ« ndryshoni GO111MODULE nĂ« 'auto'. Vlen tĂ« theksohet se 96% e zhvilluesve tashmĂ« kanĂ« kaluar nĂ« sistemin e ri tĂ« moduleve.
- Optimizimi i ndërtuesit është kryer. Për projektet e mëdha, ndërtimi tani realizohet 20-25% më shpejt dhe kërkon 5-15% më pak memorie.
- Kompilatori tani mbĂ«shtet zbatimin inline tĂ« funksioneve me pĂ«rkufizime tĂ« shkurtra tĂ« cikleve âforâ, vlerat e metodĂ«s (method values) dhe konstruksionet âtype switchâ.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r sistemet Apple me çipit e ri ARM tĂ« Apple M1. JanĂ« shtuar portet netbsd/arm64 dhe openbsd/mips64 me mbĂ«shtetje pĂ«r NetBSD nĂ« ARM me 64-bit dhe OpenBSD nĂ« sistemet MIPS64. NĂ« portin linux/riscv64 Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r cgo dhe modalitetin "-buildmode=pie".
- Përkrahja për modalitetin e kompilimit x87 (GO386=387) është ndalur. Mbështetje për procesorët pa instruktione SSE2 tani është e disponueshme përmes modalitetit të programit "GO386=softfloat".
Së fundmi, mund të theksohet fillimi i testimit të versionit beta të gjuhës Dart 2.12, në të cilën është stabilizuar modaliteti i përdorimit të sigurt të vlerës "Null" (null safety), i cili ndihmon në evitimin e crash-ëve që shkaktohen nga përpjekjet për të përdorur variablat me vlera që nuk janë të definuara dhe janë caktuar në "Null". Ky modalitet nënkupton se variablat nuk mund të kenë vlera të paqarta, nëse nuk u caktohet shprehimisht vlera null. Në këtë modalitet, llojet e variablave merren parasysh me rigorozitet, çka i lejon kompiluesit të aplikojë optimizime të tjera. Përputhshmëria e llojeve kontrollohet në fazën e kompilimit; për shembull, në rastin e një përpjekjeje për t'i caktuar një vlerë "Null" një variabli me tipin që nuk nënkupton një gjendje të paqartë, siç është "int", do të njoftohet një gabim.
Burimi: opennet.ru
