Недавно вышла версия 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
Похоже нас ждёт крупный релиз. Дженерики начали просачиваться в стандартную библиотеку, так же продолжается переделка криптографии в стандартной библиотеке. 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
tip.golang.org
Go 1.21 Release Notes - The Go Programming Language
👍15🎉6🔥2😡1
☕️ Мерлин заваривает τσάι 🐌
Вот такой интернет мне нравится Gemini is a new application-level internet protocol for the distribution of arbitrary files, with some special consideration for serving a lightweight hypertext format which facilitates linking between files. You may think…
А тем временем gemini-sphere исполнилось четыре года - сообщество живо и растёт
gemini://gemini.circumlunar.space/news/2023_06_20.gmi
🔥4
Please open Telegram to view this post
VIEW IN TELEGRAM
👀4🐳3🤔1😡1
☕️ Мерлин заваривает τσάι 🐌
Так интересно слушать споры "разумна ли модель X или нет" Люди, я не уверен что вы обладаете разумом. Что уж говорить, не уверен что у меня самого есть разум.
FixTweet
nate parrott (@nateparrott)
little chatbot experiment... **role reversal**
press a button to become chatgpt and answer the bot's dumb questions https://t.co/YqSOe4nJla
press a button to become chatgpt and answer the bot's dumb questions https://t.co/YqSOe4nJla
😁9👍1
Что нужно объяснять джунам: большая часть работы в промышленном программировании (и главное его отличие от пет проектов) – это поиск того, что и как нужно изменить в чужом коде, чтобы решить бизнес проблему.
💯12👍5❤2💊1
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Развлекаюсь с стохастическими клеточными автоматами - выращиваю из них растения
🎄7💊2
We live in technological society
Есть хотя бы одна разумная причина, по которой включение HFP для bluetooth наушниках на моём линуксе заставляет сетевой драйвер сходить с ума и дропать пакеты?
Есть хотя бы одна разумная причина, по которой включение 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