Paglabas ng Go programming language 1.15

Ipinasa ni paglabas ng programming language Pumunta 1.15, 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.15 release:

  • Ang gawain ng linker ay makabuluhang napabuti, kapwa sa pagtaas ng bilis ng operasyon at pagbabawas ng pagkonsumo ng memorya, at sa direksyon ng pagpapasimple ng pagpapanatili ng code. Kapag sinubukan sa mga operating system gamit ang ELF executable file format (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris), isang tipikal na hanay ng mga malalaking Go application ang binuo ng 20% ​​na mas mabilis, at ang pagkonsumo ng memory ay nabawasan ng average na 30%. Ang pagtaas ng produktibidad ay naging posible sa pamamagitan ng paglipat sa isang bagong object file format at muling paggawa ng mga panloob na yugto upang mapataas ang antas ng parallelization ng trabaho. Ang native linker ay ginagamit na ngayon bilang default sa linux/amd64 at linux/arm64 system sa "-buildmode=pie", na hindi na nangangailangan ng paggamit ng C linker.
  • Sa runtime, ang pamamahagi ng maliliit na bagay sa mga system na may malaking bilang ng mga core ng CPU ay makabuluhang napabuti at nabawasan ang latency. Sa kaso ng mga pagkabigo, ang mga halaga na may mga numero at uri ng string ay ipinapakita sa halip na ipakita ang address. Kapag nagpapadala ng mga signal ng SIGSEGV, SIGBUS at SIGFPE sa isang Go application, sa kawalan ng os/signal. Notify handler, lalabas ang application na may stack trace output (dati hindi nahuhulaan ang gawi).
  • Ang compiler ay na-optimize upang bawasan ang laki ng nabuong mga executable na file ng average na 5% sa pamamagitan ng pagtigil sa pagsasama ng ilang metadata para sa basurero at mas agresibong paglilinis ng hindi nagamit na metadata.
  • Ang flag na "-spectre" ay idinagdag sa compiler at assembler upang paganahin ang proteksyon laban sa mga pag-atake ng klase ng Spectre (para sa karamihan ng mga programa na ito ay hindi kinakailangan; ang pagpapagana ng opsyon ay maaari lamang bigyang-katwiran para sa ilang partikular na mga kaso).
  • Sa mga X.509 na certificate, ang CommonName field ay hindi na ginagamit, na hindi na itinuturing bilang host name kung nawawala ang field na Mga Alternatibong Pangalan ng Paksa.
  • Ang command na "go" sa GOPROXY environment variable ay maaari na ngayong maglista ng maraming proxy, na pinaghihiwalay ng kuwit o "|". Kung ang unang proxy sa listahan ay nagbalik ng isang error (404 o 410), pagkatapos ay isang pagtatangkang makipag-ugnayan sa pamamagitan ng pangalawang proxy, atbp.
  • Nagdagdag ang vet utility ng babala tungkol sa pagtatangkang mag-convert mula sa string(x) kung ang "x" ay isang uri ng integer maliban sa rune o byte.
  • Ang flag na "-gnu" ay naidagdag sa objdump utility upang suportahan ang pag-disassembling ng GNU assembler syntax.
  • Idinagdag ang bagong pakete oras/tzdata, na nagpapahintulot sa iyo na isama ang isang database sa data ng time zone sa programa.
  • Mula sa mga pinagmulang teksto at dokumentasyon inalis ang mga pariralang whitelist/blacklist at master/slave, na ngayon ay pinalitan ng "allowlist", "blocklist", "process", "pty", "proc" at "control".
  • Malaking bahagi ng maliliit na pagpapabuti ang ginawa sa karaniwang aklatan.
  • Nagdagdag ng suporta para sa OpenBSD 6.7 sa GOARCH=arm at GOARCH=arm64 mode (dati GOARCH=386 at GOARCH=amd64 lang ang sinusuportahan).
  • Nagpatuloy ang pagbuo ng 64-bit na RISC-V platform (GOOS=linux, GOARCH=riscv64).
  • Para sa mga 32-bit x86 system, ang susunod na release ay magtataas ng pinakamababang kinakailangan ng system - tanging ang mga processor na may SSE2 ang patuloy na susuportahan. Upang bumuo sa GOARCH=386 mode kakailanganin mo ng hindi bababa sa isang Intel Pentium 4 (inilabas noong 2000) o isang AMD Opteron/Athlon 64 (inilabas noong 2003).

Pinagmulan: opennet.ru

Magdagdag ng komento