Ale langaj pwogramasyon 1.18 lage

Yo prezante liberasyon an nan lang pwogramasyon Go 1.18, ki ap devlope pa Google ak patisipasyon kominote a kòm yon solisyon ibrid ki konbine pèfòmans nan segondè nan lang konpile ak avantaj sa yo nan lang scripting kòm fasilite nan ekri kòd. , vitès nan devlopman ak pwoteksyon erè. Kòd pwojè a distribye anba lisans BSD.

Sentaks Go a baze sou eleman abitye nan lang C ak kèk prete nan lang Python. Lang lan byen kout, men kòd la fasil pou li epi konprann. Kòd Go konpile nan dosye otonòm binè ègzèkutabl ki kouri natif natal san yo pa itilize yon machin vityèl (profilaj, modil debogaj, ak lòt sous-sistèm deteksyon pwoblèm ègzekutabl yo entegre kòm konpozan ègzekutabl), ki pèmèt pou pèfòmans konparab ak pwogram C yo.

Pwojè a okòmansman devlope ak yon je nan pwogram milti-threaded ak operasyon efikas sou sistèm milti-debaz, ki gen ladan bay mwayen nan nivo operatè pou òganize informatique paralèl ak entèraksyon ant metòd paralèl egzekite. Lang lan tou bay pwoteksyon entegre kont blòk memwa ki twò atribye yo epi li bay kapasite pou sèvi ak yon pèseptè fatra.

Nouvo vèsyon an ajoute sipò pou fonksyon jenerik ak kalite (jenerik), avèk èd ki yon pwomotè ka defini epi sèvi ak fonksyon ki fèt pou travay ak plizyè kalite alafwa. Li posib tou pou itilize interfaces pou kreye kalite konbine ki kouvri plizyè kalite done. Sipò pou jenerik aplike san yo pa kraze konpatibilite bak ak kòd ki egziste deja. // Sòm mete valè, travay pou int64 ak float64 kalite func SumIntsOrFloats[K konparab, V int64 | float64](m map[K]V) V { var s V pou _, v := ranje m { s += v } return s } // Yon lòt opsyon ki gen yon definisyon jenerik tip: type Number interface { int64 | float64 } func SumNumbers[K konparab, V Nimewo](m kat[K]V) V { var s V pou _, v := ranje m { s += v } retounen s }

Lòt amelyorasyon:

  • Itilite pou tès kòd fuzzing yo entegre nan bwat zouti estanda a. Pandan tès fuzzing, yon kouran tout posib konbinezon o aza nan done opinyon yo pwodwi ak echèk posib pandan pwosesis yo anrejistre. Si yon sekans aksidan oswa pa matche ak repons yo espere a, Lè sa a, konpòtman sa a gen anpil chans pou endike yon ensèk oswa vilnerabilite.
  • Te ajoute sipò pou espas travay milti-modilè, ki pèmèt ou egzekite kòmandman sou plizyè modil an menm tan, sa ki pèmèt ou ansanm bati ak kouri kòd nan plizyè modil.
  • Optimizasyon pèfòmans enpòtan yo te fè pou sistèm ki baze sou Apple M1, ARM64 ak PowerPC64 processeurs. Pèmèt kapasite nan sèvi ak rejis olye pou yo pile a pase agiman nan fonksyon epi retounen rezilta a. Amelyore dewoulman inline nan bouk pa du a. Kalite tcheke nan du a te konplètman reamenaje. Gen kèk tès ki montre yon ogmantasyon 20% nan pèfòmans kòd konpare ak lage anvan an, men konpilasyon tèt li pran apeprè 15% ankò.
  • Nan ègzekutabl, efikasite nan retounen memwa libere nan sistèm operasyon an te ogmante ak operasyon an nan pèseptè fatra a te amelyore, konpòtman an ki te vin pi previzib.
  • Nouvo pakè net/netip ak debug/buildinfo yo te ajoute nan bibliyotèk estanda a. Sipò pou TLS 1.0 ak 1.1 enfim pa default nan kòd kliyan an. Modil Crypto/x509 la sispann trete sètifika ki siyen lè l sèvi avèk hash SHA-1 la.
  • Kondisyon yo pou anviwònman an nan Linux yo te ogmante; pou travay, ou bezwen kounye a gen yon nwayo Linux ki gen omwen vèsyon 2.6.32. Nan pwochen vèsyon an, chanjman ki sanble yo espere pou FreeBSD (sipò pou branch FreeBSD 11.x yo pral sispann) epi omwen FreeBSD 12.2 pral oblije travay.

Sous: opennet.ru

Add nouvo kòmantè