Telegram Web Link
Недавно вышла версия 1.21 release candidate 1

Похоже нас ждёт крупный релиз. Дженерики начали просачиваться в стандартную библиотеку, так же продолжается переделка криптографии в стандартной библиотеке. PGO шагает по планете и готов к проду

улучшения языка и компилятора:
- для инициализации пакетов теперь используется топологическая сортировка
- новые функции в embedded пакете: min и max для всех Ordered типов, clear для хэшмап
- улучшенный вывод типов
- profile-guided optimisation стабилизирована и флаг -pgo теперь включён в auto режим по умолчанию. Если в директории есть файл default.pgo, то его содержимое будет использоваться для оптимизаций
- PGO теперь может девиртуализировать вызовы методов интерфейсов, заменяя их на вызовы конкретных типов
- компилятор теперь собирается с pgo, за счёт чего время сборки проектов уменьшилось примерно на 6%
- для стек-трейсов теперь печатаются первые и последние 50 фреймов стека вместо того чтобы печатать последние 100
- оптимизировали GC, уменьшили на 40% задержки в краевых случаях и немного уменьшили потребление памяти
- ускорили CGO вызовы c 1-3 мкс до 100-200 нс
- линкер теперь может удалять глобальные переменные типа map, если это не влияет на остальной код

изменения стандартной библиотеки:
- новые пакеты:
- log/slog и testing/slogtest для структурных логов - похоже время zap и logrus уходит
- slices и maps стабилизированы и перемещены из /x/exp в стандартную библиотеку
- cmp, который предоставляет функции Less и Compare для comparable типов
- все имплементации fs.FileInfo теперь имплементируют fmt.Stringer
- новая функции io/fs.FormatDirEntry и io/fs.FormatFileInfo печатают fs.DirEntry и fs.FileInfo в строку
- новые методы bytes.Buffer Available() int and AvailableBuffer() []byte позволяют делать append байтов без дополнительных аллокаций
- новая функция context.WithoutCancel возвращает context.Context, который не отменяется, если отменяется родительский контекст
- новые функции context.WithDeadlineCause и context.WithTimeoutCause позволяют переопределить ошибку, которую возвратит отменённый контекст
- новая функция context.AfterFunc(context.Context, func()) func() bool запускает функцию после отмены контекста
- новая ошибка errors.ErrUnsupported - теперь это стандартный способ показать, что какая-то операция не поддерживается
- новый тип флагов BoolFunc в flag, который вызывает хук, если соответсвующий флаг установлен
- стал доступен Multipath TCP режим в пакете net. В будущем он будет включаться автоматически
- в пакете net/http ResponseController.EnableFullDuplex включает дуплексный режим для http.Handler: можно писать в ResponseWriter и читать из Request.Body одновременно
- пакет unicode теперь поддерживает стандарт Unicode 15.0.0
- новые функции в sync: OnceFunc, OnceValue, and OnceValues - ленивая инициализация для всех, даром и никто обиженный не убежит

Ещё добавились новые метрики, ускорен сбор трейсов, сильно переработана криптография (нужен отдельный подробный разбор, там много интересного), потвиканы сисколы и их ошибки


https://tip.golang.org/doc/go1.21

https://en.wikipedia.org/wiki/Multipath_TCP
👍15🎉6🔥2😡1
🐡
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳6😢1
🐡🐡🐡
Please open Telegram to view this post
VIEW IN TELEGRAM
👀4🐳3🤔1😡1
Что нужно объяснять джунам: большая часть работы в промышленном программировании (и главное его отличие от пет проектов) – это поиск того, что и как нужно изменить в чужом коде, чтобы решить бизнес проблему.
💯12👍52💊1
We live in technological society

Есть хотя бы одна разумная причина, по которой включение HFP для bluetooth наушниках на моём линуксе заставляет сетевой драйвер сходить с ума и дропать пакеты?
💊11
🖥🐤
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12💊3
The Grug Brained Developer

https://grugbrain.dev/
8❤‍🔥2👍2
2025/07/12 17:34:18
Back to Top
HTML Embed Code: