Ewch rhyddhau iaith raglennu 1.18

Mae rhyddhau'r iaith raglennu Go 1.18 yn cael ei gyflwyno, sy'n cael ei ddatblygu gan Google gyda chyfranogiad y gymuned fel datrysiad hybrid sy'n cyfuno perfformiad uchel ieithoedd wedi'u llunio gyda chymaint o fanteision sgriptio ieithoedd fel rhwyddineb. ysgrifennu cod, datblygiad cyflym a diogelu gwallau. Mae cod y prosiect yn cael ei ddosbarthu o dan y drwydded BSD.

Mae cystrawen Go yn seiliedig ar elfennau cyfarwydd yr iaith C gyda rhai benthyciadau o'r iaith Python. Mae'r iaith yn eithaf cryno, ond mae'r cod yn hawdd i'w ddarllen a'i ddeall. Mae cod Go wedi'i lunio'n ffeiliau gweithredadwy deuaidd ar wahΓ’n sy'n rhedeg yn frodorol heb ddefnyddio peiriant rhithwir (mae proffilio, dadfygio, ac is-systemau canfod problemau amser rhedeg eraill wedi'u hintegreiddio fel cydrannau amser rhedeg), sy'n caniatΓ‘u cyflawni perfformiad tebyg i raglenni C.

Datblygir y prosiect i ddechrau gyda llygad ar raglennu aml-edau a gweithrediad effeithlon ar systemau aml-graidd, gan gynnwys darparu dulliau a weithredir ar lefel gweithredwr ar gyfer trefnu cyfrifiadura cyfochrog a rhyngweithio rhwng dulliau a weithredir yn gyfochrog. Mae'r iaith hefyd yn darparu amddiffyniad adeiledig rhag gor-redeg o flociau cof a neilltuwyd ac yn darparu'r gallu i ddefnyddio'r casglwr sbwriel.

Mae'r fersiwn newydd yn ychwanegu cefnogaeth ar gyfer swyddogaethau a mathau generig (generics), gyda chymorth y gall datblygwr ddiffinio a defnyddio swyddogaethau sydd wedi'u cynllunio i weithio gyda sawl math ar unwaith. Mae hefyd yn bosibl defnyddio rhyngwynebau i greu mathau cyfun sy'n rhychwantu mathau lluosog o ddata. Rhoddir cymorth ar gyfer generig ar waith heb dorri'n Γ΄l y cydnawsedd Γ’'r cod presennol. // Swm gwerthoedd gosod, gweithiau ar gyfer mathau int64 a fflΓ΄t64 func SumIntsOrFloats[K cymaradwy, V int64 | float64](m map[K]V) V { var s V am _, v := amrediad m { s += v } dychwelyd s } // Opsiwn arall gyda diffiniad math generig: math Rhif rhyngwyneb { int64 | arnofio64 } func Rhifau Swm[K tebyg, V Rhif](m map[K]V) V { var s V am _, v := amrediad m { s += v } dychwelyd s }

Gwelliannau eraill:

  • Mae cyfleustodau ar gyfer profi cod niwlog wedi'u hintegreiddio i'r pecyn cymorth safonol. Yn ystod profion niwlog, cynhyrchir llif o'r holl gyfuniadau hap posibl o ddata mewnbwn a chofnodir methiannau posibl yn ystod eu prosesu. Os bydd dilyniant yn damwain neu ddim yn cyfateb i'r ymateb disgwyliedig, yna mae'r ymddygiad hwn yn debygol iawn o ddangos byg neu fregusrwydd.
  • Cefnogaeth ychwanegol ar gyfer gweithleoedd aml-fodiwlaidd, sy'n eich galluogi i weithredu gorchmynion ar fodiwlau lluosog ar unwaith, gan ganiatΓ‘u i chi adeiladu a rhedeg cod mewn modiwlau lluosog ar yr un pryd.
  • Mae optimeiddiadau perfformiad sylweddol wedi'u gwneud ar gyfer systemau sy'n seiliedig ar broseswyr Apple M1, ARM64 a PowerPC64. Wedi galluogi'r gallu i ddefnyddio cofrestri yn lle'r pentwr i drosglwyddo dadleuon i swyddogaethau a dychwelyd y canlyniad. Gwell dadrolio dolenni mewn-lein gan y casglwr. Mae gwirio math yn y casglwr wedi'i ailgynllunio'n llwyr. Mae rhai profion yn dangos cynnydd o 20% mewn perfformiad cod o'i gymharu Γ’'r datganiad blaenorol, ond mae llunio ei hun yn cymryd tua 15% yn hirach.
  • Mewn amser rhedeg, mae effeithlonrwydd dychwelyd cof wedi'i ryddhau i'r system weithredu wedi'i gynyddu ac mae gweithrediad y casglwr sbwriel wedi'i wella, y mae ei ymddygiad wedi dod yn fwy rhagweladwy.
  • Mae pecynnau newydd net/netip a debug/buildinfo wedi'u hychwanegu at y llyfrgell safonol. Mae cefnogaeth i TLS 1.0 ac 1.1 wedi'i analluogi yn ddiofyn yn y cod cleient. Mae'r modiwl crypto/x509 wedi rhoi'r gorau i brosesu tystysgrifau a lofnodwyd gan ddefnyddio'r hash SHA-1.
  • Mae'r gofynion ar gyfer yr amgylchedd yn Linux wedi'u codi; i weithio, mae angen i chi nawr gael cnewyllyn Linux o fersiwn 2.6.32 o leiaf. Yn y datganiad nesaf, disgwylir newidiadau tebyg ar gyfer FreeBSD (caiff cefnogaeth i gangen FreeBSD 11.x ei dirwyn i ben) a bydd angen o leiaf FreeBSD 12.2 i weithio.

Ffynhonnell: opennet.ru

Ychwanegu sylw