Skip to content
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

Prevent extensions from blocking parallel pre-compilation #55910

Merged
merged 3 commits into from
Nov 21, 2024

Commits on Nov 20, 2024

  1. Configuration menu
    Copy the full SHA
    3a71d08 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    8a2abe1 View commit details
    Browse the repository at this point in the history
  3. Prevent extensions from blocking parallel pre-compilation

    Previously our precompilation code was causing any dependencies of a
    package A to wait on all of A's weakdeps to finish pre-compiling,
    even if it can't actually load those weakdeps (or the extension itself)
    
    This would lead to a pre-compile ordering like:
    ```
    A        B
     \      / \
      Ext AB   \
         |     /
         C    /
          \  /
           D
    ```
    
    Here, extension `C` cannot pre-compile in parallel with `Ext {A,B}` and
    `B`, because it has to wait for `Ext {A,B}` to finish pre-compiling.
    That happens even though `C` has no way to load either of these.
    
    This change updates the pre-compile ordering to be more parallel,
    reflecting the true place where `Ext {A,B}` can be loaded:
    ```
      A       B
     / \     / \
    C   Ext AB  |
     \    |    /
      \-- D --/
    ```
    
    which allows `C` to compile in parallel with `B` and `Ext{A,B}`
    topolarity committed Nov 20, 2024
    Configuration menu
    Copy the full SHA
    ccd969b View commit details
    Browse the repository at this point in the history