lëshimi i gjuhës së programimit , e cila zhvillohet nga kompania Google me pjesëmarrjen e komunitetit si një zgjidhje hibride që kombinon performancën e lartë të gjuhëve të kompilimit me avantazhet e gjuhëve skriptuese, siç janë lehtësia në shkruarjen e kodit, shpejtësia e zhvillimit dhe mbrojtja nga gabimet. Kodi i projektit nën licencën BSD.
Sintaksa e Go bazohet në elementët e njohur të gjuhës C me huazime të veçanta nga gjuha Python. Gjuha është mjaft e shkurtër, por kodi lexohet dhe perceptohet lehtë. Kodi në gjuhën Go kompillet në skedarë binarë ekzekutivë të veçantë, që ekzekutohen në mënyrë lokale pa përdorimin e një makine virtuale (modulet e profilizimit, depurimit dhe nën-sistemet e tjera të zbulimit të problemeve në fazën e ekzekutimit integrohen si ), e cila mundëson arritjen e performancës të krahasueshme me programet 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.
Ndryshimet kryesore , të paraqitura në lëshimin Go 1.14:
- Sistemi i ri i moduleve në komandën «go» shpallet i gatshëm për përdorim të përgjithshëm, është përfshirë si parazgjedhje dhe rekomandohet për menaxhimin e varësive në vend të GOPATH. Sistemi i ri i moduleve ka mbështetje të integruar për versionimin, mjete për shpërndarjen e pakove dhe një sistem të përmirësuar të menaxhimit të varësive. Me ndihmën e moduleve, zhvilluesit nuk janë më të lidhur me punën brenda pemës së GOPATH, mund të përcaktojnë qartë varësitë duke marrë parasysh versionet dhe të krijojnë përmbledhje të ripërsëritshme.
- mbështetje për përfshirjen e ndërfaqeve me një grup metodash që përputhen. Metodat nga ndërfaqja e përfshirë mund të kenë tani të njëjtat emra dhe nënshkruese të njëjta si metodat në ndërfaqet tashmë ekzistuese. Metodat e shpallura qartë mbeten unike siç ishin më parë.
- Rritet performanca e shprehjes «defer», përdorimi i së cilës tani nuk ndryshon pothuajse fare në shpejtësi nga thirrja direkte e funksionit të shtyrë, duke lejuar aplikimin e nisjes së shtyrë të funksioneve në kodin që është i ndjeshëm ndaj performancës.
- Sigurohet shpĂ«rbĂ«rja asinkrone e goroutine-ve â ciklet qĂ« nuk pĂ«rmbajnĂ« thirrje funksionesh tani potencialisht nuk mund tĂ« çojnĂ« nĂ« bllokim tĂ« ndĂ«rsjellĂ« tĂ« planifikuesit ose vonesĂ« nĂ« fillimin e mbledhjes sĂ« mbeturinave.
- Rritet efikasiteti i sistemit të shpërndarjes së faqeve të memories, ku tani vërehet ndjeshëm më pak konflikte bllokimi në konfigurimet me vlera të mëdha GOMAXPROCS. Si rezultat, janë reduktuar vonesat dhe është përmirësuar kapaciteti në shpërndarjen e madhe të blloqeve të memories në mënyrë paralele.
- Janë optimizuar bllokimet dhe është ulur numri i kalimeve të kontekstit gjatë punës me tajmërat e brendshëm që përdoren në funksionet time.After, time.Tick, net.Conn.SetDeadline.
- NĂ« komandĂ«n go, si parazgjedhje aktivizohet flags «-mod=vendor», nĂ«se nĂ« rrĂ«njĂ« ka njĂ« dosje vendor, e cila Ă«shtĂ« e destinuar pĂ«r shpĂ«rndarjen e varĂ«sive tĂ« jashtme tĂ« lidhura me njĂ« ofrues tĂ« caktuar. ĂshtĂ« shtuar njĂ« flag e veçantĂ« «-mod=mod» pĂ«r ngarkimin e moduleve nga cache moduli, nĂ« vend tĂ« dosjes «vendor». NĂ«se dosja go.mod Ă«shtĂ« vetĂ«m pĂ«r lexim, si parazgjedhje sigurohet vendosja e flag «-mod=readonly», nĂ«se nuk ekziston dosja e lartĂ« «vendor». ĂshtĂ« shtuar flag «-modfile=file» pĂ«r pĂ«rcaktimin e njĂ« dosjeje alternative go.mod nĂ« vend tĂ« asaj qĂ« ndodhet nĂ« dosjen rrĂ«njĂ«sore tĂ« modulit.
- ĂshtĂ« shtuar variabla e mjedisit GOINSECURE, ku gjatĂ« vendosjes sĂ« saj komanda go nuk kĂ«rkon pĂ«rdorimin e HTTPS dhe kalon verifikimin e certifikatave gjatĂ« ngarkimit tĂ« moduleve drejtpĂ«rdrejt.
- Në kompilator është shtuar një flag e aktivizuar sipas parazgjedhjes «-d=checkptr» për të kontrolluar kodin në përputhje me rregullat e përdorimit të sigurt të unsafe.Pointer.
- Në shpërndarje është përfshirë një paketë e re me funksione hesh që nuk janë kriptografike për krijimin e tabelave të hesh për sekuenca arbitrare bajtesh ose stringje.
- ĂshtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r platformĂ«n 64-bit RISC-V nĂ« Linux.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r FreeBSD nĂ« sistemet 64-bit ARM.
Burimi: opennet.ru
