Size: a a a

2020 July 22

M(

MIT/Yardanico (alt) in ru.nim.talks
для простых циклов компилятор это уже делает
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
для сложных это в принципе невозможно
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
в случаях типа
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
type
 Node = ref object
   b: Node

let a = Node()
a.b = a
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
если компилявишь с arc, компилятор тебе скажет
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
/home/dian/Stuff/arctest/a.nim(6, 5) Warning: 'a.b = a' creates an uncollectable ref cycle; annotate 'b' with .cursor [CycleCreated]
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
про cursor правда надо убрать
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
это немного небезопасная прагма, если ты хочешь что-то типа "слабой ссылки" сделать
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
но она небезопасна, с ней можно и краши получить если неправильно юзать
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
Андреас опять же об этом в своём выступлении на nimconf 2020 говорил
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
но короче для простых циклов компилятор может понять, что они есть
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
ну и ещё про ARC - опять же удобная штука - можно всякие valgrind юзать
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
с -d:useMalloc
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
т.к. всё детерминированно, то можно всякими memory sanitizer и т.д проверять прогу
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
и всё-таки ух как меня раздражает видеть issue без лейблов
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
всё-таки надо у андреаса попросить коллаборатора чтобы всё это проставлять
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
а то потом найти их невозможно
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
вот вам багфиксы
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
источник