Skip to content

Comments

[red-knot] set a size limit on unions of literals#17419

Merged
carljm merged 2 commits intomainfrom
cjm/unionlimit2
Apr 16, 2025
Merged

[red-knot] set a size limit on unions of literals#17419
carljm merged 2 commits intomainfrom
cjm/unionlimit2

Conversation

@carljm
Copy link
Contributor

@carljm carljm commented Apr 16, 2025

Summary

Until we optimize our full union/intersection representation to efficiently handle large numbers of same-kind literal types "as a block", set a fairly low limit on the size of unions of literals.

We will want to increase this limit once we've made the broader efficiency improvement (tracked in astral-sh/ty#124).

Test Plan

cargo bench --bench red_knot

@carljm carljm added the ty Multi-file analysis & type inference label Apr 16, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Apr 16, 2025

mypy_primer results

No ecosystem changes detected ✅

@codspeed-hq
Copy link

codspeed-hq bot commented Apr 16, 2025

CodSpeed Performance Report

Merging #17419 will improve performances by ×110

Comparing cjm/unionlimit2 (ac691ca) with main (5a115e7)

Summary

⚡ 1 improvements
✅ 32 untouched benchmarks

Benchmarks breakdown

Benchmark BASE HEAD Change
red_knot_micro[many_string_assignments] 5,816.3 ms 51.9 ms ×110

@AlexWaygood AlexWaygood added the performance Potential performance improvement label Apr 16, 2025
Base automatically changed from cjm/unionlimit to main April 16, 2025 14:05
@carljm carljm enabled auto-merge (squash) April 16, 2025 14:21
@carljm carljm merged commit c7b5067 into main Apr 16, 2025
20 checks passed
@carljm carljm deleted the cjm/unionlimit2 branch April 16, 2025 14:23
dcreager added a commit that referenced this pull request Apr 16, 2025
* main: (44 commits)
  [`airflow`] Extend `AIR311` rules (#17422)
  [red-knot] simplify union size limit handling (#17429)
  [`airflow`] Extract `AIR311` from `AIR301` rules (`AIR301`, `AIR311`) (#17310)
  [red-knot] set a size limit on unions of literals (#17419)
  [red-knot] make large-union benchmark slow again (#17418)
  [red-knot] optimize building large unions of literals (#17403)
  [red-knot] Fix comments in type_api.md (#17425)
  [red-knot] Do not assume that `x != 0` if `x` inhabits `~Literal[0]` (#17370)
  [red-knot] make large-union benchmark more challenging (#17416)
  [red-knot] Acknowledge that `T & anything` is assignable to `T` (#17413)
  Update Rust crate clap to v4.5.36 (#17381)
  Raise syntax error when `\` is at end of file (#17409)
  [red-knot] Add regression tests for narrowing constraints cycles (#17408)
  [red-knot] Add some knowledge of `__all__` to `*`-import machinery (#17373)
  Update taiki-e/install-action digest to be7c31b (#17379)
  Update Rust crate mimalloc to v0.1.46 (#17382)
  Update PyO3/maturin-action action to v1.49.1 (#17384)
  Update Rust crate anyhow to v1.0.98 (#17380)
  dependencies: switch from `chrono` to `jiff`
  Update Rust crate bstr to v1.12.0 (#17385)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

performance Potential performance improvement ty Multi-file analysis & type inference

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants