Vai a lingua di prugrammazione versione 1.13

Intruduttu liberazione di lingua di prugrammazione Andà 1.13, chì hè sviluppatu da Google cù a participazione di a cumunità cum'è una soluzione hibrida chì combina l'altu rendiment di e lingue compilate cù i vantaghji di e lingue di scrittura cum'è a facilità di scrittura di codice, a velocità di sviluppu è a prutezzione di l'errore. Codice di prughjettu distribuitu da sottu a licenza BSD.

A sintassi di Go hè basatu annantu à elementi familiari di a lingua C cù qualchi prestiti da a lingua Python. A lingua hè abbastanza cuncisa, ma u codice hè faciule da leghje è capisce. U codice Go hè compilatu in eseguibili binari autonomi chì funzionanu in modu nativu senza aduprà una macchina virtuale (profiling, debugging, è altri sottosistemi di rilevazione di prublemi di runtime sò integrati cum'è cumpunenti runtime), chì permette di ottene prestazioni paragunabili à i prugrammi C.

U prugettu hè inizialmente sviluppatu cun un ochju nantu à a prugrammazione multi-threaded è l'operazione efficiente nantu à i sistemi multi-core, cumprese i mezi implementati à u livellu di l'operatore per l'urganizazione di l'informatica parallela è l'interazzione trà i metudi paralleli. A lingua furnisce ancu una prutezzione integrata contr'à l'overruns di blocchi di memoria allocati è furnisce a capacità di utilizà u cullettore di basura.

menu innovazioniintroduttu in a versione Go 1.13:

  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ 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Β» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ выполняСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ строки с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ вСрсии, ΠΏΡ‹Ρ‚Π°ΡΡΡŒ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° псСвдо-вСрсий с ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ· рСпозитория;
  • Supportu aghjuntu инспСктирования ошибок (error wrapping) Ρ‡Π΅Ρ€Π΅Π· созданиС ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΎΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ошибок. НапримСр, un sbagliu Β«eΒ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‘Ρ€Π½ΡƒΡ‚Π° Π½Π°Π΄ ошибкой Β«wΒ» Ρ‡Π΅Ρ€Π΅Π· прСдоставлСниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Svolge, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π³ΠΎ Β«wΒ». ОбС ошибки Β«eΒ» ΠΈ Β«wΒ» доступны Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π½Π° основании ошибки Β«wΒ», Π½ΠΎ Β«eΒ» прСдоставляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ контСкст ΠΊ Β«wΒ» ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΏΠΎ ΠΈΠ½ΠΎΠΌΡƒ;
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ runtime-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (отмСчаСтся прирост скорости Π΄ΠΎ 30%) ΠΈ задСйствовано Π±ΠΎΠ»Π΅Π΅ агрСссивноС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ памяти Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму (Ρ€Π°Π½Π΅Π΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»Π°ΡΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡΡ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΈΠ½ΡƒΡ‚, Π° сСйчас сразу послС урСзания Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΡƒΡ‡ΠΈ).

Source: opennet.ru

Add a comment