Iru programlingvo eldono 1.16

Estas prezentita la eldono de la programlingvo Go 1.16, kiu estas disvolvita de Google kun la partopreno de la komunumo kiel hibrida solvo, kiu kombinas la altan rendimenton de kompilitaj lingvoj kun tiaj avantaĝoj de skriptlingvoj kiel facileco de skribkodo. , rapideco de disvolviĝo kaj erarprotekto. La projektkodo estas distribuita sub la permesilo BSD.

La sintakso de Go baziĝas sur konataj elementoj de la C-lingvo kun kelkaj pruntoj de la Python-lingvo. La lingvo estas sufiĉe konciza, sed la kodo estas facile legebla kaj komprenebla. Go-kodo estas kompilita en memstarajn binarajn ruleblajn dosierojn kiuj funkcias denaske sen uzado de virtuala maŝino (profilado, sencimigaj moduloj, kaj aliaj rultempaj problemo-detektaj subsistemoj estas integritaj kiel rultempaj komponentoj), kio enkalkulas efikecon komparebla al C-programoj.

La projekto estas komence evoluigita kun okulo al plurfadena programado kaj efika operacio sur plurkernaj sistemoj, inkluzive de disponigado de funkciigist-nivelaj rimedoj por organizado de paralela komputado kaj interagado inter paralel-efektivigitaj metodoj. La lingvo ankaŭ disponigas enkonstruitan protekton kontraŭ troasignitaj memorblokoj kaj disponigas la kapablon uzi rubkolektilon.

Ŝlosilaj novaj funkcioj enkondukitaj en Go 1.16:

  • Aldonita la embed pako, kiu provizas ilojn por enigi arbitrajn dosierojn kaj dosierujojn en la programon. Nova direktivo "//go:embed" estas provizita por specifi dosierojn por esti enkonstruitaj ĉe kompiltempo. Ekzemple, specifi "//go: embed test.txt" en la kodokomento kaj poste deklari la variablon "var f embed.FS" kondukos al la enkonstruado de la test.txt dosiero kaj la kapablo aliri ĝin per la " f” priskribilo. Simile, vi povas enkonstrui dosierojn kun rimedoj aŭ individuaj valoroj de certa tipo necesaj por laboro, ekzemple, por akiri la ĉenvariablon "s" el la versio.txt-dosiero, vi povas specifi: import _ "embed". ” // go: embed version.txt var s string print (j)
  • Defaŭlte, la nova modulsistemo kun integra versio-subteno nun estas postulata, anstataŭigante GOPATH-bazitan dependecadministradon. La mediovariablo GO111MODULE nun estas agordita al "ŝaltita" defaŭlte kaj modula reĝimo estas uzata sendepende de la ĉeesto de go.mod dosiero en la laboranta aŭ gepatra dosierujo. En la nova reĝimo, konstruaj komandoj kiel "go build" kaj "go test" ne ŝanĝas la enhavon de go.mod kaj go.sum, kaj la komando "go install" procesas versioargumentojn ("iru instalu ekzemplon.com/).[retpoŝte protektita]"). Por redoni la malnovan konduton, ŝanĝu GO111MODULE al "aŭtomata". Oni rimarkas, ke 96% de programistoj jam ŝanĝis al la nova modula sistemo.
  • La ligilo estis optimumigita. Por grandaj projektoj, aranĝo nun estas 20-25% pli rapida kaj postulas 5-15% malpli da memoro.
  • La kompililo aldonis subtenon por enlinia ekspansio de funkcioj kun mallongigitaj difinoj de "por" bukloj, metodovaloroj kaj "tipŝaltilo" konstrukcioj.
  • Aldonita subteno por Apple-sistemoj ekipitaj per la nova Apple M1 ARM-peceto. Aldonitaj netbsd/arm64 kaj openbsd/mips64-havenoj kun subteno por NetBSD sur 64-bita ARM kaj OpenBSD sur MIPS64-sistemoj. Aldonita subteno por cgo kaj la "-buildmode=pie" reĝimo al la linukso/riscv64-haveno.
  • Subteno por x87-kompila reĝimo estas nuligita (GO386=387). Subteno por seninstruaj procesoroj SSE2 nun haveblas per la softvarreĝimo "GO386=softfloat".

Aldone, ni povas noti la komencon de testado de la beta-eldono de la lingvo Dart 2.12, en kiu la sekura reĝimo por uzi la "Nula" valoro (nula sekureco) estis stabiligita, kio helpos eviti kraŝojn kaŭzitajn de provoj uzi variablojn kies valoro estas nedifinita kaj agordita al "Nula". La reĝimo implicas, ke variabloj ne povas havi nulvalorojn krom se ili estas eksplicite asignitaj la valoro nul. La reĝimo strikte respektas variajn tipojn, kio permesas al la kompililo apliki pliajn optimumigojn. Tipo-konformeco estas kontrolita je kompilo, ekzemple, se vi provas asigni la valoron "Null" al variablo kun tipo, kiu ne implicas nedifinitan staton, kiel "int", eraro estos montrata.

fonto: opennet.ru

Aldoni komenton