Paglabas ng Go programming language 1.13

Ipinasa ni paglabas ng programming language Pumunta 1.13, na binuo ng Google na may partisipasyon ng komunidad bilang isang hybrid na solusyon na pinagsasama ang mataas na pagganap ng mga pinagsama-samang wika na may mga pakinabang ng mga scripting wika tulad ng kadalian ng pagsulat ng code, bilis ng pag-unlad at proteksyon ng error. Code ng proyekto ipinamahagi ni sa ilalim ng lisensya ng BSD.

Ang syntax ni Go ay batay sa mga pamilyar na elemento ng wikang C na may ilang mga paghiram mula sa wikang Python. Ang wika ay medyo maigsi, ngunit ang code ay madaling basahin at maunawaan. Ang go code ay pinagsama-sama sa mga stand-alone na binary executable na tumatakbo nang native nang hindi gumagamit ng virtual machine (pag-profile, pag-debug, at iba pang mga subsystem ng pag-detect ng problema sa runtime ay isinama bilang mga bahagi ng runtime), na nagpapahintulot sa iyo na makamit ang pagganap na maihahambing sa mga programang C.

Ang proyekto ay unang binuo na may mata sa multi-threaded programming at mahusay na operasyon sa mga multi-core system, kabilang ang pagbibigay ng mga paraan sa antas ng operator para sa pag-aayos ng parallel computing at pakikipag-ugnayan sa pagitan ng mga parallel-executed na pamamaraan. Nagbibigay din ang wika ng built-in na proteksyon laban sa mga over-allocated na bloke ng memorya at nagbibigay ng kakayahang gumamit ng garbage collector.

Ang pangunahing mga inobasyonipinakilala sa Go 1.13 release:

  • Ang crypto/tls package ay may protocol support na naka-enable bilang default TLS 1.3. Nagdagdag ng bagong package na "crypto/ed25519" na may suporta para sa Ed25519 digital signatures;
  • Nagdagdag ng suporta para sa mga bagong numeric literal na prefix upang tukuyin ang mga binary na numero (hal. 0b101), octal (0o377), haka-haka (2.71828i) at hexadecimal floating point (0x1p-1021), at ang kakayahang gamitin ang "_" na character para makitang magkahiwalay ang mga digit sa malaking bilang (1_000_000);
  • Ang paghihigpit sa paggamit lamang ng mga hindi napirmahang counter sa mga pagpapatakbo ng shift ay inalis, na nag-iwas sa mga hindi kinakailangang conversion sa uri ng uint bago gamitin ang mga operator na "β€Ήβ€Ή" at "β€Ίβ€Ί";
  • Nagdagdag ng suporta para sa platform ng Illumos (GOOS=illumos). Natiyak ang pagiging tugma sa platform ng Android 10. Ang mga kinakailangan para sa mga minimum na bersyon ng FreeBSD (11.2) at macOS (10.11 β€œEl Capitan”) ay nadagdagan.
  • Ang patuloy na pagbuo ng bagong module system, na maaaring magamit bilang alternatibo sa GOPATH. Taliwas sa naunang inanunsyo na mga plano sa Go 1.13, ang system na ito ay hindi pinagana bilang default at nangangailangan ng pag-activate sa pamamagitan ng GO111MODULE=on variable o ang paggamit ng konteksto kung saan ang mga module ay awtomatikong inilalapat. Nagtatampok ang bagong module system ng pinagsamang suporta sa pag-bersyon, mga kakayahan sa paghahatid ng package, at pinahusay na pamamahala ng dependency. Sa mga module, hindi na nakatali ang mga developer sa pagtatrabaho sa loob ng isang GOPATH tree, maaaring tahasang tukuyin ang mga naka-bersyon na dependency, at gumawa ng mga paulit-ulit na build.

    Hindi tulad ng mga nakaraang release, gumagana na ngayon ang awtomatikong application ng bagong system kapag ang isang go.mod file ay naroroon sa kasalukuyang gumaganang direktoryo o parent na direktoryo kapag pinapatakbo ang go command, kasama na kapag ito ay nasa direktoryo ng GOPATH/src. Naidagdag ang mga bagong variable ng kapaligiran: GOPRIVATE, na tumutukoy sa mga landas ng mga module na naa-access ng publiko, at GOSUMDB, na tumutukoy sa mga parameter ng access sa checksum database para sa mga module na hindi nakalista sa go.sum file;

  • Ang "go" command bilang default ay naglo-load ng mga module at sinusuri ang kanilang integridad gamit ang module mirror at checksum database na pinapanatili ng Google (proxy.golang.org, sum.golang.org at index.golang.org);
  • Ang suporta para lamang sa mga binary na pakete ay hindi na ipinagpatuloy; ang pagbuo ng isang pakete sa mode na β€œ//go:binary-only-package” ay nagreresulta na ngayon sa isang error;
  • Nagdagdag ng suporta para sa suffix na "@patch" sa command na "go get", na nagsasaad na dapat i-update ang module sa pinakabagong release ng maintenance, ngunit hindi binabago ang kasalukuyang major o minor na bersyon;
  • Kapag kumukuha ng mga module mula sa mga source control system, ang "go" command ay nagsasagawa na ngayon ng karagdagang pagsusuri sa string ng bersyon, sinusubukang itugma ang mga pseudo-version na numero sa metadata mula sa repository;
  • Nagdagdag ng suporta inspeksyon ng pagkakamali (error wrapping) sa pamamagitan ng paggawa ng mga wrapper na nagbibigay-daan sa paggamit ng mga karaniwang error handler. Halimbawa, mali Ang "e" ay maaaring balot sa error na "w" sa pamamagitan ng pagbibigay ng isang pamamaraan Ibalot, nagbabalik ng "w". Ang parehong mga error na "e" at "w" ay magagamit sa programa at ang mga pagpapasya ay ginawa batay sa error na "w", ngunit ang "e" ay nagbibigay ng karagdagang konteksto sa "w" o binibigyang-kahulugan ito nang iba;
  • Ang pagganap ng mga bahagi ng runtime ay na-optimize (isang pagtaas ng bilis ng hanggang 30% ay nabanggit) at isang mas agresibong pagbabalik ng memorya sa operating system ay ipinatupad (dati, ang memorya ay ibinalik pagkatapos ng lima o higit pang mga minuto, ngunit ngayon ay kaagad pagkatapos bawasan ang laki ng heap).

Pinagmulan: opennet.ru

Magdagdag ng komento