Paglabas ng Go programming language 1.18

Ang paglabas ng Go 1.18 programming language ay ipinakita, na binuo ng Google kasama ang pakikilahok ng komunidad bilang isang hybrid na solusyon na pinagsasama ang mataas na pagganap ng mga pinagsama-samang wika na may mga pakinabang ng mga wika ng script bilang kadalian ng pagsulat ng code , bilis ng pag-unlad at proteksyon ng error. Ang code ng proyekto ay ipinamahagi 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 file na native na tumatakbo nang hindi gumagamit ng virtual machine (profiling, debugging modules, at iba pang runtime problem detection subsystem ay isinama bilang runtime component), na nagbibigay-daan para sa performance na maihahambing sa mga C program.

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 bagong bersyon ay nagdaragdag ng suporta para sa mga generic na function at uri (generics), sa tulong kung saan ang isang developer ay maaaring tumukoy at gumamit ng mga function na idinisenyo upang gumana sa ilang mga uri nang sabay-sabay. Posible ring gumamit ng mga interface upang lumikha ng mga pinagsamang uri na sumasaklaw sa maraming uri ng data. Ang suporta para sa mga generic ay ipinatupad nang hindi sinisira ang paatras na pagiging tugma sa umiiral na code. // Sum set values, gumagana para sa int64 at float64 na mga uri ng function na SumIntsOrFloats[K comparable, V int64 | float64](m mapa[K]V) V { var s V para sa _, v := range m { s += v } return s } // Isa pang opsyon na may generic na uri ng kahulugan: type Number interface { int64 | float64 } func SumNumbers[K comparable, V Number](m map[K]V) V { var s V for _, v := range m { s += v } return s }

Iba pang mga pagpapabuti:

  • Ang mga utility para sa fuzzing code testing ay isinama sa karaniwang toolkit. Sa panahon ng fuzzing testing, ang isang stream ng lahat ng posibleng random na kumbinasyon ng input data ay nabuo at posibleng mga pagkabigo sa panahon ng kanilang pagproseso ay naitala. Kung ang isang sequence ay nag-crash o hindi tumutugma sa inaasahang tugon, ang pag-uugali na ito ay malamang na magpahiwatig ng isang bug o kahinaan.
  • Nagdagdag ng suporta para sa mga multi-modular na workspace, na nagbibigay-daan sa iyong magsagawa ng mga command sa maraming module nang sabay-sabay, na nagbibigay-daan sa iyong sabay na bumuo at magpatakbo ng code sa maraming module.
  • Ang mga makabuluhang pag-optimize ng pagganap ay ginawa para sa mga system batay sa mga processor ng Apple M1, ARM64 at PowerPC64. Pinagana ang kakayahang gumamit ng mga rehistro sa halip na ang stack upang ipasa ang mga argumento sa mga function at ibalik ang resulta. Pinahusay na inline unrolling ng mga loop ng compiler. Ang pagsuri ng uri sa compiler ay ganap na muling idinisenyo. Ang ilang mga pagsubok ay nagpapakita ng 20% ​​na pagtaas sa pagganap ng code kumpara sa nakaraang release, ngunit ang pagsasama-sama mismo ay tumatagal ng humigit-kumulang 15% na mas matagal.
  • Sa runtime, ang kahusayan ng pagbabalik ng napalaya na memorya sa operating system ay nadagdagan at ang pagpapatakbo ng kolektor ng basura ay napabuti, ang pag-uugali nito ay naging mas predictable.
  • Ang mga bagong package na net/netip at debug/buildinfo ay naidagdag sa karaniwang library. Ang suporta para sa TLS 1.0 at 1.1 ay hindi pinagana bilang default sa client code. Ang crypto/x509 module ay huminto sa pagproseso ng mga certificate na nilagdaan gamit ang SHA-1 hash.
  • Ang mga kinakailangan para sa kapaligiran sa Linux ay itinaas; upang gumana, kailangan mo na ngayong magkaroon ng Linux kernel ng hindi bababa sa bersyon 2.6.32. Sa susunod na release, ang mga katulad na pagbabago ay inaasahan para sa FreeBSD (ang suporta para sa FreeBSD 11.x branch ay ihihinto) at hindi bababa sa FreeBSD 12.2 ay kinakailangan upang gumana.

Pinagmulan: opennet.ru

Magdagdag ng komento