Siideynta luuqada barnaamijka Go 1.13

Soo gudbiyey sii daynta luqadda barnaamijka Tag 1.13, kaas oo ay samaynayso Google oo ay bulshadu ka qayb qaadanayso sidii xal isku dhaf ah oo isku dhafan waxqabadka sare ee luuqadaha la soo ururiyey iyo faa'iidooyinka qoraallada luuqadaha sida fududaynta code-qorista, xawaaraha horumarka iyo ilaalinta khaladaadka. Koodhka mashruuca qaybiyey hoos yimaada shatiga BSD.

Go's syntax waxay ku salaysan tahay walxaha la yaqaan ee luqadda C oo leh xoogaa amaah ah oo laga soo qaatay luqadda Python. Luqadda waa mid kooban, laakiin koodka waa sahlan tahay in la akhriyo lana fahmo. Go code waxa lagu soo ururiyey hawl-fulinyaal binary keligiis ah oo si asal ahaan u shaqeeya iyada oo aan la isticmaalin mashiinka farsamada (profiling, debugging, iyo nidaamyada kale ee ogaanshaha dhibaatada runtime ayaa la isku daray sida qaybaha runtime), kaas oo kuu ogolaanaya inaad gaadho waxqabad u dhigma barnaamijyada C.

Mashruucu waxaa markii hore lagu hormariyay iyadoo isha lagu hayo barnaamijyo isku xiran iyo hawlgal hufan oo lagu sameeyo nidaamyada asaasiga ah, oo ay ku jiraan bixinta habab laga hirgeliyay heerka hawlwadeenka ee abaabulka xisaabinta barbar-dhigga iyo isdhexgalka ka dhexeeya hababka barbar socda. Luqadda ayaa sidoo kale bixisa ka-hortag dhismeed ka dhan ah xad-dhaafka ah ee blocks xusuusta loo qoondeeyey oo waxay siisaa awoodda isticmaalka ururiyaha qashinka.

Main wax cusublagu soo bandhigay Go 1.13 siideynta:

  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ crypto/tls Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° TLS 1.3. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Β«crypto/ed25519Β» с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… подписСй Ed25519;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²Ρ‹Ρ… прСфиксов Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² для опрСдСлСния Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… чисСл (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 0b101), Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… (0o377), ΠΌΠ½ΠΈΠΌΡ‹Ρ… (2.71828i) ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой (0x1p-1021), Π° Ρ‚Π°ΠΊΠΆΠ΅ обСспСчСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования символа Β«_Β» для наглядного раздСлСния Ρ†ΠΈΡ„Ρ€ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… числах (1_000_000);
  • Бнято ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° использованиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… счётчиков Π² опСрациях сдвига, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π² Ρ‚ΠΈΠΏ uint ΠΏΠ΅Ρ€Π΅Π΄ использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Β«β€Ήβ€ΉΒ» ΠΈ Β«β€Ίβ€ΊΒ»;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Illumos (GOOS=illumos). ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ Android 10. ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Ρ‹ трСбования ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ вСрсиям FreeBSD (11.2) ΠΈ macOS (10.11 Β«El CapitanΒ»)
  • ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ систСмы ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ GOPATH. Π’ΠΎΠΏΡ€Π΅ΠΊΠΈ Ρ€Π°Π½Π΅Π΅ ΠΎΠ·Π²ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΏΠ»Π°Π½Π°ΠΌ Π² Go 1.13 данная систСма Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ GO111MODULE=on ΠΈΠ»ΠΈ использования контСкста, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ автоматичСски. Новая систСма ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ отличаСтся ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ вСрсионирования, срСдствами доставки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠΉ систСмой управлСния зависимостями. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ большС Π½Π΅ привязаны ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π΅Ρ€Π΅Π²Π° GOPATH, ΠΌΠΎΠ³ΡƒΡ‚ явно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ зависимости с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ вСрсий ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ повторяСмыС сборки.

    Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… выпусков автоматичСскоС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ систСмы Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ срабатываСт, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ go Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ присутствуСт Ρ„Π°ΠΉΠ» go.mod, Π² Ρ‚ΠΎΠΌ числС ΠΏΡ€ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ GOPATH/src. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния: GOPRIVATE, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ ΠΏΡƒΡ‚ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ нСдоступных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΈ GOSUMDB, Π·Π°Π΄Π°ΡŽΡ‰Π°Ρ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ доступа ΠΊ Π±Π°Π·Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π½Π΅ пСрСчислСнных Π² Ρ„Π°ΠΉΠ»Π΅ go.sum;

  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«goΒ» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ обСспСчСна Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈΡ… цСлостности, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π·Π΅Ρ€ΠΊΠ°Π»ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Π±Π°Π·Ρƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Google (proxy.golang.org, sum.golang.org ΠΈ index.golang.org);
  • ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², сборка ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Β«//go:binary-only-packageΒ» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ ошибки;
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«go getΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° суффикса Β«@patchΒ», ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Π΄ΠΎ послСднСго ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ выпуска, Π½ΠΎ Π±Π΅Π· смСны Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ вСрсии;
  • ΠŸΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈΠ· систСм контроля вСрсий ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«goΒ» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ выполняСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ строки с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ вСрсии, ΠΏΡ‹Ρ‚Π°ΡΡΡŒ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° псСвдо-вСрсий с ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ· рСпозитория;
  • Taageero lagu daray инспСктирования ошибок (error wrapping) Ρ‡Π΅Ρ€Π΅Π· созданиС ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΎΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ошибок. НапримСр, khalad Β«eΒ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‘Ρ€Π½ΡƒΡ‚Π° Π½Π°Π΄ ошибкой Β«wΒ» Ρ‡Π΅Ρ€Π΅Π· прСдоставлСниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ka fur, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π³ΠΎ Β«wΒ». ОбС ошибки Β«eΒ» ΠΈ Β«wΒ» доступны Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π½Π° основании ошибки Β«wΒ», Π½ΠΎ Β«eΒ» прСдоставляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ контСкст ΠΊ Β«wΒ» ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΏΠΎ ΠΈΠ½ΠΎΠΌΡƒ;
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ runtime-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (отмСчаСтся прирост скорости Π΄ΠΎ 30%) ΠΈ задСйствовано Π±ΠΎΠ»Π΅Π΅ агрСссивноС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ памяти Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму (Ρ€Π°Π½Π΅Π΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»Π°ΡΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡΡ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΈΠ½ΡƒΡ‚, Π° сСйчас сразу послС урСзания Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΡƒΡ‡ΠΈ).

Source: opennet.ru

Add a comment