Назад
Вийшов Go 1.27: узагальнені методи, JSON v2 і постквантова криптографія
SiTech AI Team2 წთ. საკითხავი

Вийшов Go 1.27: узагальнені методи, JSON v2 і постквантова криптографія

Команда Go випустила Go 1.27: узагальнені методи, ширше виведення типів функцій, швидше виділення дрібних об'єктів, пакет encoding/json/v2 та постквантові підписи ML-DSA у стандартній бібліотеці.

Три зміни в мові

У Go 1.27 додано підтримку узагальнених методів. У примітках до випуску наводять приклад типу Rand з math/rand/v2: замість окремих методів Int32N, Int64N та IntN для кожного цілочисельного типу тепер є один узагальнений метод — N[Int intType](n Int) Int.

Друга зміна: ключем у літералі структури тепер може бути будь-який коректний селектор поля цього типу, тож поля вкладених або вбудованих структур можна ініціалізувати напряму — наприклад, задати поле Burrow вбудованої структури Habitat у літералі Gopher.

Третя: виведення типів функцій узагальнено й поширюється на всі контексти присвоєння, тому узагальнені функції можна використовувати без явних типових аргументів у складених літералах, перетвореннях типів і надсиланні в канал.

Інструменти, пам'ять і профілювання

go fix отримав чотири нових модернізатори — atomictypes, embedlit, slicesbackward і unsafefuncs. go doc тепер приймає запити виду package@version, як-от go doc example.com/[email protected], а go mod tidy автоматично зводить кілька блоків require у go.mod до стандартної дворівневої структури direct та indirect.

У runtime спеціалізоване за розміром виділення пам'яті зменшує витрати на дрібні об'єкти до 80 байтів до 30 відсотків, що, за словами команди, покращує загальну продуктивність приблизно на 1 відсоток у програмах із великою кількістю виділень. Профіль goroutineleak у runtime/pprof тепер загальнодоступний і дає змогу автоматично виявляти назавжди заблоковані горутини.

Стандартна бібліотека: JSON v2, постквантові підписи, UUID, SIMD

Новий пакет encoding/json/v2 пропонує високорівневу обробку JSON із налаштовуваними параметрами та суворішими типовими значеннями, а encoding/json/jsontext покриває низькорівневу потокову роботу. Наявний пакет encoding/json тепер працює на реалізації v2, що пришвидшує декодування й зберігає зворотну сумісність.

crypto/mldsa реалізує постквантову схему підпису ML-DSA (FIPS 204) та інтегрований у crypto/x509 і crypto/tls. Новий пакет uuid додає вбудовану генерацію й розбір UUID, simd і simd/archsimd дають експериментальну підтримку SIMD, а net/http/httptest отримав NewTestServer — фальшиву мережу в пам'яті для використання з testing/synctest.

Де завантажити

Бінарні архіви та інсталятори доступні на сторінці завантажень Go, а повний перелік змін — у примітках до випуску Go 1.27. Команда обіцяє, що в наступні тижні окремі можливості буде розібрано докладніше в додаткових публікаціях.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.