-
Notifications
You must be signed in to change notification settings - Fork 543
Add the diagrams from my rustconf talk #1419
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
It'd be a pain to re-draw the diagrams, but you can do mermaid diagrams in mdbook. I don't know if that'd help make it so they can build on each other though. |
I was able to adapt the diagram in mermaid, but I can't figure out how to get right angles and/or the nightly compiler and nightly std being at the same vertical position. graph TD
betac("beta compiler (1.63)") -->|A| std("nightly std (1.64)");
betac -->|B| nightlyc{"nightly compiler<br>(1.64)"}
std -->|"B (using 1.64)"| nightlyc
nightlyc -->|C| std
nightlyc -->|D| nightlyc2{"nightly compiler<br>(1.64)"}
std -->|"D (using 1.64)"| nightlyc2
|
I meant "building" to mean "the thing doing the building" - I agree "building with" is more clear, happy to change it. |
One other thing I noticed is that "nightly compiler" has two separate nodes for each stage, but "nightly std" only has one. Shouldn't std be two as well? |
I like it! It took me a bit to realize that the A, B, C on the arrows indicates the order though. My main suggestion is that IMO it's confusing that the two standard libraries have the same node. It looks like there is a cyclic dependency when there isn't. Also you split up the two nightly compilers into two nodes, so for consistency IMO you should do the same with the standard libraries. That will also make the diagram more symmetric. |
Here's the same diagram with two std nodes: graph TD
betac("beta compiler (1.63)") -->|A| std1("nightly std (1.64)");
betac -->|B| nightlyc{"nightly compiler<br>(1.64)"}
std1 -->|"B (using 1.64)"| nightlyc
nightlyc -->|C| std2("nightly std (1.64)")
nightlyc -->|D| nightlyc2{"nightly compiler<br>(1.64)"}
std2 -->|"D (using 1.64)"| nightlyc2
|
Here's another option I made that I think is a bit clearer (though please let me know): graph TD
s0c["stage0 compiler (1.63)"] -->|A| s0l("stage0 std (1.64)");
s0c & s0l --- stepb[ ]:::empty
stepb -->|B| s1c["stage1 compiler (1.64)"]
s1c -->|C| s1l("stage1 std (1.64)")
s1c & s1l --- stepd[ ]:::empty
stepd -->|D| s2c["stage2 compiler (1.64)"]
classDef empty width:0px,height:0px;
|
Yes, that is the structure I was looking for. :) Not sure which of the two is better. The remaining question is the labels... what you label "stage1 compiler" is the same as what bootstrap calls "stage 0 compiler artifacts", I think. So it might be worth having that as a separate node? graph TD
s0c["stage0 compiler (1.63)"] -->|A| s0l("stage0 std (1.64)");
s0c & s0l --- stepb[ ]:::empty
stepb -->|B| s0ca["stage0 compiler artifacts (1.64)"]
s0ca -->|copy| s1c["stage1 compiler (1.64)"]
s1c -->|C| s1l("stage1 std (1.64)")
s1c & s1l --- stepd[ ]:::empty
stepd -->|D| s1ca["stage1 compiler artifacts (1.64)"]
s1ca -->|copy| s2c["stage2 compiler"]
classDef empty width:0px,height:0px;
|
Ok, I've opened a PR! |
https://docs.google.com/presentation/d/1GnKlK98APzZ0Fw1BOqbroPQyvIio5Tm7SP7P0B8x3Cc/edit#slide=id.gf49216051b_0_96 (and the following 7 slides)
the sequence of slides, i.e. being shown multiple different diagrams in order, seemed to be particularly helpful - maybe we can find some way to do that with mdbook?
The text was updated successfully, but these errors were encountered: