Skip to content
Snippets Groups Projects
  • Raphaël Gomès's avatar
    2cc5de26
    rust-hg-core: move from `ouroboros` to `self_cell` · 2cc5de26
    Raphaël Gomès authored
    `ouroboros` has a fundamental soundness problem that, while not applicable
    today, could become applicable given new compiler optimizations.¹
    
    `self_cell` is a crate that accomplishes a lot of the same things that
    `ouroboros` did while remaining sound (that is, unless a new soundness issue
    is discovered) by not assuming as much about the memory layout of the program.
    `self_cell` has been scrutinized heavily in the past few months by very
    competent people, some from the compiler team and has shown no weaknesses
    for a while, with a 1.0 stable release coming out a couple months ago.
    
    Our internal API is exactly the same, this is just an implementation detail.
    To reiterate, no actual soundness issue was found with our use of `ouroboros`,
    but there might be evolutions of `rustc` (or even a future separate compiler)
    that could generate unsound code.
    
    [1] https://github.com/joshua-maros/ouroboros/issues/88
    2cc5de26
    History
    rust-hg-core: move from `ouroboros` to `self_cell`
    Raphaël Gomès authored
    `ouroboros` has a fundamental soundness problem that, while not applicable
    today, could become applicable given new compiler optimizations.¹
    
    `self_cell` is a crate that accomplishes a lot of the same things that
    `ouroboros` did while remaining sound (that is, unless a new soundness issue
    is discovered) by not assuming as much about the memory layout of the program.
    `self_cell` has been scrutinized heavily in the past few months by very
    competent people, some from the compiler team and has shown no weaknesses
    for a while, with a 1.0 stable release coming out a couple months ago.
    
    Our internal API is exactly the same, this is just an implementation detail.
    To reiterate, no actual soundness issue was found with our use of `ouroboros`,
    but there might be evolutions of `rustc` (or even a future separate compiler)
    that could generate unsound code.
    
    [1] https://github.com/joshua-maros/ouroboros/issues/88
This project manages its dependencies using Cargo. Learn more