-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
Draft: Environment.file_to_rebuild: pickle to sorted list
instead of set
#12870
Draft: Environment.file_to_rebuild: pickle to sorted list
instead of set
#12870
Conversation
I tried this patch on top of 8.0.2 and still got similar diffs: when comparing builds on 1-core-VM and 4-core-VM: https://rb.zq1.de/other/kernel-docs/kernel-source-compare.out |
also note, that in the diff, not just the order changes, but whole blocks go missing. |
Ok, thank you. I'd suggest we focus on one of the ToC entries that is entirely absent during one of the builds, and try to determine where that inclusion/exclusion originates. One opportunity for that is the |
My working theory in this branch was that the
|
The findings at #6714 (comment) uncover more about what was happening there: basically, some elements in the HTML navigational menu are included/omitted based on build-time non-determinism. On further inspection I note that |
Nope; seems more likely to be |
Closing; this changeset doesn't resolve the linked issue as-is, and I'm not currently aware of a pressing need to make the (intermediate output) |
Feature or Bugfix
Purpose
toctree
rendering, by removing randomisable runtimeset
content ordering (that may be pickled to.doctree
files).Detail
Environment.files_to_rebuild
-- a cached/pickled doctree attribute that is used as an ordered iterator by some of the table-of-contents generation code -- using Python's built-inset
datatype, use the built-inlist
type instead.list
value is stored in sorted order.SortedList
instances after deserialization of pickled.doctree
contents, and then subsequently re-casting tolist
before pickling could improve this.env
pickle version number (63 to 64).Relates
cc @bmwiedemann