Size: a a a

2020 February 14

PK

Phil Kulin in Go-go!
Daniel Podolsky
@schors , а у тебя в докладе было про это?
Нет. Я даже не понимаю о чем речь. Пойду взгляну. Ноги тоже могут быть оттуда
источник

PK

Phil Kulin in Go-go!
А я понял. Не, не в курсе. Можно покопать. Небось какое-нибудь извращение Томпсона. Он там спец по шаблончикам же
источник

p

pragus in Go-go!
Gleb Selyukov
func BytesToString(b []byte) string {
return *(*string)(unsafe.Pointer(&b))
}

func StringToBytes(s string) []byte {
sh := (*reflect.StringHeader)(unsafe.Pointer(&s))
bh := reflect.SliceHeader{
 Data: sh.Data,
 Len:  sh.Len,
 Cap:  sh.Len,
}
return *(*[]byte)(unsafe.Pointer(&bh))
}
люблю такое)
источник

GS

Gleb Selyukov in Go-go!
pragus
люблю такое)
Вряд ли большинство одобряет черную магию))
источник

p

pragus in Go-go!
Gleb Selyukov
Вряд ли большинство одобряет черную магию))
тут нет магии ) я бы хотел больше интерфейсов к рантайму.
источник

DP

Daniel Podolsky in Go-go!
pragus
тут нет магии ) я бы хотел больше интерфейсов к рантайму.
есть, потому что ты полез в потроха. если что-нибудь в них изменится - ты можешь получить проблемы на ровном месте
источник

S

Sergey in Go-go!
только unsafe, который как известно гарантирует ни-че-го
источник

AY

Alex Yu in Go-go!
Anton Kramarev
Интересно, я просто ненастоящий программист. Знаю что в python, js, go, java стринги точно иммутабельны. А с другими языками как-то не сталкивался пока
"Все не так однозначно.жпг"

Скажем, берешь python и PyQT
QT - оперирует QString-ами
которые мутабельны

Но вообще это типичнее для С/C++, в который нет встроенного строкового типа
источник

DM

Dmitry M in Go-go!
Alex Yu
"Все не так однозначно.жпг"

Скажем, берешь python и PyQT
QT - оперирует QString-ами
которые мутабельны

Но вообще это типичнее для С/C++, в который нет встроенного строкового типа
std::string, std::wstring сколько ещё нужно строковых типов?
источник

p

pragus in Go-go!
Daniel Podolsky
есть, потому что ты полез в потроха. если что-нибудь в них изменится - ты можешь получить проблемы на ровном месте
для этого надо будет сломать slice header
источник

p

pragus in Go-go!
Sergey
только unsafe, который как известно гарантирует ни-че-го
стрелять по ногам можно и без unsafe
источник

DM

Dmitry M in Go-go!
В строках slice header может сломаться, если соберутся сделать какой нибудь small string optimization
источник

AY

Alex Yu in Go-go!
Dmitry M
std::string, std::wstring сколько ещё нужно строковых типов?
Ууу!
Я давно не сишник, но ... короче каждый си-программер создает свой строковой тип в тот или иной период своей жизни
источник

S

Sergey in Go-go!
pragus
стрелять по ногам можно и без unsafe
С ансайфом тебе в ноги могут выстрелить из базуки разрабы, сменив в go1.1x внутреннее предоставление. И будут в своём праве
источник

A

Alexander in Go-go!
Нужно просто на это тесты писать.
источник

DP

Daniel Podolsky in Go-go!
для начала - бенчи, чтобы понять, так ли оно надо
источник

DP

Daniel Podolsky in Go-go!
(иногда - прям очень надо)
источник

A

Alexander in Go-go!
Согласен

+не весь unsafe одинаково unsafe
источник

DM

Dmitry M in Go-go!
Alexander
Нужно просто на это тесты писать.
Как бы в компиляторах тоже бывают баги, поэтому имеет смысл перед обновлением версии компилятора прогнать все тесты, особенно нагрузочные.
источник

A

Alexander in Go-go!
Dmitry M
Как бы в компиляторах тоже бывают баги, поэтому имеет смысл перед обновлением версии компилятора прогнать все тесты, особенно нагрузочные.
Конечно, в идеале вообще на canary начинать тестить ещё с релиз-кандидата, а может и раньше, потому что будет возможность зарепортить баги
источник