Ново издање Го језика, верзија 1.24, долази шест месеци касније Иди КСНУМКС. Већина промена је у имплементацији ланца алата, рунтиме-а и библиотека. Као и увек, издање пружа обећање компатибилности Го 1. Дизајнери језика очекују да ће скоро сви Го програми наставити да се компајлирају и раде као и раније.
Промене језика
Го 1.24 сада у потпуности подржава алијаси генеричког типа: псеудоним типа се може параметризовати као декларисани тип. Детаљи у језичке спецификације. За сада, ова функција се може онемогућити постављањем ГОЕКСПЕРИМЕНТ=ноалиастипепарамс; Међутим, опција алиастипепарамс ће бити уклоњена у Го 1.25.
Алат
Иди командуј
Го модули сада могу да прате извршне зависности користећи директиву алата у го.мод. Ово уклања потребу за претходним решењем за додавање алата као празних увоза у датотеку која се обично назива „тоолс.го“. Команда алата го сада може да покреће ове алате поред алата који долазе са Го. Више информација можете пронаћи на документација.
Нова ознака -тоол за го гет узрокује додавање директива алата у тренутни модул за наведене пакете поред додавања директива рекуире.
Нови алатка за мета шаблоне односи се на све алате у тренутном модулу. Ово се може користити за њихово ажурирање путем алатке го гет или да их инсталирате у ваш ГОБИН директоријум преко алатке за инсталацију.
Извршни фајлови креирани путем го рун и ново понашање алатке го сада су кеширани у кешу Го буилд-а. Ово омогућава поновљена покретања због повећаног кеша. #КСНУМКС.
Команде го буилд и го инсталл сада прихватају ознаку -јсон, која пријављује излаз и грешке грађења као структурирани ЈСОН излаз на стандардном излазу. Детаљи формата се могу видети у го хелп буилдјсон.
Штавише, го тест -јсон сада извештава о грешкама излаза и изградње у ЈСОН-у, помешано са ЈСОН резултатом теста. Они се могу разликовати по новим типовима радњи, али ако изазову проблеме у систему интеграције теста, можете се вратити на текстуални излаз буилд преко ГОДЕБУГ сетуп готестјсонбуилдтект=1.
Нова варијабла окружења ГОАУТХ пружа флексибилан начин за ауторизацију повлачења приватних модула. Детаље можете видети у го хелп гоаутх.
Команда го буилд је сада инсталирана верзија главног модула у компајлираној бинарној верзији, на основу ознаке и/или урезивања контроле верзија. +прљави суфикс ће бити додат ако постоје промене које нису унете. Ознака -буилдвцс=фалсе се може користити за изостављање информација о контроли верзија из бинарног фајла.
Нови ГОДЕБУГ сетуп тоолцхаинтраце=1 сада се може користити за праћење процеса одабира ланца алата у команди го.
Цго
Цго подржава нове напомене за Ц функције како би побољшао перформансе времена извршавања. #цго ноесцапе цФунцтионНаме говори компајлеру да меморија која је прослеђена Ц функцији цФунцтионНаме није избачена. #цго ноцаллбацк цФунцтионНаме говори компајлеру да Ц функција цФунцтионНаме не позива назад ниједну Го функцију. Више информација можете пронаћи на цго документација.
Цго тренутно одбија да компајлира позиве Ц функцији која има више некомпатибилних декларација. На пример, ако је ф декларисан и као воид ф(инт) и воид ф(доубле), цго ће пријавити грешку уместо да евентуално генерише неважећу секвенцу позива ф(0). Ново у овом издању је побољшано откривање овог стања грешке када се некомпатибилне декларације појављују у различитим датотекама. #КСНУМКС.
Објдумп
Алат објдумп сада подржава растављање на 64-битном ЛоонгАрцху (ГОАРЦХ=лоонг64), РИСЦ-В (ГОАРЦХ=рисцв64) и С390Кс (ГОАРЦХ=с390к).
Маст
Нови анализатор тестова извештава о уобичајеним грешкама у декларацијама тестова, фуззера, бенцхмарк-а и примера у пакетима тестова, као што су погрешно обликована имена, неважећи потписи или примери који документују непостојеће идентификаторе. Неке од ових грешака могу довести до неуспеха тестова.
Постојећи принтф парсер сада извештава о дијагностици за позиве облика фмт.Принтф(с), где је с стринг неконстантног формата без других аргумената. Такви позиви су скоро увек грешка, пошто вредност с може да садржи знак %; уместо тога користите фмт.Принт. 60529. Ова провера има тенденцију да пронађе ствари у постојећем коду и стога се примењује само када је језичка верзија (као што је наведено у го директиви го.мод датотеке или коментарима `//го:буилд`) најмање Го 1.24, како би се избегло изазивање дугих прекида интеграције приликом надоградње на Го 1.24 ланац алата.
Постојећи анализатор буилдтаг-а сада пријављује дијагностику када постоји нетачна буилдтаг ограничење израде старије верзије Идите у //го:буилд директиву. На пример, //го:буилд го1.23.1 се односи на ослобађање тачке; уместо тога користите //го:буилд го1.23. #КСНУМКС.
Постојећи цопилоцк анализатор сада извештава о дијагностици када је променљива декларисана у трострукој „фор“ петљи, као што је фор и := итер(); доне(и); и = нект(и) { … }, садржи синц.Лоцкер, као што је синц.Мутек. Иди КСНУМКС променили понашање таквих петљи да креирају нову променљиву за сваку итерацију, копирајући вредности из претходне итерације; Ово копирање није безбедно за браве. #КСНУМКС.
ГОЦАЦХЕПРОГ
Интерни цмд/го бинарни и тестни механизам за кеширање сада могу бити имплементирани тако што ће подређени процеси имплементирати ЈСОН протокол између цмд/го алата и подређеног процеса који је именован променљивом окружења ГОЦАЦХЕПРОГ. Раније је то било за ГОЕКСПЕРИМЕНТ. Детаљи протокола се могу видети у документација.
Време завршетка
Неколико побољшања перформанси током извршавања смањило је оптерећење ЦПУ-а за 2-3% у просеку у скупу репрезентативних мерила. Резултати се могу разликовати у зависности од апликације. Ова побољшања укључују нову уграђену имплементацију мапе засновану на Сведисх Таблес, ефикаснија алокација меморије малих објеката и нова интерна имплементација мутекса.
Нова уграђена имплементација мапе и нови интерни мутекс времена извршавања могу се онемогућити постављањем ГОЕКСПЕРИМЕНТ=носвиссмап и ГОЕКСПЕРИМЕНТ=носпинбитмутек у време израде, респективно.
Цомпилер
Компајлер је већ забранио дефинисање нових метода са типовима пријемника које је генерисао цго, али је било могуће заобићи ово ограничење преко алијаса типа. Го 1.24 сада увек пријављује грешку ако пријемник означава цго генерисан тип, било директно или индиректно (преко псеудонима типа).
Линкер
Линкер теперь генерирует идентификатор сборки GNU (запись ELF NT_GNU_BUILD_ID) на платформах ELF и UUID (команда загрузки Mach-O LC_UUID) на macOS по-умолчанию. Идентификатор сборки или UUID выводится из идентификатора сборки Go. Это может быть выключено флагом линкера -B none, либо переопределено флагом линкера -B 0xNNNN с указанным пользователем шестнадцатеричным значением.
Промоција
Како је наведено у Го 1.22 белешке о издању, Го 1.24 сада захтева инсталирање Го 1.22.6 или новије верзије. Програмери очекују да ће за Го 1.26 бити потребно прво издање Го 1.24 или новије верзије.
Стандард Либрари
Приступ систему датотека ограничен директоријумом
Нови тип ос.роот Пружа могућност обављања операција система датотека унутар одређеног директоријума.
Функција ос.ОпенРоот отвара директоријум и враћа се ос.роот. Методе на ос.роот раде у том директоријуму и не дозвољавају путањама да упућују на локације ван директоријума, укључујући и оне које прате симболичке везе ван директоријума. Методе на ос.Роот одражавају већину операција система датотека доступних у ос пакету, укључујући, на пример, ос.Роот.Опен, ос.Роот.Цреате, ос.Роот.Мкдир и ос.Роот.Стат.
Нова бенцхмарк функција
Мерила сада могу да користе бржи метод који је мање склон грешкама тестирање.Б.Лооп итерирати преко мерила као што је за б.Лооп() { … } уместо типичних структура петље које укључују бН као што је за опсег бН Ово нуди две значајне предности:
- Функција бенцхмарка се извршава тачно једном по -цоунт, тако да се скупи кораци подешавања и чишћења изводе само једном.
- Параметри и резултати позива функције живе и даље, спречавајући компајлер да у потпуности оптимизује тело петље.
Побољшани финализатори
Нова карактеристика рунтиме.АддЦлеануп је механизам завршетка који је флексибилнији, ефикаснији и мање склон грешкама од рунтиме.СетФинализер. АддЦлеануп прилаже функцију чишћења објекту која ће бити покренута чим објекат постане недоступан. Међутим, за разлику од СетФинализер-а, вишеструка чишћења могу бити прикачена на један објекат, чишћења могу бити прикачене на интерне показиваче, чишћења обично не изазивају цурење када објекти формирају циклус, а чишћења не одлажу ослобађање објекта или објеката на које указује. Нови код би требало да преферира АддЦлеануп у односу на СетФинализер.
Нови слаб пакет
Нови пакет слаб даје слабе назнаке.
Слаби показивачи су примитиви ниског нивоа који су обезбеђени за креирање меморијско ефикасних структура као што су слаби речници за мапирање вредности, речници каноникализације за све што није покривено пакетом. јединствен, и разне врсте кеша. За подршку овим случајевима коришћења, ово издање такође пружа рунтиме.АддЦлеануп и мапхасх.Цомпарабле.
Нови крипто/млкем пакет
Нови пакет црипто/млкем имплементира МЛ-КЕМ-768 и МЛ-КЕМ-1024.
МЛ-КЕМ је пост-квантни механизам за размену кључева, раније познат као Кибер и специфициран у ФИПС 203.
Нови пакети црипто/хкдф, црипто/пбкдф2 и црипто/сха3
Нови пакет црипто/хкдф имплементира ХКДФ функцију деривације кључа „Ектрацт-анд-Екпанд“ засновану на ХМАЦ-у како је дефинисано у РФЦ КСНУМКС.
Нови пакет црипто/пбкдф2 имплементира функцију извођења кључа засновану на лозинки ПБКДФ2 како је дефинисано у РФЦ КСНУМКС.
Нови пакет црипто/сха3 имплементира СХА-3 хеш функцију и СХАКЕ и цСХАКЕ прошириве излазне функције као што је дефинисано у ФИПС 202.
Сва три пакета су заснована на постојећим голанг.орг/к/црипто/… пакетима.
Усклађеност са ФИПС 140-3
Ово издање укључује нови сет механизама за обезбеђивање усаглашености са ФИПС 140-3.
Го крипто модул је скуп интерних стандардних пакета библиотеке који се транспарентно користе за имплементацију ФИПС 140-3 одобрених алгоритама. Апликације не захтевају промене да би користиле Го крипто модул за одобрене алгоритме.
Нова променљива окружења ГОФИПС140 се може користити за избор верзије Го крипто модула за употребу у изградњи. Ново ГОДЕБУГ сетуп фипс140 се може користити за омогућавање режима ФИПС 140-3 током рада.
Го 1.24 укључује Го црипто модул в1.0.0, који се тренутно тестира у лабораторији акредитованој ЦМВП.
Ново експериментално тестирање пакета/тестирање синхронизације
Нови експериментални пакет тестирање/синхтестирање Пружа подршку за тестирање истовременог кода.
- Функција синцтест.рун покреће групу горутина у изолованом „мехуру“. У облачићу функције пакета време раде на лажним сатовима.
- Функције синцтест.ваит сачекајте док се све горрутине не блокирају у тренутном балону.
Детаљи се могу наћи у документацији пакета.
Синцтест пакет је експерименталан и мора бити омогућен подешавањем ГОЕКСПЕРИМЕНТ=синцтест. АПИ пакета може да се промени у будућим издањима. ИН #КСНУМКС Можете видети више детаља и дати повратне информације.
Мање измене у библиотеци
архива
Имплементације (*Вритер.АддФС) у арцхиве/зип и арцхиве/тар сада пишу заглавље директоријума за празан директоријум.
бајтова
Пластична кеса бајтова додаје неколико функција које раде са итераторима:
- Линије Враћа итератор преко стрингова раздвојених новим редом у исечку бајта.
- СплитСек враћа итератор преко свих подслага бајтног дела одвојеног сепаратором.
- СплитАфтерСек враћа итератор преко подслага бајтног пресека, подељеног након сваког појављивања сепаратора.
- ФиелдсСек враћа итератор преко подслага бајтног пресека око секвенци размака, како је дефинисано уницоде.ИсСпаце
- ФиелдсФунцСек враћа итератор преко подслага бајтног пресека око секвенци Уницоде кодних тачака које задовољавају предикат.
црипто/аес
Повратна вредност НевЦхипхер више не имплементира методе НевЦТР, НевГЦМ, НевЦБЦЕнцриптер и НевЦБЦДецриптер. Ове методе нису биле документоване и нису биле доступне на свим архитектурама. Сада значење Блокирати морају бити прослеђене директно одговарајућим функцијама крипто/шифра. Тренутно, крипто/шифра још увек проверава ове методе на вредностима блока, иако их стандардна библиотека више не подржава.
крипто/шифра
Нова карактеристика НевГЦМВитхРандомНонце враћа АЕАД, који имплементира АЕС-ГЦМ генерисањем случајног нонце током Сеал-а и додајући га у шифровани текст.
Имплементација поток, вратио се НевЦТР када се користи са црипто/аес сада неколико пута брже на амд64 и арм64.
НевОФБ, НевЦФБЕнцриптер и НевЦФБДецриптер сада су проглашени застарелим. ОФБ и ЦФБ режими нису аутентификовани, што генерално омогућава активним нападима да манипулишу и опораве отворени текст. Апликације се препоручују за коришћење АЕАД заузврат. Ако није аутентификован режим поток неопходно, може се користити НевЦТР заузврат.
црипто/ецдса
ПриватеКеи.Сигн сада ствара детерминистички потпис према РФЦ КСНУМКС, ако је извор случајности нула.
црипто/мд5
Повратна вредност мд5.нев, сада такође имплементира интерфејс енцодинг.бинариаппендер.
крипто/ранд
Функција Читати сада гарантује да нема неуспеха. Ако Реад наиђе на грешку током читања Читалац, программа безвозвратно завершит работу. Обратите внимание, что умолчальный Reader задокументирован всегда работать успешно, поэтому это изменение должно затронуть только те программы, которые переопределяют переменную Reader. Одним исключением являются ядра Linux до версии 3.17, где умолчальный Reader всё ещё открывает /dev/urandom и может потерпеть неудачу.
На Linux 6.11 и позже Reader теперь использует системный вызов getrandom через vDSO. Это в несколько раз быстрее, обычно для небольших чтений.
На ОпенБСД Реадер-у сада користи арц4рандом_буф(3).
Нова карактеристика текст сада може да генерише криптографски сигурне насумичне текстуалне низове.
црипто/рса
ГенератеКеи сада враћа грешку ако се захтева дужина кључа мања од 1024 бита. Све методе за потписивање, проверу, шифровање и дешифровање сада враћају грешку ако се користе са величином кључа мањом од 1024 бита. Такви кључеви нису безбедни и не би требало да се користе. Постављање ГОДЕБУГ-а рса1024мин=0 враћа старо понашање, али Го програмери препоручују да се то ради само када је потребно и само у тестовима, на пример додавањем линије //го:дебуг рса1024мин=0 у тест фајл. Ново пример ГенератеКеи пружа стандардни 2024-битни кључ за тестирање једноставан за коришћење.
Сада је безбедније и ефикасније позвати ПриватеКеи.Прецомпуте до ПриватеКеи.Валидате. Предрачунавање је сада брже у присуству делимично попуњених ПрецомпутедВалуес, на пример када извлачите кључ из ЈСОН-а.
Пакет сада одбија више неважећих кључева чак и када се Валидате не позове, и ГенератеКеи сада може да враћа нове грешке за покварене изворе случајности. Поља Примес и Прерачунато структуре ПриватеКеи се сада користе и потврђују чак и када неке вредности недостају. Такође постоје промене у црипто/к509 за рашчлањивање и издвајање РСА кључева, описаних у наставку.
СигнПКЦС1в15 и ВерифиПКЦС1в15 сада подржавају СХА-512/224, СХА-512/256 и СХА-3.
ГенератеКеи сада користи мало другачији метод за генерисање приватног експонента (Кармајклова функција уместо Ојлерове функције). Ретке апликације које екстерно регенеришу кључеве само од простих бројева могу произвести различите, али компатибилне резултате.
Операције на јавним и приватним кључевима су сада до два пута брже на васм-у.
крипто/сха*
- црипто/сха1: повратна вредност сха1.Нев сада такође имплементира интерфејс енцодинг.бинариаппендер.
- црипто/сха256: враћене вредности сха256.Нев и сха256.Нев224 сада такође имплементирајте интерфејс енцодинг.бинариаппендер.
- црипто/сха512: враћене вредности сха512.Нев, сха512.Нев384, сха512.Нев512_224 и сха512.Нев512_256, сада такође имплементира интерфејс енцодинг.бинариаппендер.
крипто/суптилно
Нова карактеристика ВитхДатаИндепендентТиминг омогућава кориснику да изврши функцију са омогућеним карактеристикама специфичним за архитектуру које обезбеђују да се одређене инструкције не мењају у односу на време вредности података. Ово се може користити да би се осигурало да код написан за рад у константном времену није оптимизован функцијама на нивоу процесора тако да се покреће у променљивом времену. Тренутно ВитхДатаИндепендентТиминг користи бит ПСТАТЕ.ДИТ на арм64 и не ради ништа на свим другим архитектурама. Постављање ГОДЕБУГ-а датадепенденттиминг=1 омогућава ДИТ режим за цео Го програм.
Излаз КСОРБитес мора се у потпуности или уопште не преклапати са уносом. Раније је понашање иначе било недефинисано, док ће сада КСОРБитес успаничити.
црипто/тлс
ТЛС сервер сада подржава Енцриптед Цлиент Хелло (ЕЦХ). Ова функција се може омогућити попуњавањем поља. Цонфиг.ЕнцриптедЦлиентХеллоКеис.
Нови пост-квантни механизам размене кључева Кс25519МЛКЕМ768 сада подржано и омогућено подразумевано када Цонфиг.ЦурвеПреференцес је нула. Постављање ГОДЕБУГ-а тлсмлкем=0 враћа подразумевано.
Подршка за експерименталну размену кључева Кс25519Кибер768Драфт00 је уклоњена.
Налог за размену кључева сада у потпуности управља крипто/тлс пакет. Ред Цонфиг.ЦурвеПреференцес се сада игнорише и садржај се користи само за одређивање које размене кључева треба укључити када се поље попуни.
Ново поље ЦлиентХеллоИнфо.Ектенсионс Наводи листу идентификатора екстензија примљених у поруци Цлиент Хелло. Ово може бити корисно за ТЛС клијенте са отиском прстију.
црипто/к509
Постављање ГОДЕБУГ-а к509сха1 је уклоњен. Цертифицатион.Верифи више не подржава потписе засноване на СХА-1.
ОИД сада имплементира интерфејсе енцодинг.бинариаппендер и енцодинг.ТектАппендер.
Подразумевано поље политике сертификата је промењено са Цертифицате.ПолициИдентифиерс на Цертифицате.Полициес. Приликом рашчлањивања сертификата, оба поља ће бити попуњена, али када креирате политику сертификата, она ће бити преузета из поља Цертифицате.Полициес уместо Цертифицате.ПолициИдентифиерс. Ова промена се може поништити. ГОДЕБУГ сетуп к509усеполициес=0.
ЦреатеЦертифицате ће сада генерисати серијски број користећи метод усаглашен са РФЦ 5280 приликом прослеђивања поља шаблона Цертифицате.СериалНумбер нула, уместо да се сруши.
Цертифицате.Верифи сада подржава валидацију политике као што је дефинисано у РФЦ 5280 и РФЦ 9618. Ново поље ВерифиОптионс.ЦертифицатеПолициес може се подесити на прихватљив скуп смерница ОИДс. Биће враћени само ланци сертификата са важећим графиконима политика Цертифицате.Верифи.
МарсхалПКЦС8ПриватеКеи сада враћа грешку уместо преузимања неважећег РСА кључа. (МарсхалПКЦС1ПриватеКеи нема повратка грешке и његово понашање када се дају неважећи кључеви остаје недефинисано.)
ПарсеПКЦС1ПриватеКеи и ПарсеПКЦС8ПриватеКеи сада користе и валидирају кодиране ЦРТ вредности, тако да могу одбити неважеће РСА кључеве који су претходно прихваћени. Употреба ГОДЕБУГ подешавања к509рсацрт=0 враћа на поновно израчунавање ЦРТ вредности.
дебуг/елф
Пластична кеса дебуг/елф Додаје подршку за руковање верзијама симбола у динамичким ЕЛФ датотекама (извршни и повезујући формат). Нова метода Филе.ДинамицВерсионс Враћа листу динамичких верзија дефинисаних у ЕЛФ датотеци. Нова метода Филе.ДинамицВерсионНеедс Враћа листу динамичких верзија потребних за ову ЕЛФ датотеку које су дефинисане у другим ЕЛФ објектима. Коначно, нова поља Симбол.ХасВерсион и Симбол.ВерсионИндек означи верзију симбола.
шифровање
Два нова интерфејса ТектАппендер и БинариАппендер су уведени да додају текстуални или бинарни приказ објекта у бајт исечак. Ови интерфејси пружају исту функционалност као ТектМарсхалер и БинариМарсхалер, али уместо да сваки пут додељују нови исечак, они додају податке директно постојећем пресеку. Ове интерфејсе тренутно имплементирају стандардни типови библиотека који већ имплементирају ТектМарсхалер и/или БинариМарсхалер.
кодирање/јсон
Приликом изградње, поље структуре са новом опцијом омитзеро у ознаци поља структуре биће изостављено ако је његова вредност нула. Ако тип поља има ИсЗеро() боол метод, он ће се користити за одређивање да ли је вредност нула. У супротном, вредност ће бити нула ако је нулл вредност за свој тип. Ознака поља омитзеро је чистија и мање подложна грешкама од омитемпти када је намера да се изоставе нулте вредности. Конкретно, за разлику од омитемптија, омитзеро изоставља нуле време.време вредности, што је чест извор проблема.
Ако су наведени и омитемпти и омитзеро, поље ће бити изостављено ако је вредност празна или нула (или обоје).
УнмарсхалТипеЕррор.Фиелд сада укључује уграђене структуре за пружање детаљнијих порука о грешци.
го/типес
Све структуре података го/типе које откривају низове парова метода, као што су Лен() инт и Ат(инт) Т, сада такође имају методе које враћају итераторе, омогућавајући једноставнији код попут овог:
парамс := фн.Типе.(*типес.Сигнатуре).Парамс() фор и := 0; и < парамс.Лен(); и++ { усе(парамс.Ат(и))}
на овоме:
фор парам := опсег фн.Сигнатуре().Парамс().Вариаблес() { усе(парам)}
Методе: Интерфаце.ЕмбеддедТипес Интерфаце.ЕкплицитМетходс Интерфаце.Метходс МетходСет.Метходс Намед.Метходс Сцопе.Цхилдрен Структура.Поља Тупле.Вариаблес ТипеЛист.Типес ТипеПарамЛист.ТипеПарамс Унион.Термс
хасх/*
- хасх/адлер32: повратна вредност нови, сада такође имплементира интерфејс енцодинг.бинариаппендер
- хасх/црц32: враћене вредности нови и НевИЕЕЕ, сада такође имплементира интерфејс енцодинг.бинариаппендер
- хасх/црц64: повратна вредност нови, сада такође имплементира интерфејс енцодинг.бинариаппендер
- хасх/фнв: враћене вредности НевКСНУМКС Нев32а НевКСНУМКС Нев64а НевКСНУМКС и Нев128а, сада такође имплементира интерфејс енцодинг.бинариаппендер
- хасх/мапхасх: нове карактеристике Упоредиво и ВритеЦомпарабле може израчунати хеш било које вредности која се може упоредити. Ово вам омогућава да хеширате све што се може користити као кључ речника Го.
лог/слог
Нови ДисцардХандлер је руковалац који никада није омогућен и увек одбацује свој излаз.
ниво и ЛевелВар сада имплементирајте интерфејс енцодинг.ТектАппендер.
математика/*
- математика/велика: Пловак, Инт и Пацов сада имплементирајте интерфејс енцодинг.ТектАппендер.
- математика/ранд: застарели позиви функција највишег нивоа Семе више немају никаквог ефекта. Да бисте вратили старо понашање, можете користити ГОДЕБУГ сетуп рандсеедноп=0. Више контекста у понуда 67273.
- матх/ранд/в2: ЦхаЦха8 и ВГН сада имплементирајте интерфејс енцодинг.бинариаппендер.
нето
ЛистенЦондиг теперь использует MPTCP по умолчанию на системах, где это поддерживается (пока только Linux).
IP сада имплементира интерфејс енцодинг.ТектАппендер.
нет/хттп
Ограничење се променило превоз на примљене одговоре 1кк информација као одговор на захтев. Раније би ово зауставило захтев и вратило грешку након што прими више од 5 1кк одговора. Ово сада враћа грешку само ако укупна величина свих 1кк одговора премашује поставку конфигурације Транспорт.МакРеспонсеХеадерБитес.
Такође, када захтев има куку за праћење нет/хттп/хттптраце.ЦлиентТраце.Гот1ккРеспонсе, сада нема ограничења за укупан број одговора 1кк. Гот1ккРеспонсе кука може да врати грешку да заустави захтев.
превоз и сервер сада имају ХТТП2 поље које омогућава конфигурисање подешавања ХТТП/2 протокола.
Нова поља Сервер.Протоцолс и Транспорт.Протоцолс пружају једноставан начин да конфигуришете које ХТТП протоколе сервер или клијент користи.
Сервер и клијент се могу конфигурисати да подржавају нешифроване ХТТП/2 везе.
Када Сервер.Протоцолс садржи УненцриптерХТТП2, сервер ће прихватити ХТТП/2 везе на нешифрованим портовима. Сервер може да прихвати и ХТТП/1 и нешифровани ХТТП/2 на истом порту.
Када Транспорт.Протоцолс садржи нешифровани ХТТП2 и не садржи ХТТП1, транспорт ће користити нешифровани ХТТП/2 за адресе http://. Ако је транспорт конфигурисан да користи и ХТТП/1 и нешифровани ХТТП/2, користиће ХТТП/1.
Подршка за нешифровани ХТТП/2 користи „ХТТП/2 са напредним учењем“ (РФЦ 9113, одељак 3.3). Застарело заглавље „Надоградња: х2ц“ није подржано.
нет/нетип
Аддр, АддрПорт и префикс сада имплементирајте интерфејсе енцодинг.бинариаппендер и енцодинг.ТектАппендер.
нет/урл
УРЛ адреса сада такође имплементира интерфејс енцодинг.бинариаппендер.
ос/корисник
В Windows струја теперь может быть использован в Windows Nano Server. Реализация была обновления для избежания использования функций из библиотеки NetApi32, которая отсутствует в Nano Server.
В Windows струја, Потражити и ЛоокупИд сада подржава следеће уграђене корисничке налоге:
- НТ АУТХОРИТИСИСТЕМ
- НТ ВЛАСТ ЛОКАЛНА СЛУЖБА
- НТ АУТХОРИТИНЕТВОРК СЕРВИЦЕ
В Windows струја је значајно убрзан када се тренутни корисник придружи спором домену, што је уобичајен случај за многе корпоративне кориснике. Перформансе нове имплементације су сада реда милисекунди, у поређењу са претходном имплементацијом, за коју би могло бити потребно неколико секунди, чак и минута.
В Windows струја сада враћа корисника власника процеса када се тренутна нит лажно представља као други корисник. Раније је ово враћало грешку.
регекп
Регекп сада имплементира интерфејс енцодинг.ТектАдаптер.
Рунтиме
Функција ГОРООТ је сада застарео. У новијим окружењима, требало би да радије користите системску путању за одређивање бинарног "го" и користите го енв ГОРООТ да бисте одредили ГОРООТ.
струне
Пластична кеса струне додаје неколико функција за рад са итераторима:
- Линије Враћа итератор преко линија раздвојених новим редом у низу.
- СплитСек враћа итератор преко свих подстрингова низа одвојених сепаратором.
- СплитАфтерСек враћа итератор преко подстрингова стринга, подељен након сваког појављивања сепаратора.
- ФиелдсСек враћа итератор преко подстрингова низа око секвенци размака, како је дефинисаноуницоде.ИсСпаце
- ФиелдсФунцСек Враћа итератор преко подстрингова низа око секвенци Уницоде кодних тачака које задовољавају предикат.
синхронизацију
Имплементација синц.мап је промењено ради побољшања перформанси, посебно за промене речника. На пример, сукоб измене дисјунктног скупа је мање вероватан на великим речницима и више не захтева време нагомилавања да би се постигло ниско оптерећење речника.
Ако наиђете на било какве проблеме, поставите ГОЕКСПЕРИМЕНТ=носинцхасхтриемап током изградње да бисте се вратили на стару имплементацију и молимо вас попуните формулар за проблем.
тестирање
Нове методе Т.Цонтект и Б.Контекст врати контекст који се одбацује након што се тест заврши и пре него што се изврше функције чишћења теста.
Нове методе Т.Цхдир и Б.Цхдир може се користити за промену радног директоријума за време трајања теста или бенцхмарк-а.
текст/шаблон
Шаблони сада подржавају опсег преко функције и опсег преко инт.
време
Време сада имплементира интерфејсе енцодинг.бинариаппендер и енцодинг.ТектАппендер.
portovi
Linux
Као што је био најавио в заметках релиза Go 1.23, Go 1.24 требует ядро Linux версии 3.2 или позже.
Дарвин
Go 1.24 является последним релизом, который будет работать на macOS 11 Big Sur. Go 1.25 будет требовать macOS 12 Monterey или позже.
ВебАссембли
Го:васмекпорт компајлерска директива је додата Го програмима за извоз функција на ВебАссембли хост.
У ВебАссембли Систем Интерфаце Превиев 1 (ГООС=васип1 ГОАРЦХ=васм), Го 1.24 подржава прављење Го програма као реактор/библиотека навођењем заставице за изградњу -буилдмоде=ц-схаред.
Више типова је сада дозвољено као типови аргумената или резултата за го:васмимпорт функције. Посебно су дозвољени боол, стринг, уинтптр и показивачи на одређене типове (погледајте детаље у документација), заједно са 32-битним и 64-битним целим бројевима и типовима са покретним зарезом, и унсафе.Поинтер, који су већ дозвољени. Ови типови су такође дозвољени као типови аргумената или резултата за го:васмекпорт функције.
Фајлови подршке за ВебАссембли су премештени у либ/васм из мисц/васм.
Почетни меморијски отисак је значајно смањен, посебно за мале ВебАссембли апликације.
Windows
32-битни порт за прозоре/руку (ГООС=виндовс ГОАРЦХ=рука) је означен као неисправан. Детаљи у #КСНУМКС
Извор: линук.орг.ру
