6 ms·
> Rust is implemented in Rust, which means that to build a copy of Rust, you need a copy of Rust. This is commonly referred to as ‘bootstrapping’. Historically,
by outworlder 10y ago
> Rust is implemented in Rust, which means that to build a copy of Rust, you need a copy of Rust. This is commonly referred to as ‘bootstrapping’. Historically, we would do this by “snapshotting” a specific version of the compiler, and always bootstrapping from that
So, does that mean that Rust (has/will have) issues regarding binary blobs in pure free software Linux distributions?
- steveklabnik 10y agoIn a certain sense, yes. But in reality, no. There's both rustc and cargo packages in Debian unstable, for example. In my understanding, distros are willing to accept a single initial blob. They use that to build the initial package, and then build their own packages from that forever after.
- cyphar 10y agoDebian isn't a pure free software distribution (they have non-free repos run by the project). Does Trisquel or gNewSense have rustc or cargo packages?
- steveklabnik 10y agoAh, sorry, I always forget about that. I haven't heard of any. But we are purely free software, so...
- cyphar 10y agoI know, I was just saying. By the same token, Go has the same problem (you need to use an old version of the compiler to build the current version). Though, I kinda wish that the problem was solved the same way that GCC solves it (you write a simple compiler in Assembly and then use it to bootstrap the full GCC toolchain which you then use to compile an optimised version of the GCC toolchain). Requiring an older binary of the compiler is an annoyance (and AFAICS would make porting harder).
- Narishma 10y agoWhy would it? This is the same situation as a C compiler requiring another C compiler to build it.
- ben0x539 10y agoObviously C compilers should be written in Javascript, since everybody already has a Javascript engine installed.
- outworlder 10y agoTake a look at this discussion thread: https://news.ycombinator.com/item?id=10896389 https://news.ycombinator.com/item?id=10896389
- pcwalton 10y agohttps://en.wikipedia.org/wiki/Binary_blob https://en.wikipedia.org/wiki/Binary_blob: "In the context of free and open-source software, a binary blob is a closed-source binary-only piece of software without publicly available source code." All versions of the Rust compiler are open-source and have publicly-available source code, so they aren't binary blobs.
- Manishearth 10y agogcc does the exact same thing and is packaged in most distros, so no. "Binary blob" in the context of free software is generally a blob which does not have open code behind it. This is not the case with Rust or GCC, the bootstrapping binary can be obtained -- in theory from a long chain of sources, in practice by compiling the source from a previous bootstrapping binary. There is a trusting trust issue here, of course.
- coldpie 10y ago> There is a trusting trust issue here, of course. In case anyone doesn't know, this is referencing a famous paper: https://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf https://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thomp... Some further discussion: https://www.schneier.com/blog/archives/2006/01/countering_trus.html https://www.schneier.com/blog/archives/2006/01/countering_tr...