Go 1.22 вече е пуснат, научете за неговите нови функции и подобрения

Голанд

Go е паралелен, компилиран език за програмиране със статичен тип, вдъхновен от синтаксиса на C.

Новата версия на Go 1.22, пристига шест месеца след версия 1.21, с редица забележителни промени в набора от инструменти, времето за изпълнение, оптимизационните подобрения, подобренията на компилатора и библиотеките.

За тези, които не знаят за Go, трябва да ви кажа, че това еТова е език за програмиране, разработен от Google с участието на общността като хибридно решение, което съчетава високата производителност на компилираните езици с предимства като скриптови езици като лекота на писане на код, скорост на разработка и защита срещу грешки.

Основни нови функции на Go 1.22

В тази нова версия, която е въведена от Go 1.22, подчертава две промени в циклите "for".Като Преди това променливите, декларирани от for цикъл, се създаваха веднъж и бяха актуализирани във всяка итерация. В Go 1.22 всяка итерация на цикъла създава нови променливи освен това, за да избегнете случайни грешки при споделяне Добавена е експериментална поддръжка (GOEXPERIMENT=rangefunc) за функции за диапазон към for цикли, което ви позволява да посочите функция като итератор и разреши дългогодишен проблем с циклите for което накара сърутинните извиквания да споделят променливи на цикъл между итерациите. Освен това циклите for вече могат да преминават през цели числа. Например:

package main import "fmt" func main() { for i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 излита!") }

Друга забележителна промяна в тази нова версия е въвеждането на възможност за използване на директория «продавач« който съдържа зависимостите на работното пространство. Сега командите можете да използвате тази директория, която е създадена с `отидете на работа продавач` и се използва в команди за изграждане когато ` е зададено-мод` в «продавач«, това е стойността по подразбиране, когато съществува директория «продавач» в работното пространство.

Важно е да се отбележи, че функционалността на `иди вземи` вече не се поддържа извън модул в режим GOPATH наследено Въпреки това, други команди за изграждане като `go build` и `go test` Те ще продължат да работят за неопределено време за наследени програми GOPATH. Освен това командата `go mod init` вече няма да се опитва да импортира модулни изисквания от конфигурационни файлове на други «„продажба“ (като Gopkg.lock).

Go 1.22 въвежда a нов пакет io/unsafe който осигурява функционалност за работа с указатели и опасна памет. Този пакет предоставя методи за преобразуване на указатели към и от безопасни и небезопасни типове, както и за извършване на операции за копиране на паметта без проверка на границите.

Работата продължи за включване на оптимизации в компилатора въз основа на резултатите от pPGO код профилиране, y es que сега компилаторът използва инструменти за девиртуализация, за да замени косвените извиквания на различни методи с разширено вградено блоково изпълнение. Когато PGO беше активиран, добавената промяна подобри производителността на повечето програми с 2% до 14%.

Във версията на Изберете Windows, програми, които свързват или зареждат библиотеки Изграждайте с -buildmode=c-архив o -buildmode=c-споделено вече може да използва API за регистриране на събития на Windows (ETW). чрез новите пакети време на изпълнение/проследяване y кука за проследяване, които прилагат протокола за събиране на проследяване на събития Go като доставчик на ETW.

От останалите промени, които се открояват:

  • Командата отидете тест -покрийте сега отпечатва обобщения на покритието за обхванати пакети, които нямат собствени тестови файлове.
  • os/изп, е добавена възможност за дефиниране на контекстни атрибути, което ви позволява да задавате стойности като работна директория, променливи на средата и дескриптор на входно/изходен файл за изпълнени команди.
  • Оптимизирано управление на паметта по време на изпълнение, което води до 1-3% увеличение на производителността и 1% намаление на потреблението на памет за повечето приложения.
  • пакет net/http, функцията е добавена CloseIdleConnections към HTTP клиента, който затваря всички неактивни връзки, които клиентът е използвал наскоро
  • Към компилатора е добавено подобрено експериментално изпълнение (GOEXPERIMENT=newinliner) на механизма за вмъкване на повикване, което използва евристика за отделяне на важни операции от неважни.
  • Пакетът е добавен » math/rand/v2 » към стандартната библиотека, която предлага по-последователен API и използва по-бързи алгоритми за генериране на псевдослучайни числа.
  • пакет net/http.ServeMux Добавена е възможност за указване на методи и маски в шаблони.

И накрая, ако сте се интересувам да научим повече за това, можете да проверите подробностите В следващия линк.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.