Gaan programmeertaal 1.18 vrystelling

Die vrystelling van die programmeertaal Go 1.18 word aangebied, wat deur Google ontwikkel word met die deelname van die gemeenskap as 'n hibriede oplossing wat die hoë werkverrigting van saamgestelde tale kombineer met sulke voordele van skriftale as gemak van skryf van kode, vinnige ontwikkeling en foutbeskerming. Die projekkode word onder die BSD-lisensie versprei.

Die sintaksis van Go is gebaseer op die bekende elemente van die C-taal met 'n paar ontlenings van die Python-taal. Die taal is redelik bondig, maar die kode is maklik om te lees en te verstaan. Go-kode word saamgestel in afsonderlike binêre uitvoerbare lêers wat inheems loop sonder die gebruik van 'n virtuele masjien (profilering, ontfouting en ander looptyd probleem opsporing substelsels is geïntegreer as runtime komponente), wat dit moontlik maak om prestasie vergelykbaar met C programme te bereik.

Die projek is aanvanklik ontwikkel met die oog op multi-draad programmering en doeltreffende werking op multi-kern stelsels, insluitend die verskaffing van middele geïmplementeer op die operateur vlak vir die organisering van parallelle rekenaar en interaksie tussen parallel uitgevoer metodes. Die taal bied ook ingeboude beskerming teen oorskryding van toegekende geheueblokke en bied die vermoë om die vullisverwyderaar te gebruik.

Die nuwe weergawe voeg ondersteuning by vir generiese funksies en tipes (generiese), met behulp waarvan 'n ontwikkelaar funksies kan definieer en gebruik wat ontwerp is om met verskeie tipes tegelyk te werk. Dit is ook moontlik om koppelvlakke te gebruik om gekombineerde tipes te skep wat oor verskeie datatipes strek. Ondersteuning vir generiese produkte word geïmplementeer sonder om terugwaartse versoenbaarheid met bestaande kode te breek. // Som stel waardes, werk vir int64 en float64 tipes func SumIntsOrFloats[K vergelykbaar, V int64 | float64](m kaart[K]V) V { var s V vir _, v := reeks m { s += v } return s } // Nog 'n opsie met 'n generiese tipe definisie: tipe Getal koppelvlak { int64 | float64 } func SomGetal[K vergelykbaar, V Getal](m kaart[K]V) V { var s V vir _, v := reeks m { s += v } terugkeer s }

Ander verbeterings:

  • Hulpprogramme vir fuzzing-kodetoetsing is geïntegreer in die standaard toolkit. Tydens fuzzing-toetsing word 'n stroom van alle moontlike ewekansige kombinasies van insetdata gegenereer en moontlike mislukkings tydens die verwerking daarvan word aangeteken. As 'n volgorde ineenstort of nie ooreenstem met die verwagte reaksie nie, sal hierdie gedrag waarskynlik 'n fout of kwesbaarheid aandui.
  • Bygevoeg ondersteuning vir multi-modulêre werkruimtes, wat jou toelaat om opdragte op verskeie modules gelyktydig uit te voer, sodat jy gelyktydig kode in verskeie modules kan bou en uitvoer.
  • Beduidende werkverrigtingoptimalisasies is gemaak vir stelsels gebaseer op Apple M1-, ARM64- en PowerPC64-verwerkers. Aktiveer die vermoë om registers in plaas van die stapel te gebruik om argumente na funksies deur te gee en die resultaat terug te gee. Verbeterde inlyn ontrol van lusse deur die samesteller. Tipe nagaan in die samesteller is heeltemal herontwerp. Sommige toetse toon 'n toename van 20% in kodeprestasie in vergelyking met die vorige weergawe, maar samestelling self neem ongeveer 15% langer.
  • In looptyd is die doeltreffendheid van die terugkeer van vrygestelde geheue na die bedryfstelsel verhoog en die werking van die vullisverwyderaar is verbeter, waarvan die gedrag meer voorspelbaar geword het.
  • Nuwe pakkette net/netip en debug/buildinfo is by die standaard biblioteek gevoeg. Ondersteuning vir TLS 1.0 en 1.1 is by verstek in kliëntkode gedeaktiveer. Die crypto/x509-module het opgehou om sertifikate te verwerk wat met die SHA-1-hash onderteken is.
  • Die vereistes vir die omgewing in Linux is verhoog; om te werk, moet jy nou 'n Linux-kern van ten minste weergawe 2.6.32 hê. In die volgende vrystelling word soortgelyke veranderinge vir FreeBSD verwag (ondersteuning vir die FreeBSD 11.x-tak sal gestaak word) en ten minste FreeBSD 12.2 sal vereis word om te werk.

Bron: opennet.ru

Voeg 'n opmerking