Профиль: Аноним (вход | регистрация) неRU opennet.me  
The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск языка программирования Go 1.27

19.08.2026 23:54 (MSK)

После шести месяцев разработки представлен релиз языка программирования Go 1.27, развиваемого компанией Google при участии сообщества. Язык сочетает высокую производительность, свойственную компилируемым языкам, с такими достоинствами скриптовых языков, как простота написания кода, высокая скорость разработки и защита от ошибок. Код проекта распространяется под лицензией BSD.

Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Оберон. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно, без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си.

Проект изначально разрабатывается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах. Например, на уровне операторов реализованы средства для организации параллельных вычислений и взаимодействия между параллельно выполняемыми методами. Язык также предоставляет встроенные средства защиты от выхода за границы буфера и обеспечивает возможность использования сборщика мусора.

Среди изменений в новом выпуске:

  • Реализована поддержка обобщённых (generic) методов, позволяющих объявлять собственные параметры типов и добавлять обобщённые функции непосредственно в пространство имён конкретного типа данных, без объявления на уровне всего пакета. Например, вместо раздельного объявления методов для каждого типа теперь можно использовать один обобщённый метод для всех типов:
    
       // Было
       func (r *Rand) Int32N(n int32) int32
       func (r *Rand) Int64N(n int64) int64
       func (r *Rand) IntN(n int) int
    
       // Стало
       func (r *Rand) N[Int intType](n Int) Int
    
  • При инициализации структур в качестве ключа разрешено использовать любой допустимый селектор полей, что позволяет напрямую инициализировать поля вложенных или встроенных структур:
    
       type Habitat struct {
           Burrow string
       }
    
       type Gopher struct {
           Name    string
           Habitat // встроенная структура
       }
    
       g := Gopher{
           Name:   "Gopher",
           Burrow: "Burrow #42",
       }
    
  • Расширен механизм автоматического вывода типов для функций, который теперь применяется во всех контекстах присвоения переменной, что позволяет использовать обобщённые (generic) функции без явного указания типов аргументов.
    
       func GenericFormatter[T any](v T) string {
           return fmt.Sprintf("value: %v", v)
       }
    
       type IntFormatter func(int) string
    
       formatters := []IntFormatter{GenericFormatter}
       fn := IntFormatter(GenericFormatter)
       ch := make(chan IntFormatter, 1)
       ch <- GenericFormatter
    
  • В команду "go fix" добавлены новые модернизаторы кода: atomictypes, embedlit, slicesbackward и unsafefuncs для переписывания устаревших конструкций atomic, упрощения объявления встроенных структур, использования slices.Backward при переборе срезов, и замене конструкций с unsafe.Pointer на более безопасные варианты.
  • В команде "go doc" реализована поддержка запросов "package@version", например, "go doc example.com/pkg@v1.2.3".
  • Повышена эффективность выделения памяти для мелких объектов, размером менее 80 байт. В приложениях, интенсивно создающих мелкие объекты оптимизация приводит к повышению производительности примерно на 1%.
  • В пакет runtime/pprof добавлен профиль goroutineleak для автоматического определения постоянно заблокированных сопрограмм.
  • Добавлен пакет encoding/json/v2 с новой реализацией функций для обработки данных в формате JSON.
  • Добавлен пакет crypto/mldsa с реализацией постквантового алгоритма формирования цифровых подписей ML-DSA (FIPS 204).
  • Добавлен пакет uuid для генерации и разбора UUID-идентификаторов.
  • Добавлены пакеты simd и simd/archsimd с экспериментальной поддержкой распараллеливания выполнения операций над данными c использованием процессорных инструкций SIMD (Single Instruction, Multiple Data).


  1. Главная ссылка к новости (https://go.dev/blog/go1.27...)
  2. OpenNews: Выпуск языка программирования Go 1.26
  3. OpenNews: Выпуск Tinygo 0.40, компилятора для языка Go
  4. OpenNews: Оценка потребления памяти при одновременном запуске миллиона задач
  5. OpenNews: Лидер проекта Go принял решение покинуть пост
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66095-go
Ключевые слова: go
При перепечатке указание ссылки на opennet.ru обязательно


 Добавить комментарий
Имя:
E-Mail:
Текст:



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2026 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру