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
Что более эффективно с точки зрения потребления памяти: map[int64]struct{} или map[int64]bool?
Anonymous Quiz
75%
map[int64]struct{}
10%
map[int64]bool
15%
¯\_(ツ)_/¯
😢21🤔6👏3👍2👎1
How to Go wrong
Ну что, поехали! https://blog.ferretdb.io/ferretdb-1-0-ga-opensource-mongodb-alternative/ Плюсаните нас на https://news.ycombinator.com (поищите FerretDB в new) Лайк и ретвит: https://twitter.com/ferret_db Стар и рe🐘 : https://techhub.social/@ferretdb Лайк…
Мы катились к этому больше года, и, наконец, докатились:
* https://blog.ferretdb.io/ferretdb-releases-v2-faster-more-compatible-mongodb-alternative/
* https://opensource.microsoft.com/blog/2025/01/23/documentdb-open-source-announcement/
* https://github.com/microsoft/documentdb
TL;DR Мы работали с Microsoft над open source Azure Cosmos DB for MongoDB (vCore) и затаскиванием его в FerretDB. И заопенсорсили, и затащили!
* https://blog.ferretdb.io/ferretdb-releases-v2-faster-more-compatible-mongodb-alternative/
* https://opensource.microsoft.com/blog/2025/01/23/documentdb-open-source-announcement/
* https://github.com/microsoft/documentdb
TL;DR Мы работали с Microsoft над open source Azure Cosmos DB for MongoDB (vCore) и затаскиванием его в FerretDB. И заопенсорсили, и затащили!
blog.ferretdb.io
FerretDB Releases 2.0: A Faster, More Compatible MongoDB Alternative | FerretDB Blog
We are pleased to announce the first release candidate of FerretDB v2.0, a significant milestone in our objective to provide a high-performance, truly Open Source alternative to MongoDB.
👍42👏17
How to Go wrong
Мы катились к этому больше года, и, наконец, докатились: * https://blog.ferretdb.io/ferretdb-releases-v2-faster-more-compatible-mongodb-alternative/ * https://opensource.microsoft.com/blog/2025/01/23/documentdb-open-source-announcement/ * https://github.c…
А теперь мы докатились и до GA релиза:
* https://blog.ferretdb.io/ferretdb-v2-ga-open-source-mongodb-alternative-ready-for-production/
* https://thenewstack.io/ferretdb-2-0-open-source-mongodb-alternative-with-postgresql-power/
–-–
Через пару дней начну опять писать про Go. Не переключайтесь.
* https://blog.ferretdb.io/ferretdb-v2-ga-open-source-mongodb-alternative-ready-for-production/
* https://thenewstack.io/ferretdb-2-0-open-source-mongodb-alternative-with-postgresql-power/
–-–
Через пару дней начну опять писать про Go. Не переключайтесь.
👍21👏8
Компилятор TypeScript переписывают на Go. Анонс и видео тут, транскрипт ключевой части на Reddit, а на картинке – ответ Anders’а Hejlsberg’а (создателя TypeScript, C#, Delphi и Turbo Pascal’я). Сам ответ вот тут, но потрясающий UI GitHub’а вам его не только скроет, но и будет скрывать при каждом новом ответе – а ответы там появляются часто, потому что у любителей C# и Rust’а там конкретно подгорает.
👏37👍6🤔4
Выступал недавно на митапе Armenia PostgreSQL (который и соорганизовывал – никуда не деться от старых привычек) про использование FerretDB (написанного, напомню, на Go с горутинами/потоками) внутри PostgreSQL (написанного на C с форками). Если фразы в скобках не вызвали у вас ужаса, то вы просто не форкали процессы с тредами 🙂
Видео – тут, слайды – тут, реальный код – вот тут.
Видео – тут, слайды – тут, реальный код – вот тут.
YouTube
Alexey Palazhchenko - Using PostgreSQL's Background Worker Processes For Fun and Profit (Meetup #2)
Alexey Palazhchenko presented Using PostgreSQL's Background Worker Processes For Fun and Profit at the inaugural 2025 PostgreSQL Meetup in Yerevan.
Alexey's talk focused on PostgreSQL’s one unique extensibility option: the ability to run any custom code…
Alexey's talk focused on PostgreSQL’s one unique extensibility option: the ability to run any custom code…
4👍24
Писал-писал большой пост про новый testing.B.Loop и как его никто не понимает, но меня опередили:
* https://go.dev/blog/testing-b-loop
* https://github.com/golang/go/issues/73137
Единственное, что не упомянуто, так это то, что эта оптимизация не покрывает testing.PB.Next. Но это не точно.
* https://go.dev/blog/testing-b-loop
* https://github.com/golang/go/issues/73137
Единственное, что не упомянуто, так это то, что эта оптимизация не покрывает testing.PB.Next. Но это не точно.
go.dev
More predictable benchmarking with testing.B.Loop - The Go Programming Language
Better benchmark looping in Go 1.24.
👍4👏1
Будет официальный SDK для Model Context Protocol’а на Go. Когда-нибудь: https://github.com/orgs/modelcontextprotocol/discussions/224#discussioncomment-12730162
Очень надеюсь, что будет лучше, чем существующие, которые как-будто с JS портированы один-в-один.
Очень надеюсь, что будет лучше, чем существующие, которые как-будто с JS портированы один-в-один.
GitHub
Proposal: official support for `modelcontextprotocol/go-sdk` · modelcontextprotocol · Discussion #224
Pre-submission Checklist I have verified this would not be more appropriate as a feature request in a specific repository I have searched existing discussions to avoid duplicates Your Idea There ar...
👍15
uber-go/automaxprocs скоро будет не нужен: https://github.com/golang/go/issues/73193
GitHub
runtime: CPU limit-aware GOMAXPROCS default · Issue #73193 · golang/go
Overview Change the Go runtime on Linux to use CPU cgroup quota limits to set the default value of GOMAXPROCS. This is a concrete proposal for the ideas discussed in #33803. I've included a lot...
👍12
Tailscale портировали на Plan 9, попутно пофиксив и Go, и сам Plan 9: https://tailscale.com/blog/plan9-port
Tailscale
Porting Tailscale to Plan 9
Securely connect to anything on the internet with Tailscale. Built on WireGuard®️, Tailscale enables you to make finely configurable connections, secured end-to-end according to zero trust principles, between any resources on any infrastructure.
👍17
How to Go wrong
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 (понемногу возвращаюсь из долгого отпуска)
Если ждать memory regions сил уже нет, то можно и самому memory arenas сделать: https://mcyoung.xyz/2025/04/21/go-arenas/
mcyoung.xyz
Cheating the Reaper in Go · mcyoung
👍3👎2👏1