How to Go wrong
Новый уникальный блог-пост
GitHub
weak: new package providing weak pointers · Issue #67552 · golang/go
What is a weak pointer? Weak pointers (or weak references, as they are referred to in other languages) allow developers to reference memory without preventing the garbage collector from reclaiming ...
😢6🤔4
How to Go wrong
Решение сначала добавить телеметрию в команду go, а потом решение сделать её opt-in, а не opt-out, вызвало целую бурю эмоций в сообществе. Ответы на этот твит показывают обе стороны: одни продолжают негодовать из-за всего связанного со злым Гуглом, другие…
https://go.dev/blog/gotelemetry
(и через какое-то время после включения запустите
и полюбуйтесь)
(и через какое-то время после включения запустите
go run golang.org/x/telemetry/cmd/gotelemetry@latest view
и полюбуйтесь)
go.dev
Telemetry in Go 1.23 and beyond - The Go Programming Language
Go 1.23 includes opt-in telemetry for the Go toolchain.
Лучшая четверть организаторов GopherCon Russia (не я) делает камерный четырехдневный Go-кэмп в Черногории. С 13-ого по 16-ое октября будет летний лагерь, Kubernetes операторы, горы, PyTorch в Go, отдых, создание игр на Go. Подробности тут, а наш Go-чат делает разыгрыш скидки в 15%.
1👎15👍12🤔2
How to Go wrong
Ооооох https://github.com/golang/go/issues/67552
Ооооох x2: https://github.com/golang/go/issues/67535
GitHub
runtime: add AddCleanup · Issue #67535 · golang/go
Background Go provides one function for object finalization in the form of runtime.SetFinalizer. Finalizers are notoriously hard to use, and the documentation of runtime.SetFinalizer describes all ...
🤔2👍1
How to Go wrong
Новый уникальный блог-пост
Кто-то из Google Cloud подвёз свой пример: https://medium.com/google-cloud/interning-in-go-4319ea635002
Medium
Interning in Go
Go 1.23 comes with a new package unique implementing interning, and a blog post about it. Interning is re-using objects of equal value…
👍8
Иногда в стандартной библиотеке можно найти любопытные оптимизации, казалось бы, тривиальных вещей. Например, написал я тут
strings.Repeat(" ", n)
в коде форматирования значения. Это ведь просто чтобы цикл не писать руками, да? Но нет: https://github.com/golang/go/blob/69234ded30614a471c35cef5d87b0e0d3c136cd9/src/strings/strings.go#L532-L5953👍21🤔9👏5
Хорошая статья про
unique
и weak pointer’ы: https://victoriametrics.com/blog/go-unique-package-intern-string/VictoriaMetrics
Inside Go's Unique Package: String Interning Simplified
When you’ve got several identical values in your code, you only store one copy. Instead of having several copies of the same thing, they all just point to this one version, which is a lot more efficient. It’s a process often called ‘interning’ in programming…
👍6
How to Go wrong
Как вы, наверное, знаете команда Go раз в полгода проводит опросы сообщества и публикует довольно интересные результаты. Но уже какое-то время не было таких же глубоких опросов русскоязычного сообщества. Чаще их делают крупные компании, но часто это замаскированный…
И новый опрос в этом году: https://survey.alchemer.eu/s3/90751981/Go-2024
Результаты прошлого, если вы пропустили: https://devcrowd.ru/go-2023/
Результаты прошлого, если вы пропустили: https://devcrowd.ru/go-2023/
👎7👍5👏1
Arenas are dead, long live arenas!
* https://github.com/golang/go/discussions/70257
* https://go.googlesource.com/proposal/+/refs/heads/master/design/70257-memory-regions.md#annotated-examples
(понемногу возвращаюсь из долгого отпуска)
* https://github.com/golang/go/discussions/70257
* https://go.googlesource.com/proposal/+/refs/heads/master/design/70257-memory-regions.md#annotated-examples
(понемногу возвращаюсь из долгого отпуска)
GitHub
memory regions · golang go · Discussion #70257
I'm starting this discussion to collect early feedback on a draft design for a kind of region-based memory management in Go. There is no prototype yet, only a design and a preliminary evaluatio...
👍13🤔3
var m map[string]map[int]bool
v := m["foo"][42]
fmt.Println(v)
v, ok := m["foo"][42]
fmt.Println(v, ok)
How to Go wrong
Что выдаст этот код?
(третий вариант должен быть
false, false, false
– отредактировать нельзя)👍4👎2
Getter’ы и setter’ы не нужны, говорили они. Просто делайте структуры с экспортированными полями, говорили они…
https://go.dev/blog/protobuf-opaque
Protobuf Enterprise Edition какой-то.
С другой стороны, ленивое декодирование и не сделать по-другому.
EDIT: Читая обсуждение на Hacker News, наткнулся на https://connectrpc.com/docs/protocol, и, кажется, это то, что надо: совместимость с gRPC без ужасов gRPC-Web, поддержка стриминга (в отличии от Twirp), простота как цель.
https://go.dev/blog/protobuf-opaque
Protobuf Enterprise Edition какой-то.
С другой стороны, ленивое декодирование и не сделать по-другому.
EDIT: Читая обсуждение на Hacker News, наткнулся на https://connectrpc.com/docs/protocol, и, кажется, это то, что надо: совместимость с gRPC без ужасов gRPC-Web, поддержка стриминга (в отличии от Twirp), простота как цель.
go.dev
Go Protobuf: The new Opaque API - The Go Programming Language
We are adding a new generated code API to Go Protobuf.
🤔10😢2
How to Go wrong
И новый опрос в этом году: https://survey.alchemer.eu/s3/90751981/Go-2024 Результаты прошлого, если вы пропустили: https://devcrowd.ru/go-2023/
Подвезли результаты: https://devcrowd.ru/go-2024/
Исследование Go-разработчиков, 2024
DevCrowd вместе с Авито провели исследование рынка Go-разработчиков, 2024
👍3👎1
А вот и результаты исследования команды Go: https://go.dev/blog/survey2024-h2-results
go.dev
Go Developer Survey 2024 H2 Results - The Go Programming Language
What we learned from our 2024 H2 developer survey
👍5
Всех с наступающим или наступившим Новым годом.
Итоги подводить не буду, но поздравлю всех с тем, что один из старейших багов в спеке Go наконец-то закрыли. После релиза 1.24 наконец-то можно будет нормально говорить про слайсы, мапы или каналы без уродливых объяснений «ну, это как ссылки, только ссылок в Go нет».
Итоги подводить не буду, но поздравлю всех с тем, что один из старейших багов в спеке Go наконец-то закрыли. После релиза 1.24 наконец-то можно будет нормально говорить про слайсы, мапы или каналы без уродливых объяснений «ну, это как ссылки, только ссылок в Go нет».
👍24
Сходил в гости к @orgprog поговорить про дженерики, итераторы и Go вообще: https://www.youtube.com/watch?v=M5XJ_Ojjm8M
YouTube
Дженерики, горутины и перспективы Go: взгляд изнутри | Алексей Палажченко | #26
В этом выпуске мы поговорили с Алексеем Палажченко об эволюции языка Go и его роли в современном программировании. Разобрали, как Go стал выбором для крупных проектов, включая создание баз данных, и почему он продолжает завоёвывать популярность среди разработчиков.…
7👍29
Ну всё, дженерики запилили, начали второй подход к обработке ошибок: https://github.com/golang/go/issues/71203
GitHub
proposal: spec: reduce error handling boilerplate using ? · Issue #71203 · golang/go
Proposal Details Background As discussed in the introduction to an earlier, declined, proposal, Go programs have a lot of error checking code. In surveys error handling is listed as the biggest spe...
😢17👍6👎6🤔2