tools.go
уйдёт в небытие: https://go.googlesource.com/proposal/+/refs/changes/55/495555/5/design/48429-go-tool-modules.md👍18👎1
OpenTelemetry ещё метрики с логами не доделали, а уже на профилирование замахнулись: https://github.com/open-telemetry/oteps/pull/237
GitHub
Introduces Profiling Data Model by petethepig · Pull Request #237 · open-telemetry/oteps
OTel Profiling SIG has been working on this for a while and we're ready to present our Data Model. So far we've done a number of things to validate it:
we've written a new profiles pr...
we've written a new profiles pr...
👍7👎1
Создатель Rubinius’а внезапно среди авторов нового поста: https://go.dev/blog/wasi
go.dev
WASI support in Go - The Go Programming Language
Go 1.21 adds a new port targeting the WASI preview 1 syscall API
👍2👎1
Forwarded from 🇺🇦 Go performance channel (🇺🇦 Oleg Kovalov)
proposal: runtime/trace: flight recording #golang by Michael Knyszek
https://github.com/golang/go/issues/63185
(thanks to Ehsan)
https://github.com/golang/go/issues/63185
(thanks to Ehsan)
GitHub
runtime/trace: flight recording · Issue #63185 · golang/go
Proposal: runtime/trace flight recording Updated: 23 September 2023 Background "Flight recording" is a technique in which trace data is kept in a conceptual circular buffer, flushed upon ...
Интересный, конечно, способ репортить ошибки – именем пакета: https://github.com/golang/go/blob/master/src/cmd/dist/notgo120.go
👍5
Написать плохой бенчмарк скоро станет немного сложнее: https://github.com/golang/go/issues/61515
GitHub
testing: add testing.B.Loop for iteration · Issue #61515 · golang/go
Update July 26, 2023: See this comment for the latest Loop API. The motivation and arguments for this proposal still otherwise apply in full, but the API has switched to the for b.Loop() { ... } fo...
👍3
Go/v2 уже не за горами: https://github.com/golang/go/issues/61716
GitHub
math/rand/v2: revised API for math/rand · Issue #61716 · golang/go
Based on earlier discussions in #60751, #26263, and #21835, as well as discussions with @robpike, I propose adding a new version of math/rand, imported as math/rand/v2, to the standard library. The...
pkgsite
сливает имена ваших секретных проектов: https://github.com/golang/go/issues/55106(ещё один повод делать всё open source :D)
GitHub
x/pkgsite: Excluding private packages from external site lookups · Issue #55106 · golang/go
Running golang.org/x/pkgsite/cmd/pkgsite locally to see documentation for a package I'm working on has been a generally great experience, but I've noticed that pkgsite is trying to fetch in...
Кен Томпсон всё-таки встроил бэкдор в компилятор Go… (нет)
Восхитительная статья. Даже не верится, что тот самый код только сейчас нашли и разобрали.
https://research.swtch.com/nih
Восхитительная статья. Даже не верится, что тот самый код только сейчас нашли и разобрали.
https://research.swtch.com/nih
3👍6
How to Go wrong
Решение сначала добавить телеметрию в команду go, а потом решение сделать её opt-in, а не opt-out, вызвало целую бурю эмоций в сообществе. Ответы на этот твит показывают обе стороны: одни продолжают негодовать из-за всего связанного со злым Гуглом, другие…
Opt-in телеметрию начали понемногу завозить, начиная с vscode-go.
GitHub
vscode-go/CHANGELOG.md at master · golang/vscode-go
Go extension for Visual Studio Code. Contribute to golang/vscode-go development by creating an account on GitHub.
👍1
NilAway: Practical Nil Panic Detection for Go
Конечно, все любители Rust’а уже опять написали какой у них прекрасный язык
Конечно, все любители Rust’а уже опять написали какой у них прекрасный язык
👍10
Новому Go – новый
runtime/trace
: https://github.com/golang/go/issues/60773GitHub
runtime/trace: execution tracer overhaul · Issue #60773 · golang/go
Execution tracer overhaul Authored by [email protected] with a mountain of input from others. In no particular order, thank you to Felix Geisendorfer, Nick Ripley, Michael Pratt, Austin Clements,...
👍5👎1
Open Source Supply Chain Security at Google: https://research.swtch.com/acmscored
👍2👎1
maps.Clone
был сломан несколько месяцев и никто не заметил: https://github.com/golang/go/issues/64474GitHub
maps: maps.Clone reference semantics when cloning a map with large value types · Issue #64474 · golang/go
Go version go version go1.21.4 linux/amd64 What operating system and processor architecture are you using (go env)? GO111MODULE='' GOARCH='amd64' GOBIN='' GOCACHE='/home...
👍14👎2
Forwarded from Go Update
🔒proposal: Tuple Types for Go
Я наконец оправился после конференции, а ребята из Go Core Team ненадолго вернулись к обсуждениям после ноябрьских праздников в США, перед тем как снова уйдут уже на рождественский отдых.
Итак, на повестке дня у нас новый тип - кортеж. Вообще кортежи много где встречаются - от sql до python. Идея проста: нужно хранить несколько значений друг с другом в одной конструкции и иметь доступ к ним по индексу. Условно говоря это такой массив фиксированной длины, у которого элементы могут быть разного типа.
И тут появляется традиционный вопрос - а зачем? Их много раз предлагали, но каждый раз упирались в вопрос "А чем мало простых структур?". И ведь правда, обычно структур должно хватать за глаза, а там где очень хочется можно притянуть множественный возврат из функции (тоже, кстати, своего рода кортеж). Но сила кортежей не в инновациях, а в облегчении каждодневной разработки. А именно в этих двух вещах:
• Для кортежа не нужно создавать отдельный тип (но можно). Ближайший аналог это анонимная структура, только в случае кортежа не нужно указывать имена полей.
• Для распаковки и упаковки кортежей в несколько переменных в язык добавляются специальные конструкции.
Посмотря на количество предложений, ребята наконец назрели и решили провести эксперимент по итогу которого сделали свое предложение: в их случае синтаксис выглядит как-то так:
Так-же можно получить конкретный элемент:
Функции тоже могут возвращать кортежи, но выглядит это немного странно (по причине обратной совместимости):
Однако по мнению Go Core Team это не настолько нужно, чтобы внедрять принципиально новый тип в язык. Поэтому сам proposal это даже не предложение, а скорее заметка о том, какое исследование они провели внутри Google и какие выводы сделали. Выводы кстати простые: делать они эту фичу не будут.
На мой взгляд, здесь они правы, так как для полноценного внедрения кортежей нужно было бы решать вопрос с возвратом функций без этих ужасных двойных скобок. Да и анонимные структуры решают 80% описанных проблем. Однако само исследование породило интересные выводы о том как можно улучшить язык не внедряя новые типы. Об этом мы поговорим в следующий раз.
P.S. И да я очень надеюсь вывести количество заметок хотя-бы до трех в месяц 😆️️️️️️
Я наконец оправился после конференции, а ребята из Go Core Team ненадолго вернулись к обсуждениям после ноябрьских праздников в США, перед тем как снова уйдут уже на рождественский отдых.
Итак, на повестке дня у нас новый тип - кортеж. Вообще кортежи много где встречаются - от sql до python. Идея проста: нужно хранить несколько значений друг с другом в одной конструкции и иметь доступ к ним по индексу. Условно говоря это такой массив фиксированной длины, у которого элементы могут быть разного типа.
И тут появляется традиционный вопрос - а зачем? Их много раз предлагали, но каждый раз упирались в вопрос "А чем мало простых структур?". И ведь правда, обычно структур должно хватать за глаза, а там где очень хочется можно притянуть множественный возврат из функции (тоже, кстати, своего рода кортеж). Но сила кортежей не в инновациях, а в облегчении каждодневной разработки. А именно в этих двух вещах:
• Для кортежа не нужно создавать отдельный тип (но можно). Ближайший аналог это анонимная структура, только в случае кортежа не нужно указывать имена полей.
• Для распаковки и упаковки кортежей в несколько переменных в язык добавляются специальные конструкции.
Посмотря на количество предложений, ребята наконец назрели и решили провести эксперимент по итогу которого сделали свое предложение: в их случае синтаксис выглядит как-то так:
val := (1, "foo", false)
x, y, z := val...
fn(val...) // вызываем функцию в которую распаковываем кортеж
func fn(int, string, bool) { ... }
Так-же можно получить конкретный элемент:
val := (1, "foo", false)
x := val.0 // получаем первый элемент
Функции тоже могут возвращать кортежи, но выглядит это немного странно (по причине обратной совместимости):
func f() ((int, int)) { // обратите внимание на двойные скобки
Однако по мнению Go Core Team это не настолько нужно, чтобы внедрять принципиально новый тип в язык. Поэтому сам proposal это даже не предложение, а скорее заметка о том, какое исследование они провели внутри Google и какие выводы сделали. Выводы кстати простые: делать они эту фичу не будут.
На мой взгляд, здесь они правы, так как для полноценного внедрения кортежей нужно было бы решать вопрос с возвратом функций без этих ужасных двойных скобок. Да и анонимные структуры решают 80% описанных проблем. Однако само исследование породило интересные выводы о том как можно улучшить язык не внедряя новые типы. Об этом мы поговорим в следующий раз.
P.S. И да я очень надеюсь вывести количество заметок хотя-бы до трех в месяц 😆️️️️️️
GitHub
proposal: Tuple Types for Go · Issue #64457 · golang/go
NOTE: This is a write-up of an internally worked out idea for tuple types, inspired by some of the tuple proposals listed below. The primary reason for this write-up is simply to document this work...
👍20👎1
На Хеллоуин не успели, но лучше поздно, чем никогда: https://go.dev/blog/deadcode
go.dev
Finding unreachable functions with deadcode - The Go Programming Language
deadcode is a new command to help identify functions that cannot be called.
👍12👎1