Хорошая статья про
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
Что более эффективно с точки зрения потребления памяти: 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