Famoahana ny fiteny fandaharana Go 1.15

nampidirina famoahana fiteny fandaharana Mandehana 1.15, izay novolavolain'ny Google miaraka amin'ny fandraisan'anjaran'ny vondrom-piarahamonina ho vahaolana hybrid izay manambatra ny fahombiazan'ny fiteny voaangona miaraka amin'ny tombony amin'ny fiteny fanoratana toy ny fanamorana ny fanoratana kaody, ny hafainganam-pandehan'ny fampandrosoana ary ny fiarovana ny fahadisoana. Kaody tetikasa nozarain'i eo ambanin'ny lisansa BSD.

Ny syntax an'i Go dia mifototra amin'ny singa mahazatra amin'ny fiteny C miaraka amin'ny findrana sasany amin'ny fiteny Python. Tena fohy ilay fiteny, nefa mora vakina sy azo ny kaody. Ny kaody Go dia natambatra ho executable mimari-droa mitokana izay mandeha an-tanindrazana nefa tsy mampiasa milina virtoaly (profiling, debugging, ary subsystems hafa momba ny olana amin'ny runtime dia ampidirina ho singa runtime), izay ahafahanao manatratra fahombiazana azo oharina amin'ny programa C.

Ny tetikasa dia novolavolaina tamin'ny voalohany miaraka amin'ny maso amin'ny fandaharana maromaro misy kofehy sy ny fampandehanana mahomby amin'ny rafitra maro-fototra, ao anatin'izany ny fanomezana fitaovana amin'ny ambaratongan'ny mpandraharaha amin'ny fandaminana ny computing parallèle sy ny fifandraisana eo amin'ny fomba tanterahana parallèle. Ny fiteny koa dia manome fiarovana an-trano amin'ny sakana fitadidiana be loatra ary manome fahafahana mampiasa mpanangom-pako.

tena fanavaozananampidirina tao amin'ny famoahana 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