Skip to content

[Target] Keep all implied features in canonical representation - #9253

Open
alexreinking wants to merge 2 commits into
alexreinking/target-tablesfrom
alexreinking/algebraic-targets
Open

[Target] Keep all implied features in canonical representation#9253
alexreinking wants to merge 2 commits into
alexreinking/target-tablesfrom
alexreinking/algebraic-targets

Conversation

@alexreinking

@alexreinking alexreinking commented Jul 28, 2026

Copy link
Copy Markdown
Member

Following up on my comment in #9241.

This adjusts Target to always have a single, stable, representation by filling in implied target features.

This leans into the mathematical lattice structure targets have.

Breaking changes

The target.to_string() function now shows a minimal target; clients wanting to see everything should use .to_complete_target().

Checklist

  • Tests added or updated (not required for docs, CI config, or typo fixes)
  • Documentation updated (if public API changed)
  • Python bindings updated (if public API changed)
  • Benchmarks are included here if the change is intended to affect performance.
  • Commits include AI attribution where applicable (see Code of Conduct)

Stack created with GitHub Stacks CLIGive Feedback 💬

@alexreinking
alexreinking force-pushed the alexreinking/algebraic-targets branch from b3a83a9 to f77cff8 Compare July 28, 2026 21:10
@alexreinking
alexreinking force-pushed the alexreinking/algebraic-targets branch 2 times, most recently from 4f95024 to ff18cb1 Compare July 28, 2026 23:26
@codecov

codecov Bot commented Jul 29, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 65.31792% with 60 lines in your changes missing coverage. Please review.
✅ Project coverage is 70.29%. Comparing base (efa1918) to head (d2d71c7).

Files with missing lines Patch % Lines
src/Target.cpp 65.24% 39 Missing and 18 partials ⚠️
src/CodeGen_X86.cpp 0.00% 1 Missing and 1 partial ⚠️
src/StmtToHTML.cpp 50.00% 1 Missing ⚠️
Additional details and impacted files
@@                      Coverage Diff                       @@
##           alexreinking/target-tables    #9253      +/-   ##
==============================================================
- Coverage                       70.30%   70.29%   -0.01%     
==============================================================
  Files                             255      255              
  Lines                           78819    78757      -62     
  Branches                        18879    18843      -36     
==============================================================
- Hits                            55412    55366      -46     
- Misses                          17809    17849      +40     
+ Partials                         5598     5542      -56     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

alexreinking added a commit to halide/build_bot that referenced this pull request Jul 29, 2026
…open PRs (#361)

Previously the scheduler only built PRs whose base branch was literally
"main", so a PR whose base is another PR's branch (a stacked PR, e.g.
halide/Halide#9253 based on #9251) was silently never scheduled.

Move the gating into SafeGitHubEventHandler.handle_pull_request, where the
full PR payload is available:
- base == "main": build, as before.
- base is a release/N.x branch: skip, as before.
- PR is part of a recognized GitHub Stack (the `stack` payload field): build.
  refs/pull/<N>/merge for a stacked PR is chained through every lower PR's
  own merge ref, so building it already transitively tests against
  stack.base.ref (main) -- confirmed by inspecting the actual merge commit
  parents on halide/Halide#9249-#9253.
- base is otherwise the head of another open PR in the same repo (an
  informal/pre-Stacks-feature chain): build.
- anything else (an untracked, possibly short-lived branch): skip, to avoid
  wasting CI on builds that can be invalidated without warning.

Fixes #148

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
@alexreinking
alexreinking marked this pull request as ready for review July 29, 2026 13:58
@alexreinking
alexreinking requested review from halidebuildbots and removed request for halidebuildbots July 29, 2026 15:22
@alexreinking
alexreinking force-pushed the alexreinking/algebraic-targets branch 2 times, most recently from 6f40c62 to d2d71c7 Compare July 31, 2026 00:45
- de-duplicated orphaned features handling
- fixed a bug with trace-feature simplification
- added enum-ends to os/processor
@alexreinking
alexreinking force-pushed the alexreinking/algebraic-targets branch from d2d71c7 to 14827cd Compare August 4, 2026 03:01
@alexreinking alexreinking added the release_notes For changes that may warrant a note in README for official releases. label Aug 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release_notes For changes that may warrant a note in README for official releases.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant