Skip to content

Add Windows release options for JIT builds #241

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

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

brandtbucher
Copy link
Member

I'm not sure how to test this, or even if this is the right approach, so I'd appreciate @zooba's eyes on this. Hopefully I'm on the right track, though.

I went ahead and "future-proofed" this by adding additional options for enabling the JIT by default (not desired until 3.15 at the earliest), and also building it on free-threaded builds (not possible until 3.15 at the earliest). These options can be dropped though, if they add too much noise.

@brandtbucher brandtbucher requested a review from zooba May 2, 2025 21:08
Comment on lines 58 to 63
${{ if ne(parameters.DoJIT, 'true') }}:
ExtraOptions: ''
${{ elseif ne(parameters.DoJITEnabled, 'true') }}:
ExtraOptions: '--experimental-jit-off'
${{ else }}:
ExtraOptions: '--experimental-jit'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't love the repetition of this. Two options you can try:

  • add an "ExtraBuildOptions" parameter to this template and put it unconditionally in all of these, then have the condition in azure-pipelines to choose which of these to pass.
  • add a variables block to each job in this file with an ExtraOptions2, and update the build steps file to use both

Possibly some combination of the two approaches is best. The main thing I want to optimise for is only seeing the two options (i.e. '--experimental-jit') once (each), since they're global across the whole matrix.

Comment on lines 52 to 63
- name: DoJIT
displayName: "Build the JIT compiler (3.14 and later)"
type: boolean
default: false
- name: DoJITEnabled
displayName: "Enable the JIT compiler by default (not used yet)"
type: boolean
default: false
- name: DoJITFreethreaded
displayName: "Build the JIT compiler for free-threaded builds (not used yet)"
type: boolean
default: false
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In terms of ordering, use descending version numbers, and put the future proofing ones right at the end. Having the version numbers in there is very important or we'll definitely get the releases wrong :)

If it makes more sense, you can make a drop down with type: string and values: like the signing certificates above. Trick here is that you can't select "none" unless it's actually in the list, and you'll need eq() checks (unless you can figure out a way to use the option directly and have better display text, which may be possible, but I don't know how).

@brandtbucher brandtbucher requested a review from zooba May 2, 2025 22:08
@brandtbucher
Copy link
Member Author

Thanks for the suggestions, it's quite a bit cleaner now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants