Telegram Web Link
Вчера вышел релиз #go 1.23 - самый спорный релиз на моей памяти https://go.dev/doc/go1.23

В нём стали доступны функции-итераторы https://go.dev/doc/go1.23#language, добавление которых вызвало довольно много негативной реакции в сообществе https://www.gingerbill.org/article/2024/06/17/go-iterator-design/

Помимо пакета нового пакета iter в пакеты slices и maps много новых функций типа Backward, Chunk, Values, Keys и Collect

Так же в этом релизе добавлена функциональность сбора телеметрии тулчейна Go. Телеметрия отключена по умолчанию и собирает анонимную информацию о параметрах go и gopls (https://go.dev/doc/telemetry). Одно время обсуждения самой возможности были довольно бурными https://www.reddit.com/r/golang/comments/10z5ig1/googles_go_may_add_telemetry_reporting_thats_on/ . Телеметрия не затрагивает результат сборки.

Посмотреть на статистические выкладки телеметрии и скачать собранный датасет можно вот тут https://telemetry.go.dev/

Список багов, пойманных телеметрией https://github.com/golang/go/issues?q=label%3Agopls%2Ftelemetry-wins

Из менее противоречивых изменений мне приглянулись
⁃ Новый флаг go mod tidy -diff - печатает изменения, которые произойдут при go mod tidy и возвращает exit_code=1 если такие изменения есть. Сильно упрощает проверки в CI
⁃ Новый флаг go env -changed - печатает изменения в go env, сделанные с помощью -w
⁃ Упрощена работа с time.Timer и time.Ticker - теперь вызовов .Reset и .Stop достаточно для корректного сброса и остановки - не надо вытаскивать stale значения из каналов
⁃ Новый пакет unique, который позволяет интернировать comparable значения
⁃ Новый пакет structs с маркерным типом structs.HostLayout для контроля memory layout структур
⁃ В go.mod корневых модулей (не зависимостей) можно использовать директиву godebug (https://go.dev/doc/godebug), которая позволяет включать старое runtime поведение некоторых частей стандартной библиотеки. Например, новое поведение таймеров можно отключить вот так

godebug(
asynctimerchan=1
)



⁃ В net/http добавили много утилит для работы с cookie и поле Request.Pattern, которое содержит паттерн роута из http.Mux. Ждём когда chi будет выставлять его тоже
⁃ Новая функция os.CopyFS, которая копирует содержимое fs.FS в локальную директорию. Писать распаковщики zip никогда не было так просто!
⁃ Максимальная глубина стека для runwww.tg-me.com/pprof увеличина до 128 фреймов (да, я упирался в глубину стека на трейсах 😔)
⁃ Новые функции atomic.And и atomic.Or (и комплиментарные методы), которые позволяют атомарно применять битовые маски

Интерактивные заметки к релизу https://antonz.org/go-1-23/
Самое худшее в бессонице - тебе одновременно и очень скучно, но у тебя буквально не хватает мозгов заняться чем-то интересным
"St. Petersburg mathematicians and their discoveries", окончательная версия, в цвете, на английском языке. Читайте, распространяйте, критикуйте, посылайте коллегам! Ч/б версия в высоком разрешении для домашней печати лежит на сайте.
Кстати для следующей версии pgx можно будет использовать sql.ErrNoRows вместо pgx.ErrNoRows
Вообще в долгих сюжетных онгоингах есть что-то хтоничное
Особенно меня веб-комиксы впечатляют

Я сейчас читаю Freefall - он идёт с 1998 и только недавно закончилась главная арка и началась следующая

Прочитал до текущего выпуска Unsounded - он идёт с 2010 и главная арка только входит в кульминацию

И на очереди Schlock Mercenary - это сюжетный комикс, который выходил каждый день с 2000 по 2020-ый

Силы конечно у некоторых авторов вообще нифига не слабые
#TIL о заголовках List-Unsubscribe и List-Unsubscribe-Post для электронной почты. Именно они позволяют почтовым клиентам показать кнопочку “Unsubscribe”

List-Unsubscribe перечисляет почтовые адреса или URL. Для отписки можно послать письмо на почтовый адрес отсюда или перейти на страницу по URL, чтобы отписаться там
⁃ Если в заголовках есть List-Unsubscribe-Post: List-Unsubscribe=One-Click, то отписаться можно просто послав POST запрос на HTTPS URL из List-Unsubscribe
Интересно, насколько эффективна такая специализация в плане соотношения «ускорение приложений» к «багоплотность кода»

У меня сложилось впечатление, что именно вот такие оптимизации под специальные случаи частенько становятся источником проблем

https://www.tg-me.com/HowToGoWrong/204
Поисковик Kagi, платной версией которой я пользуюсь, добавил фильтрацию AI-generated изображений: можно убрать из выдачи или оставить только их.

Так же по умолчанию поисковик теперь такие картинки пессимизирует в выдаче. Есть заметное глазу количество ложно-положительных срабатываний, но в целом кажется работает

Фича забавная, интересно, сколько месяцев она продержится

https://help.kagi.com/kagi/features/exclude-ai-images.html
fuck you

* Hindley–Milners your lisp

; это не eval, а честный вывод типов
Очень радует, что практика влияет

Решил проверить, насколько для меня сложно запилить миниатюрный лисп подобный язык

- с нуля
- используя threaded байткод
- с минимом кода

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

При этом лексер потоковый, работает только с двумя unicode points в памяти из сорца
1
Если надо было бы придумать три желания добронамеренному джинну, то я бы первым попросил бы сделать меня очень умным и самоосознанным, но в тоже время сохранить мои ценности, этику и привязанности.

В таком случае я смогу выжать максимум из оставшихся двух желаний.

Скорее всего выразить улучшение мира просто в одной фразе типа "мир во всём мире" не получится. Для описания моих ценностей (и ценностей большинства людей) хотя бы с 90% умалчиваемых, но необходимых нюансов, пришлось бы разработать отдельный раздел аналитической философии.

Это если допустить, что такая штука вообще выразима как-то иначе, как кусок вектора состояния моего мозга
Ура, релизнулся терминал ghostty https://ghostty.org/

Он был в закрытой бете уже долгое время

Написан на zig, список фич на скриншоте
1
☕️ Мерлин заваривает τσάι 🐌
Оказывается мою любимую командную оболочку fish переписывают с C++ на #rust https://github.com/fish-shell/fish-shell/pull/9512 Любопытный момент: код переписывают не сразу и целиком, а кусками - отдельные команды и операторы Кое-что уже вмержено в мастер…
Fish полностью портировали на rust

переписывали почти 14 месяцев, релиз 4.0 пока в бете

Из новых интересных мне фичей
- fish наконец-то можно распространять как статический бинарник (rust сильно упростил встраивание ассетов)
- убрали зависимость от ncurses
- улучшили взаимодействие с XTerm и Kitty

На самом деле там куча всего, читайте заметки к релизу

По ссылке более-менее подробный рассказ о переписывании
https://fishshell.com/blog/rustport/


https://www.tg-me.com/teamerlin/7407
52
2025/07/14 17:35:25
Back to Top
HTML Embed Code: