Go rhyddhau iaith rhaglennu 1.16

Mae rhyddhau'r iaith raglennu Go 1.16 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.

Datblygiadau arloesol allweddol a gyflwynwyd yn natganiad Go 1.16:

  • Mae'r pecyn mewnosod wedi'i ychwanegu, sy'n darparu offer ar gyfer ymgorffori ffeiliau a chyfeiriaduron mympwyol yn y rhaglen. Darperir cyfarwyddeb "//go:embed" newydd i nodi'r ffeiliau i'w mewnosod ar amser llunio. Er enghraifft, bydd nodi'r sylw "//go:embed test.txt" yn y cod a datgan y newidyn "var f embed.FS" fel dilyniant yn arwain at fewnosod y ffeil test.txt a'r posibilrwydd o cael mynediad iddo trwy'r disgrifydd "f". Yn yr un modd, gallwch chi fewnosod ffeiliau gydag adnoddau neu werthoedd unigol o fath penodol sy'n angenrheidiol ar gyfer gwaith, er enghraifft, i gael y newidyn llinyn "s" o'r ffeil version.txt, gallwch chi nodi: mewnforio _ "embed" // go:embed version.txt var s llinyn print(s)
  • Mae'r rhagosodiad nawr yn gofyn am ddefnyddio system fodiwlau newydd gyda chefnogaeth fersiwn integredig sy'n disodli rheolaeth dibyniaeth ar sail GOPATH. Mae newidyn amgylchedd GO111MODULE bellach wedi'i osod i "ymlaen" yn ddiofyn, a defnyddir modd modiwlau waeth beth fo presenoldeb ffeil go.mod yn y cyfeiriadur gweithio neu riant. Yn y modd newydd, nid yw gorchmynion adeiladu fel "go build" a "go test" yn addasu cynnwys go.mod a go.sum, tra bod "go install" yn prosesu dadleuon fersiwn-benodol ("ewch gosod enghraifft.com/[e-bost wedi'i warchod]"). I ddychwelyd yr hen ymddygiad, newidiwch GO111MODULE i "auto". Nodir bod 96% o ddatblygwyr eisoes wedi newid i'r system fodiwlau newydd.
  • Mae'r cysylltydd wedi'i optimeiddio. Ar gyfer prosiectau mawr, mae cysylltu bellach 20-25% yn gyflymach ac mae angen 5-15% yn llai o gof.
  • Mae'r casglwr yn ychwanegu cefnogaeth ar gyfer ehangu swyddogaeth fewnol gyda diffiniad byrrach o ddolenni 'ar gyfer', gwerthoedd dull, a lluniadau 'switsh math'.
  • Cefnogaeth ychwanegol i systemau Apple sydd Γ’'r sglodyn ARM Apple M1 newydd. Ychwanegwyd porthladdoedd netbsd/arm64 ac openbsd/mips64 gyda chefnogaeth i NetBSD ar ARM 64-bit ac OpenBSD ar systemau MIPS64. Mae cefnogaeth ar gyfer modd cgo a "-buildmode=pie" wedi'i ychwanegu at y porthladd linux/riscv64.
  • Mae cefnogaeth ar gyfer modd crynhoi x87 wedi'i ollwng (GO386 = 387). Mae cefnogaeth i broseswyr heb gyfarwyddiadau SSE2 bellach ar gael trwy'r modd rhaglen "GO386 = softfloat".

Yn ogystal, gallwn nodi dechrau profi rhyddhau beta yr iaith Dart 2.12, lle mae'r modd diogelwch null wedi'i sefydlogi, a fydd yn osgoi damweiniau a achosir gan ymdrechion i ddefnyddio newidynnau nad yw eu gwerth wedi'i ddiffinio a'i osod i Null. Mae'r modd yn awgrymu na all newidynnau gael gwerthoedd heb eu diffinio oni bai eu bod wedi'u gosod yn benodol i null. Mae'r modd yn rhoi ystyriaeth fanwl i'r mathau o newidynnau, sy'n caniatΓ‘u i'r casglwr gymhwyso optimeiddiadau ychwanegol. Mae paru math yn cael ei wirio ar amser llunio, er enghraifft, os ceisiwch aseinio'r gwerth "Null" i newidyn gyda math nad yw'n awgrymu cyflwr amhenodol, megis "int", bydd gwall yn cael ei arddangos.

Ffynhonnell: opennet.ru

Ychwanegu sylw