Derxistina zimanê bernamenûsê Go 1.18

Serbestberdana zimanê bernamenûsê Go 1.18, ku ji hêla Google ve bi beşdariya civatê ve wekî çareseriyek hîbrîd tê pêşve xistin, ku performansa bilind a zimanên berhevkirî bi avantajên weha yên zimanên nivîsandinê re wekî hêsaniya nivîsandina kodê vedihewîne, tê pêşkêş kirin. , leza pêşveçûn û parastina çewtiyê. Koda projeyê di bin lîsansa BSD de tê belav kirin.

Hevoksaziya Go li ser hêmanên naskirî yên zimanê C-yê bi hin deynên ji zimanê Python-ê ve girêdayî ye. Ziman pir kurt e, lê kod hêsan e ku meriv were xwendin û fêm kirin. Koda Go-yê di pelên îcrakar ên binaryê yên serbixwe de ku bi xwemalî bêyî karanîna makîneyek virtual dimeşin (profilkirin, modulên debugkirinê, û binepergalên din ên tespîtkirina pirsgirêka xebitandinê wekî hêmanên dema xebitandinê têne yek kirin) têne berhev kirin, ku destûrê dide performansa ku bi bernameyên C re were berhev kirin.

Proje di destpêkê de bi çavek bernamesaziya pir-mijarî û xebata bikêrhatî ya li ser pergalên pir-bingehîn, di nav de peydakirina rêgezên di asta operatorê de ji bo organîzekirina hesabkirina paralel û danûstendina di navbera rêbazên paralel-rêveberî de tête pêşve xistin. Ziman di heman demê de parastina çêkirî li hember blokên bîranînê yên zêde veqetandî peyda dike û şiyana karanîna berhevkerek çopê peyda dike.

Guhertoya nû ji bo fonksiyon û celebên gelemperî (generics) piştgirî zêde dike, bi alîkariya wan pêşdebirek dikare fonksiyonên ku ji bo xebitandina çend celeban di yek carî de hatine çêkirin diyar bike û bikar bîne. Di heman demê de gengaz e ku meriv navberan bikar bîne da ku celebên hevgirtî yên ku gelek celeb daneyan vedigirin biafirînin. Piştgiriya ji bo generîkê bêyî têkbirina lihevhatina paşverû ya bi koda heyî re tête bicîh kirin. // Nirxên berhevokê, ji bo celebên int64 û float64 dixebite SumIntsOrFloats[K comparable, V int64 | float64](m nexşe[K]V) V { var s V ji bo _, v := range m { s += v } vegere s } // Vebijarkek din a bi pênaseya tîpa giştî: cureya Navbera Hejmarê { int64 | float64 } func SumNumbers[K comparable, V Hejmar](m map[K]V) V { var s V for _, v := range m { s += v } vegere s }

Pêşveçûnên din:

  • Karûbarên ji bo ceribandina koda fuzzing di nav amûra standard de têne yek kirin. Di dema ceribandina fuzzingê de, herikek ji hemî berhevokên rasthatî yên gengaz ên daneya têketinê têne hilberandin û têkçûnên muhtemel ên di dema pêvajoya wan de têne tomar kirin. Ger rêzek têk bibe an bi bersiva bendewar re negire, wê hingê ev tevger bi îhtîmalek mezin xeletiyek an qelsiyek destnîşan dike.
  • Piştgiriyek ji bo cîhên xebatê yên pir-modular zêde kir, dihêle hûn bi yekcarî fermanan li ser gelek modulan bicîh bikin, dihêlin hûn bi hevdemî kodê di gelek modulan de ava bikin û bimeşînin.
  • Ji bo pergalên ku li ser pêvajoyên Apple M1, ARM64 û PowerPC64-ê têne çêkirin, xweşbîniyên performansê yên girîng hatine çêkirin. Kapasîteya karanîna tomaran li şûna stikê ji bo derbaskirina argumanan li fonksiyonan û vegerandina encamê çalak kir. Ji hêla berhevkar ve venekirina lûpkan a hundurîn çêtirîn. Kontrolkirina tîpê di berhevkerê de bi tevahî ji nû ve hatî sêwirandin. Hin ceribandin li gorî serbestberdana berê 20% zêdebûnek di performansa kodê de destnîşan dikin, lê berhevkirin bixwe% 15 dirêjtir digire.
  • Di dema xebitandinê de, karbidestiya vegerandina bîranîna azadkirî li pergala xebitandinê zêde bûye û xebata berhevkerê çopê baştir bûye, ku tevgera wê pêşbîntir bûye.
  • Pakêtên nû net/netip û debug/buildinfo li pirtûkxaneya standard hatine zêdekirin. Piştgiriya TLS 1.0 û 1.1 di koda xerîdar de ji hêla xwerû ve neçalak e. Modula krîpto/x509 pêvajokirina sertîfîkayên ku bi karanîna hash SHA-1 hatine îmzekirin rawestandiye.
  • Pêdiviyên ji bo jîngehê di Linux-ê de hatine zêdekirin ku hûn bixebitin, hûn naha hewce ne ku bi kêmî ve guhertoya 2.6.32-ya Linux-ê hebe. Di weşana din de, ji bo FreeBSD guhertinên bi vî rengî têne hêvî kirin (piştgiriya ji bo şaxa FreeBSD 11.x dê were sekinandin) û bi kêmanî FreeBSD 12.2 dê hewce bike ku bixebite.

Source: opennet.ru

Add a comment