Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

You've said it would be obviously wrong "even in a language with garbage collector, such as JavaScript." But, obviously, most modern GC can handle cyclic references just fine.


But even languages with Tricolour Mark&Sweep GC, which handles cyclic references just fine, it's still possible to make memory leak via a dangling reference to a node in a complex cross-linked graph, because language and GC allows that.

Rust by default forbids cyclic references, by forcing to use trees, which completely avoids the problem.


You can leak memory in any complex project, even if you only use safe Rust.

Linux kernel uses doubly linked lists, Redis uses doubly linked lists, V8 JS engine uses doubly linked lists. Have their authors chosen something obviously wrong?


Rust uses double linked lists, they are not harder to implement in Rust than in any other language. Moreover, built-in borrow checker will help to implement them properly, without memory leaks or use-after-free. What is your point?


My point is that it's not obviously wrong to create cyclic references.


OK, it's was obviously wrong to create cyclic references few years ago.


But doubly linked lists use cyclic references…


Double linked lists use double links.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: