Rilis basa pemrograman Go 1.15

Dipuntepangaken release basa pemrograman Go 1.15, sing dikembangake dening Google kanthi partisipasi komunitas minangka solusi hibrida sing nggabungake kinerja dhuwur saka basa kompilasi kanthi kaluwihan basa skrip kayata gampang nulis kode, kacepetan pangembangan lan proteksi kesalahan. Kode proyek disebarake dening ing lisensi BSD.

Sintaks Go adhedhasar unsur akrab saka basa C kanthi sawetara pinjaman saka basa Python. Basane cukup ringkes, nanging kode kasebut gampang diwaca lan dingerteni. Kode Go dikompilasi dadi eksekusi binar mandiri sing mlaku kanthi asli tanpa nggunakake mesin virtual (profil, debugging, lan subsistem deteksi masalah runtime liyane digabungake minangka komponen runtime), sing ngidini sampeyan entuk kinerja sing bisa dibandhingake karo program C.

Proyek kasebut wiwitane dikembangake kanthi fokus program multi-threaded lan operasi sing efisien ing sistem multi-inti, kalebu nyedhiyakake sarana tingkat operator kanggo ngatur komputasi paralel lan interaksi antarane metode sing dieksekusi paralel. Basa kasebut uga nyedhiyakake proteksi sing dibangun marang pamblokiran memori sing diparengake lan menehi kemampuan kanggo nggunakake kolektor sampah.

Utama inovasidikenalakΓ© ing release Go 1.15:

  • БущСствСнно ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ°, ΠΊΠ°ΠΊ Π² области ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ сокращСния потрСблСния памяти, Ρ‚Π°ΠΊ ΠΈ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ упрощСния сопровоТдСния ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΈ тСстировании Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² ELF (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris), ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Go-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ стала Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° 20% быстрСС, Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти Π² срСднСм ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»ΠΎΡΡŒ Π½Π° 30%. ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ стало Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… стадий для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ уровня распараллСливания Ρ€Π°Π±ΠΎΡ‚. БобствСнный ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° систСмах linux/amd64 ΠΈ linux/arm64 Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Β«-buildmode=pieΒ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ трСбуСтся примСнСния Π‘ΠΈ-ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ°.
  • Π’ runtime Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΎ распрСдСлСниС ΠΌΠ΅Π»ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° систСмах с большим числом ядСр CPU ΠΈ сокращСны Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ. ΠŸΡ€ΠΈ сбоях обСспСчСн Π²Ρ‹Π²ΠΎΠ΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с числовыми ΠΈ строковыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, вмСсто ΠΏΠΎΠΊΠ°Π·Π° адрСса. ΠŸΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Go-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ сигналов SIGSEGV, SIGBUS ΠΈ SIGFPE, Π² случаС отсутствия ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° os/signal.Notify, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ трассировки стСка (Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ нСпрСдсказуСмым).
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация компилятора, позволившая ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Π² срСднСм Π½Π° 5% Π·Π° счёт прСкращСния Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… для сборщика мусора ΠΈ Π±ΠΎΠ»Π΅Π΅ агрСссивной чисткС Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ….
  • Π’ компилятор ΠΈ ассСмблСр Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π»Π°Π³ Β«-spectreΒ» для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ класса Spectre (для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π΅ трСбуСтся, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ лишь для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‡Π΅Π½ΡŒ спСцифичных случаСв).
  • Π’ сСртификатах X.509 объявлСно ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ ΠΏΠΎΠ»Π΅ CommonName, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ трактуСтся ΠΊΠ°ΠΊ имя хоста Π² случаС отсутствия поля Subject Alternative Names.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«goΒ» Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния GOPROXY Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ нСсколько прокси, Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… запятой ΠΈΠ»ΠΈ символом Β«|Β». Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ прокси Π² спискС Π²Π΅Ρ€Π½Ρ‘Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ (404 ΠΈΠ»ΠΈ 410), Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ прСдпринята ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° обращСния Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‚ΠΎΡ€ΠΎΠΉ прокси ΠΈ Ρ‚.Π΄.
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ vet Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ прСобразования ΠΈΠ· string(x), Ссли Β«xΒ» являСтся цСлочислСнным Ρ‚ΠΈΠΏΠΎΠΌ, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΡ‚ rune ΠΈΠ»ΠΈ byte.
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ objdump Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π»Π°Π³ Β«-gnuΒ» для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ дизассСмблирования синтаксиса GNU assembler.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ time/tzdata, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π‘Π” с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ часовых поясах.
  • Из исходных тСкстов ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΡƒΠ±Ρ€Π°Π½Ρ‹ Ρ„Ρ€Π°Π·Ρ‹ whitelist/blacklist ΠΈ master/slave, вмСсто ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Β«allowlistΒ», Β«blocklistΒ», Β«processΒ», Β«ptyΒ», Β«procΒ» ΠΈ Β«controlΒ».
  • ВнСсСна большая порция Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OpenBSD 6.7 Π² Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… GOARCH=arm ΠΈ GOARCH=arm64 (Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ GOARCH=386 ΠΈ GOARCH=amd64).
  • ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ 64-разрядной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ RISC-V (GOOS=linux, GOARCH=riscv64).
  • Для 32-разрядных систСм x86 Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ выпускС Π±ΡƒΠ΄ΡƒΡ‚ подняты ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ трСбования ΠΊ систСмС β€” ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ процСссоры с SSE2. Для сборки Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ GOARCH=386 потрСбуСтся ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Intel Pentium 4 (Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π² 2000 Π³ΠΎΠ΄Ρƒ) ΠΈΠ»ΠΈ AMD Opteron/Athlon 64 (Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π² 2003 Π³ΠΎΠ΄Ρƒ).

Source: opennet.ru

Add a comment