Add Rust 1.86.0 DragonFly bootstrap - #3
Conversation
Use the 1.85.1 bootstrap toolchain to build Rust 1.86.0 for x86_64-unknown-dragonfly. Add the 1.86.0 build script, DragonFly patches, vendor checksum fixups, and source tarball checksum. Verified with build-local.sh through xbuild, xtest, xdist, and install.
|
Can you update the checksum? So that it matches what we have in leaf (I built and uploaded 1.85.1 already) |
|
Updated, thanks. I checked all three 1.85.1 bootstrap components currently on leaf and refreshed the cargo, rustc, and rust-std checksums. |
|
Hi @tuxillo, A related workflow question: I’m planning to continue this work up to Rust 1.96, and after that keep DragonFly updated alongside each upstream Rust stable release. I understand that the bootstrap chain still needs to be reproducible version by version, so I’m not proposing to skip intermediate bootstraps. Would it help reduce your maintenance work if I prepare the patches for several upcoming Rust versions in order, and you build/upload them in one batch on leaf? For example, once 1.86 is settled, I can prepare 1.87, 1.88, ... as separate ordered branches/patchsets, each built and fully tested locally from the previous bootstrap. Then you could reproduce them sequentially and upload the resulting tarballs in one maintenance session. I’m happy to keep submitting one PR per version if that is easier for review, or arrange the patchsets in whatever format is most convenient for you. |
|
Yes, whatever you think it is easier for you. This repo is the initial bootstrap we had for Rust (created by @mneumann) but FreeBSD already has bootstrap ports and I think we should follow those. The problem is that we are really behind Ports so this repo will always make sense. |
|
On Tue, Jun 23, 2026 at 01:34:58PM -0700, Antonio Huete Jimenez wrote:
tuxillo left a comment (DragonFlyBSD/rust-bootstrap-dragonfly#3)
Yes, whatever you think it is easier for you. This repo is the initial bootstrap we had for Rust (created by @mneumann) but FreeBSD already has bootstrap ports and I think we should follow those. The problem is that we are really behind Ports so this repo will always make sense.
Recently, I tried compiling mrustc, a Rust compiler written in C++:
https://github.com/thepowersgang/mrustc.git
Its purpose is to serve as bootstrap compiler for rustc and builds out of the
box on DragonFly (in 5 minutes on my old laptop). I think, it's time to use it
instead of depending on the binary bootstrap.
…
--
Reply to this email directly or view it on GitHub:
#3 (comment)
You are receiving this because you were mentioned.
Message ID: ***@***.***>
|
mrustc is definitely interesting as a seed/recovery bootstrap path. However, I do not think it can replace the normal release-to-release Rust bootstrap chain. rustc keeps using new Rust language and library features, so in practice the compiler guaranteed to build release N+1 is release N. If a fixed older bootstrap compiler were enough, Rust could probably use a Go-style bootstrap model already. So I think mrustc is worth testing separately to create an initial DragonFly Rust toolchain, but the regular path should still be Rust N building Rust N+1, with tests at each step. |
|
On Thu, Jun 25, 2026 at 07:13:50AM -0700, Leding Li wrote:
lileding left a comment (DragonFlyBSD/rust-bootstrap-dragonfly#3)
> On Tue, Jun 23, 2026 at 01:34:58PM -0700, Antonio Huete Jimenez wrote: tuxillo left a comment ([DragonFlyBSD/rust-bootstrap-dragonfly#3](#3)) Yes, whatever you think it is easier for you. This repo is the initial bootstrap we had for Rust (created by @mneumann) but FreeBSD already has bootstrap ports and I think we should follow those. The problem is that we are really behind Ports so this repo will always make sense.
> Recently, I tried compiling mrustc, a Rust compiler written in C++: https://github.com/thepowersgang/mrustc.git Its purpose is to serve as bootstrap compiler for rustc and builds out of the box on DragonFly (in 5 minutes on my old laptop). I think, it's time to use it instead of depending on the binary bootstrap.
> […](#)
> -- Reply to this email directly or view it on GitHub: [#3 (comment)](#3 (comment)) You are receiving this because you were mentioned. Message ID: ***@***.***>
mrustc is definitely interesting as a seed/recovery bootstrap path.
However, I do not think it can replace the normal release-to-release Rust bootstrap chain. rustc keeps using new Rust language and library features, so in practice the compiler guaranteed to build release N+1 is release N. If a fixed older bootstrap compiler were enough, Rust could probably use a Go-style bootstrap model already.
I thought the Rust bootstrap process is as follows:
stage0 is the binary bootstrap Rust compiler of version N.
stage1 is Rust N+1 built by the binary bootstrap.
stage2 is Rust N+1 built by the stage1 compiler (N+1).
With mrustc this would become:
stage0 is the mrustc compiler of Rust version N compiled using C++.
stage1 is Rust N+1 built by the mrustc stage0
stage2 is Rust N+1 built by stage1 (N+1).
Please correct me if I am wrong.
So I think mrustc is worth testing separately to create an initial DragonFly Rust toolchain, but the regular path should still be Rust N building Rust N+1, with tests at each step.
Isn't Gentoo using mrustc for "from source" bootstrapping?
… --
Reply to this email directly or view it on GitHub:
#3 (comment)
You are receiving this because you were mentioned.
Message ID: ***@***.***>
|
Your stage model is basically correct, with one important detail: with mrustc, The hard part is that rustc source keeps using new Rust language/library I rechecked Gentoo as well. The current regular Gentoo path is not mrustc: |
|
Hi @tuxillo, just checking whether there is anything I should change on my side for this PR. No rush at all. I have also finished 1.96.0 locally, so this can wait until after Spain beats Portugal. |
Summary:
Verification: