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 vitendakazi na aina za jumla, ikiruhusu msanidi programu kufafanua na kutumia vitendaji vinavyofanya kazi na aina nyingi. Pia hutoa uwezo wa kutumia violesura kuunda aina zilizounganishwa ambazo zinajumuisha aina nyingi za data. Jenetiki zinaweza kutumika bila kuvunja utangamano wa nyuma na msimbo uliopo. // Kujumlisha maadili yaliyowekwa, kufanya kazi kwa aina za int64 na 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:
- Seti ya zana ya kawaida inajumuisha huduma zilizounganishwa za kuchanganya msimbo. Jaribio la kutatanisha linahusisha kutoa mtiririko wa michanganyiko yote ya data ya ingizo bila mpangilio na kurekodi matatizo yanayoweza kutokea wakati wa kuchakata. Ikiwa mfuatano wowote utasababisha kuacha kufanya kazi au haulingani na jibu linalotarajiwa, tabia hii ina uwezekano mkubwa kuwa dalili ya hitilafu au uwezekano wa kuathiriwa.
- Usaidizi ulioongezwa kwa nafasi za kazi za moduli nyingi, ambazo hukuruhusu kutekeleza amri kwenye moduli nyingi mara moja, hukuruhusu kuunda na kuendesha msimbo katika moduli nyingi kwa wakati mmoja.
- Uboreshaji mkubwa wa utendakazi umetekelezwa kwa mifumo kulingana na vichakataji vya Apple M1, ARM64, na PowerPC64. Uwezo wa kutumia rejista badala ya rafu kwa kupitisha hoja kwa chaguo za kukokotoa na kurejesha matokeo umewashwa. Ufunguaji wa kitanzi cha ndani na mkusanyaji umeboreshwa. Kuangalia aina katika mkusanyaji kumeundwa upya kabisa. Baadhi ya majaribio yanaonyesha utendakazi kuboreshwa kwa 20% ikilinganishwa na toleo la awali, lakini ukusanyaji wenyewe sasa unachukua takriban 15%.
- Wakati wa kukimbia, ufanisi wa kurejesha kumbukumbu huru kwenye mfumo wa uendeshaji umeongezeka, na mtozaji wa takataka umeboreshwa, na kufanya tabia yake 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 haichakati tena vyeti vilivyotiwa saini kwa kutumia heshi ya SHA-1.
- Mahitaji ya mazingira ya Linux yameongezwa, yakihitaji angalau toleo la Linux kernel 2.6.32. Mabadiliko sawa na haya yanatarajiwa kwa FreeBSD katika toleo lijalo (utumiaji wa tawi la FreeBSD 11.x hautaendelezwa), na FreeBSD 12.2 itahitajika kwa uendeshaji.
Chanzo: opennet.ru
