Size: a a a

2021 June 03

AK

Andrey Kartashov in Go-go!
но предыдущее поведение это не сломает, потому что в предыдущем поведении дополнительный аргумент перед слайсом передать нельзя было
источник

AK

Andrey Kartashov in Go-go!
нечего ломать
источник

AK

Andrey Kartashov in Go-go!
раньше (ну то есть сейчас) такой код не компилировался
источник

AB

Andrey Burov in Go-go!
точно!
источник

AB

Andrey Burov in Go-go!
а если реализовать, то Foo(X, s...)  должен ли меняться X?
источник

AK

Andrey Kartashov in Go-go!
нет
источник

AK

Andrey Kartashov in Go-go!
потому что X может (и скорее всего будет) по значению передаваться
источник

AB

Andrey Burov in Go-go!
а если менять args[1], то будет ли меняться slice s?
источник

AK

Andrey Kartashov in Go-go!
в особых случая, это может поломать ожидание вызываемой функции, но только если её начнут по новому вызывать
источник

AK

Andrey Kartashov in Go-go!
это UB
источник

AB

Andrey Burov in Go-go!
вообще редкий кейс, можно и так жить
источник

p

pragus in Go-go!
А где-то описаны вот эти все go:linkname и go:nosplit ?
источник

AB

Andrey Burov in Go-go!
источник

p

pragus in Go-go!
Это да. Но есть ещё толпа директив вроде go:nowritebarrierrec
источник

AB

Andrey Burov in Go-go!
источник

AK

Andrey Kartashov in Go-go!
на самом деле нет, но всё равно. Люди, которые отдают в variadic функцию с таким трудом накопленные слайсы, заслуживают чтобы их слайсы остались нетронутыми
источник

p

pragus in Go-go!
Спасибо
источник

AB

Andrey Burov in Go-go!
что такое UB?
источник

AK

Andrey Kartashov in Go-go!
великий и ужасный undefined behaviour
источник

AB

Andrey Burov in Go-go!
ты это всяким сортировкам скажи ;)
источник