Skip to content

Prepare for 1.6.0 release - #200

Merged
vlad-perevezentsev merged 3 commits into
masterfrom
prepare-for-1.6.0-release
Oct 20, 2026
Merged

vlad-perevezentsev merged 3 commits into
masterfrom
prepare-for-1.6.0-release

Conversation

@vlad-perevezentsev

Copy link
Copy Markdown
Collaborator

The PR updates __version__, docs/source/conf.py and CHANGELOG.md to publish the new 1.6.0 release

@antonwolfy antonwolfy left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The version bumps look good. My comments are on the release notes. The three below are inaccuracies worth fixing before the release; they're about lines outside the diff, so I couldn't leave them inline. The inline comments are suggestions.

1. CHANGELOG.md line 24

This entry and the geometric one (line 34) both end with "All other streams are unaffected", but the same release also changes the array-parameter streams (gh-171, line 19), the power-of-two randint streams (gh-172) and geometric (gh-196). Each sentence was true in its own PR, but together in the 1.6.0 notes they contradict each other.

Could we drop "All other streams are unaffected" from both entries, or replace it with one line listing every seeded stream that changes in 1.6.0?

2. CHANGELOG.md line 34

"One larger for every p" isn't quite right: irk_geometric_vec only adds 1 when 0 <= out[i] < INT_MAX (mkl_distributions.cpp). Values that overflow int, which MKL writes as negative, are kept as is. So for a tiny p (e.g. 1e-12) the result is the same as before, and geometric(p) - 1 wraps to INT_MAX instead of giving back the old value.

Maybe say "one larger for every p whose result fits in int32", and note (here or in the Fixed entry on line 61) that results are still int32 and can overflow for very small p, unlike NumPy's int64?

3. CHANGELOG.md line 11

gh-159 also fixed several concurrency bugs that aren't listed anywhere: a get_state heap overflow when racing a BRNG change, re-entrancy deadlocks, and MKL stream access outside the per-instance lock in size=None draws, multinomial, multinormal_cholesky, shuffle, seed and the randint helpers.

Since the smaller set_state fix from the same PR is added to Fixed in this PR, it'd be worth adding these too, so users sharing a generator across threads know that 1.5.0 and earlier have these races.

Comment thread docs/source/conf.py
copyright = "2017-2026, Intel Corp."
author = "Intel Corp."
release = "1.6.0dev0"
release = "1.6.0"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Nit, could be a follow-up: the version is kept by hand both here and in mkl_random/_version.py. meson.build already reads _version.py; conf.py could do the same, so future version bumps only touch one file.

@vlad-perevezentsev vlad-perevezentsev Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Added a Fixed entry for the two gh-159 bugs that also affect GIL-enabled builds: the get_state buffer overflow when racing a reseed with another brng, and the re-entrancy deadlocks in seed/shuffle. The lock serialization of size=None draws, multinomial, multinormal_cholesky etc. only matters on free-threaded builds: 1.5.0 always ran with the GIL, so those calls were already serialized, and that part is covered by the free-threading entry.

Your nit will be done in the follow-up PR after the release

@antonwolfy antonwolfy left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@vlad-perevezentsev
vlad-perevezentsev merged commit cf9e37d into master Oct 20, 2026
167 of 170 checks passed
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