Kutolewa kwa lugha ya programu ya Go 1.18

Kutolewa kwa lugha ya programu ya Go 1.18 kunawasilishwa, ambayo inatengenezwa na Google kwa ushiriki wa jamii kama suluhisho la mseto ambalo linachanganya utendaji wa juu wa lugha zilizokusanywa na faida kama hizo za lugha za maandishi kama urahisi wa kuandika nambari. , kasi ya maendeleo na ulinzi wa makosa. Msimbo wa mradi unasambazwa chini ya leseni ya BSD.

Sintaksia ya Go inategemea vipengele vinavyojulikana vya lugha ya C na baadhi ya mikopo kutoka kwa lugha ya Python. Lugha ni fupi kabisa, lakini kanuni ni rahisi kusoma na kuelewa. Msimbo wa Go hukusanywa katika faili za pekee zinazoweza kutekelezeka za binary ambazo huendeshwa kienyeji bila kutumia mashine pepe (kuweka wasifu, moduli za utatuzi, na mifumo mingine midogo ya kugundua tatizo wakati wa utekelezaji imeunganishwa kama vipengee vya wakati wa utekelezaji), ambayo inaruhusu utendaji kulinganishwa na programu za C.

Mradi huo hapo awali umeandaliwa kwa jicho la upangaji wa nyuzi nyingi na utendakazi mzuri kwenye mifumo ya msingi-nyingi, ikijumuisha kutoa njia za kiwango cha opereta kwa ajili ya kuandaa kompyuta sambamba na mwingiliano kati ya mbinu zinazotekelezwa sambamba. Lugha pia hutoa ulinzi uliojengwa ndani dhidi ya vizuizi vya kumbukumbu vilivyotengwa zaidi na hutoa uwezo wa kutumia mtozaji wa takataka.

Toleo jipya linaongeza usaidizi wa kazi na aina za generic (generics), kwa usaidizi ambao msanidi anaweza kufafanua na kutumia vipengele vilivyoundwa kufanya kazi na aina kadhaa mara moja. Pia inawezekana kutumia violesura kuunda aina zilizounganishwa ambazo zinajumuisha aina nyingi za data. Usaidizi wa jenetiki unatekelezwa bila kuvunja upatanifu wa nyuma na msimbo uliopo. // Jumla ya viwango vya kuweka, hufanya kazi kwa int64 na aina float64 func SumIntsOrFloats[K kulinganishwa, V int64 | float64](m ramani[K]V) V { var s V kwa _, v := mbalimbali m { s += v } rudisha s } // Chaguo jingine lenye ufafanuzi wa aina ya jumla: aina Kiolesura cha Nambari { int64 | float64 } func SumNumbers[K kulinganishwa, V Idadi](m ramani[K]V) V { var s V kwa _, v := mbalimbali m { s += v } kurudi s }

Maboresho mengine:

  • Huduma za kupima msimbo wa fuzzing zimeunganishwa kwenye zana ya kawaida ya zana. Wakati wa majaribio ya kutatanisha, mtiririko wa michanganyiko yote iwezekanayo ya data ya ingizo hutolewa na kushindwa kuwezekana wakati wa kuchakata kunarekodiwa. Mfuatano ukiacha kufanya kazi au haulingani na jibu linalotarajiwa, basi tabia hii ina uwezekano mkubwa wa kuonyesha hitilafu au uwezekano wa kuathiriwa.
  • Usaidizi ulioongezwa kwa nafasi za kazi za moduli nyingi, hukuruhusu kutekeleza amri kwenye moduli nyingi mara moja, kukuruhusu kuunda na kuendesha msimbo kwa wakati mmoja katika moduli nyingi.
  • Uboreshaji mkubwa wa utendakazi umefanywa kwa mifumo kulingana na vichakataji vya Apple M1, ARM64 na PowerPC64. Imewasha uwezo wa kutumia rejista badala ya rafu ili kupitisha hoja kwa chaguo za kukokotoa na kurejesha matokeo. Ufunguaji wa ndani wa vitanzi ulioboreshwa na mkusanyaji. Kuangalia aina katika mkusanyaji kumeundwa upya kabisa. Baadhi ya majaribio yanaonyesha ongezeko la 20% la utendakazi wa msimbo ikilinganishwa na toleo la awali, lakini ukusanyaji wenyewe huchukua takriban 15%.
  • Katika wakati wa kukimbia, ufanisi wa kurejesha kumbukumbu huru kwenye mfumo wa uendeshaji umeongezeka na uendeshaji wa mtozaji wa takataka umeboreshwa, tabia ambayo imekuwa kutabirika zaidi.
  • Vifurushi vipya net/netip na debug/buildinfo vimeongezwa kwenye maktaba ya kawaida. Usaidizi wa TLS 1.0 na 1.1 umezimwa kwa chaguomsingi katika msimbo wa mteja. Sehemu ya crypto/x509 imeacha kuchakata vyeti vilivyotiwa saini kwa kutumia heshi ya SHA-1.
  • Mahitaji ya mazingira katika Linux yamekuzwa ili kufanya kazi, sasa unahitaji kuwa na kinu cha Linux cha angalau toleo la 2.6.32. Katika toleo lijalo, mabadiliko sawia yanatarajiwa kwa FreeBSD (utumiaji wa tawi la FreeBSD 11.x utakatishwa) na angalau FreeBSD 12.2 itahitajika kufanya kazi.

Chanzo: opennet.ru

Kuongeza maoni