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

Sapo një version të ri të gjuhës së programimit Go 1.18, e cila zhvillohet nga kompania Google në bashkëpunim me komunitetin si një zgjidhje hibride, që kombinon performancën e lartë të gjuhëve të kompilueshme me avantazhet e gjuhëve të skritura si lehtësia në shkrimin e kodit, shpejtësia e zhvillimit dhe mbrojtja 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.

Në versionin e ri, është shtuar mbështetje për funksionet dhe llojet e përgjithshme (gjenerikë), me anë të të cilave zhvilluesi mund të përcaktojë dhe përdorë funksione të destinuara për të punuar me disa lloje në të njëjtën kohë. Po ashtu, është ofruar mundësia e përdorimit të interfecave për të krijuar lloje të kombinuara, të cilat përfshijnë disa lloje të të dhënave. Mbështetja e gjenerikëve është realizuar pa shkelur kompatibilitetin e prapaveprueshme me kodin ekzistues. // Grumbullimi i vlerave të një grupi, që funksionon për llojet int64 dhe float64 func SumIntsOrFloats[K krahasues, V int64 | float64](m map[K]V) V { var s V për _, v := range m { s += v } return s } // Një opsion tjetër me përcaktim të përgjithshëm të llojit: type Number interface { int64 | float64 } func SumNumbers[K krahasues, V Number](m map[K]V) V { var s V për _, v := range m { s += v } return s }

Përmirësime të tjera:

  • NĂ« mjetet e integruara ka utilitete pĂ«r testimin e fuzzing tĂ« kodit. GjatĂ« testimit fuzzing, gjenerohet njĂ« rrjedhĂ« e tĂ« gjitha llojeve tĂ« kombinimeve tĂ« rastĂ«sishme tĂ« tĂ« dhĂ«nave hyrĂ«se dhe regjistrohen mundĂ«sitĂ« e dĂ«shtimeve gjatĂ« pĂ«rpunimit tĂ« tyre. NĂ«se njĂ« sekuencĂ« e caktuar shkakton dĂ«shtim ose nuk pĂ«rputhet me reagimin e pritur, atĂ«herĂ« njĂ« sjellje e tillĂ« me njĂ« probabilitet tĂ« lartĂ« tregon pĂ«r njĂ« gabim ose ndjeshmĂ«ri.
  • E shtuar mbĂ«shtetje pĂ«r hapĂ«sira pune tĂ« shumĂ«-moduleve, qĂ« lejon ekzekutimin e komandave menjĂ«herĂ« pĂ«r disa module, çka mundĂ«son mbledhjen dhe ekzekutimin e kodit nĂ« disa module nĂ« tĂ« njĂ«jtĂ«n kohĂ«.
  • Kryer njĂ« optimizim tĂ« konsiderueshĂ«m tĂ« performancĂ«s pĂ«r sistemet e bazuara nĂ« procesorĂ«t Apple M1, ARM64 dhe PowerPC64. Aktivizuar mundĂ«sia e pĂ«rdorimit tĂ« regjistrave nĂ« vend tĂ« stack-ut pĂ«r kalimin e argumenteve nĂ« funksione dhe kthimin e rezultateve. PĂ«rsosur shpĂ«rndarja inline e cikleve nga kompileri. Kontrolli i tipeve nĂ« kompiler Ă«shtĂ« rishikuar plotĂ«sisht. NĂ« disa teste, nĂ« krahasim me versionin e kaluar, evidentohet njĂ« rritje e performancĂ«s sĂ« kodit prej 20%, por vetĂ« kompilimi tani kryhet rreth 15% mĂ« ngadalĂ«.
  • NĂ« runtime, Ă«shtĂ« rritur efikasiteti i kthimit tĂ« memories sĂ« çliruar nĂ« sistemin operativ dhe Ă«shtĂ« pĂ«rmirĂ«suar funksionimi i mbledhĂ«sit tĂ« plehrave, i cili tani Ă«shtĂ« mĂ« i parashikueshĂ«m.
  • Biblioteka standarde ka shtuar paketa tĂ« reja net/netip dhe debug/buildinfo. NĂ« kodin e klientit, mbĂ«shtetja pĂ«r TLS 1.0 dhe 1.1 Ă«shtĂ« çaktivizuar si parazgjedhje. NĂ« modulit crypto/x509 Ă«shtĂ« ndĂ«rprerĂ« pĂ«rpunimi i certifikatave me nĂ«nshkrim bazuar nĂ« hash-in SHA-1.
  • KĂ«rkesat pĂ«r mjedisin nĂ« Linux janĂ« rritur; tani kĂ«rkohet nĂ«nshtresa e Linux-it tĂ« paktĂ«n versioni 2.6.32. NĂ« lĂ«shimin e ardhshĂ«m priten ndrytime tĂ« ngjashme pĂ«r FreeBSD (mbĂ«shtetja pĂ«r degĂ«n FreeBSD 11.x do tĂ« ndĂ«rpritet) dhe do tĂ« nevojitet tĂ« paktĂ«n FreeBSD 12.2 pĂ«r funksionimin.

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