
Go 1.27 გამოვიდა: გენერიკული მეთოდები, JSON v2 და post-quantum კრიპტოგრაფია
Go-ს გუნდმა გამოაქვეყნა Go 1.27, რომელსაც მოაქვს გენერიკული მეთოდები, ტიპების უფრო ფართო ინფერენცია, წვრილი ობიექტების უფრო სწრაფი გამოყოფა, encoding/json/v2 და ML-DSA post-quantum ხელმოწერები.
ენის სამი ცვლილება
Go 1.27-ში დაემატა გენერიკული მეთოდების მხარდაჭერა. გამოშვების შენიშვნები მაგალითად მოიხმობს math/rand/v2-ის ტიპს Rand: ცალკეული Int32N, Int64N და IntN მეთოდების ნაცვლად ტიპს ახლა აქვს ერთი გენერიკული მეთოდი — N[Int intType](n Int) Int.
მეორე ცვლილება: struct-ის ლიტერალში გასაღები ახლა შეიძლება იყოს ნებისმიერი ვალიდური ველის სელექტორი ამ ტიპისთვის, რაც საშუალებას იძლევა ჩაშენებული ან წყობილი სტრუქტურების ველები პირდაპირ ინიციალიზდეს — მაგალითად, Gopher-ის ლიტერალში ჩაშენებული Habitat-ის ველი Burrow.
მესამე: ფუნქციის ტიპის ინფერენცია გაფართოვდა და მოქმედებს ყველა მინიჭების კონტექსტში — გენერიკული ფუნქციების გამოყენება ტიპის არგუმენტების გარეშე შეიძლება რთული ლიტერალებში, ტიპის კონვერტაციებსა და არხში გაგზავნისას.
ინსტრუმენტები, მეხსიერება და პროფილირება
go fix-ს დაემატა ოთხი ახალი მოდერნიზატორი — atomictypes, embedlit, slicesbackward და unsafefuncs. go doc ახლა იღებს package@version ტიპის მოთხოვნებს, მაგალითად go doc example.com/[email protected], ხოლო go mod tidy ავტომატურად აერთიანებს go.mod-ში არსებულ რამდენიმე require ბლოკს სტანდარტულ ორ-ბლოკიან სტრუქტურაში (direct და indirect).
Runtime-ში ზომაზე მორგებული მეხსიერების გამოყოფა ამცირებს 80 ბაიტზე მცირე ობიექტების გამოყოფის ღირებულებას 30 პროცენტამდე, რაც, გუნდის თქმით, ალოკაციით დატვირთულ პროგრამებში საერთო წარმადობას დაახლოებით 1 პროცენტით აუმჯობესებს. runtime/pprof-ის goroutineleak პროფილი ახლა საერთოდ ხელმისაწვდომია და საშუალებას იძლევა ავტომატურად გამოვლინდეს სამუდამოდ დაბლოკილი გორუტინები.
სტანდარტული ბიბლიოთეკა: JSON v2, post-quantum ხელმოწერები, UUID, SIMD
ახალი პაკეტი encoding/json/v2 გვთავაზობს მაღალი დონის JSON დამუშავებას კონფიგურირებადი პარამეტრებითა და უფრო მკაცრი ნაგულისხმევებით, ხოლო encoding/json/jsontext დაბალი დონის ნაკადურ დამუშავებას ფარავს. ძველი encoding/json პაკეტი ახლა v2-ის იმპლემენტაციაზეა დაფუძნებული, რაც უფრო სწრაფ დეკოდირებას იძლევა და უკუთავსებადობას ინარჩუნებს.
crypto/mldsa ახორციელებს post-quantum ML-DSA ხელმოწერის სქემას (FIPS 204) და ინტეგრირებულია crypto/x509-სა და crypto/tls-ში. ახალი პაკეტი uuid ამატებს UUID-ების გენერაციისა და პარსინგის ჩაშენებულ მხარდაჭერას, simd და simd/archsimd ექსპერიმენტულ SIMD მხარდაჭერას გვთავაზობს, ხოლო net/http/httptest-ს დაემატა NewTestServer — მეხსიერებაში მომუშავე ყალბი ქსელი testing/synctest-თან გამოსაყენებლად.
სად ჩამოვტვირთოთ
ბინარული არქივები და ინსტალატორები ხელმისაწვდომია Go-ს გადმოწერის გვერდზე, სრული ცვლილებების სია კი Go 1.27-ის გამოშვების შენიშვნებშია. გუნდი აცხადებს, რომ მომდევნო კვირებში დამატებითი პოსტები ზოგიერთ შესაძლებლობას უფრო დეტალურად განიხილავს.
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.