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

Tracker: 0.6 release #520

Closed
20 of 28 tasks
dhardy opened this issue Jun 20, 2018 · 27 comments
Closed
20 of 28 tasks

Tracker: 0.6 release #520

dhardy opened this issue Jun 20, 2018 · 27 comments
Labels
X-tracker Type: tracker

Comments

@dhardy
Copy link
Member

dhardy commented Jun 20, 2018

Existing and planned changes for 0.6 (excluding things already merged into the 0.5 series). @pitdicker do you have more to add?

Required items:

sequences

distributions

Core

PRNGs

Documentation

Optional items:

ThreadRng

Seeding

Optimisations and extensions

other

@dhardy dhardy added the X-tracker Type: tracker label Jun 20, 2018
@pitdicker
Copy link
Contributor

pitdicker commented Jun 21, 2018

There are a couple of things I would like to see, but my time is getting a little more limited...

A few things I have on my personal wish list:

New PRNGs (dhardy#60 (comment)):

  • addition of PCG-XSL-RR 128/64 (MCG) and PCG-XSH-RR 64/32 (LCG).
  • addition of SFC-32 and SFC-64.
  • maybe addition of XoroshiroMT.
  • maybe addition of Xoroshiro128+.
  • deprecation of XorShiftRng.

It would be nice if we could make some progress with no_std support (#313):

  • I was playing with a lock-free shared CSPRNG (to use for thread_rng with no_std).
  • have a way to set another fallback in EntropyRng, like RDRAND.

@dhardy
Copy link
Member Author

dhardy commented Jun 21, 2018

I opened #522, but this actually concerns rand_core and can be completely independent of Rand 0.6.

@vks
Copy link
Collaborator

vks commented Jun 21, 2018

  • I agree that SeedableRng::new_from_u64 would be a great usability improvement.
  • I'm a bit sceptical about streams. They don't seem as well tested as the RNGs, and some people claim their statistical quality is poor.
  • I think xoshiro should be considered as well.

@dhardy
Copy link
Member Author

dhardy commented Jun 22, 2018

I'm a bit sceptical about streams

To what are you referring?

@pitdicker
Copy link
Contributor

I think it is about a comment by Vigna about PCG streams. I can see why he thought it would have problems, because Xorshift and Xoroshiro are sensitive to the choice of constants, and he put a lot of effort into finding good ones.

A post on the PCG blog proved streams implemented using different increment constants are all of similar quality, but with different multiplier constants are questionable.

@dhardy
Copy link
Member Author

dhardy commented Jun 22, 2018

Ah, so that comment was about splitting RNGs. I'm not convinced on this issue either (more with regards to utility & applicability to threading). It would be good to create a new issue on that topic for further discussion.

I think xoshiro should be considered as well.

Again, the PRNGs we pick is not a topic to discuss in the tracking issue. We already have a couple of threads on this: dhardy#52, dhardy#60 (and related: dhardy#58, #431). If need be create yet another issue.

@vks
Copy link
Collaborator

vks commented Jun 25, 2018

This is the criticism of PCG streams: Vigna, Blackman, O'Neil

This does not make me comfortable using them, especially since they are not really tested as rigorously as the RNG itself.

@sicking
Copy link
Contributor

sicking commented Jun 26, 2018

I'd like to see a more thoughtful look at what the Rng trait looks like. #483 did some big revisions there and proposed we go down a path where Rng mainly has functions for directly generating values. I'd like to see what it'd look like to follow through on that more consistently.

I won't propose any changes here in order to keep this discussion on track. But I'll file a separate issue on this topic. Implementation work for this is trivial if we can get agreement (big "if", obviously), so might be doable relatively quickly.

Relatedly, we have a number of issues filed on the future and name of thread_rng(). This is similarly API-breaking so would be good to get done sooner rather than later. But I don't have any full proposals here, so might be too optimistic to get done for 0.6.

@dhardy
Copy link
Member Author

dhardy commented Jun 27, 2018

@sicking we already worked on Rng a lot last year, leading up to the current Rng: RngCore design. We've already removed all core trait functions and all remaining methods do appear to be simple wrappers, as mentioned in #483. Yes, open another issue if you like.

Good point on thread_rng.

@sicking
Copy link
Contributor

sicking commented Jul 13, 2018

I opened #552 for one of the two backwards-breaking changes that I'd like to consider for Rng.

@sicking
Copy link
Contributor

sicking commented Jul 13, 2018

And #553 for the other one.

@sicking
Copy link
Contributor

sicking commented Jul 13, 2018

FWIW, I'd also love to rename gen_range to just range. But it feels like the transition process would be very painful.

@dhardy
Copy link
Member Author

dhardy commented Jul 13, 2018

At least at the moment gen_range, gen_bool and gen_ratio are somewhat consistent.

@dhardy
Copy link
Member Author

dhardy commented Aug 23, 2018

According to the new milestone we're half way to 0.6, though one or two items (specifically thread-rng) may slip to later; probably we're well past half way in terms of work.

@dhardy
Copy link
Member Author

dhardy commented Sep 3, 2018

Progress note: we have now completed the most important stuff for 0.6 (in my opinion), except for limited progress on introducing new PRNG crates, and SmallRng.

@coltfred
Copy link
Contributor

@dhardy Do you have any idea when 0.6 would be available? We're currently working off master, but would like to stabilize on a release version soon if we can. Our main driver is WASM support.

@dhardy
Copy link
Member Author

dhardy commented Sep 19, 2018

@coltfred it would be nice to have 0.6 ready soon but I can't promise anything. Possibly around the end of the month, but that still requires some effort from those involved.

@coltfred
Copy link
Contributor

@dhardy It seems unclear to me which of the things listed here are going to be in 0.6. I'd also be happy to help in any way I can to drive this to the finish line.

@dhardy
Copy link
Member Author

dhardy commented Sep 22, 2018

@coltfred thanks for the offer of help. I've updated the above list to clarify the required changes for 0.6. If you like, review open PRs or have a look at #603.

@coltfred
Copy link
Contributor

@dhardy I can give it a look this Friday if others haven't gotten to it. Thanks so much for this library!

@dhardy
Copy link
Member Author

dhardy commented Oct 4, 2018

rand_xorshift and rand_pcg have now been published.

I started updating SmallRng and removing rand_xorshift from this repo, but hit a weird compile error.

I just created #622 regarding PRNG documentation; this isn't critical for the 0.6 release but it would be very nice to have some help with this.

@dhardy
Copy link
Member Author

dhardy commented Oct 16, 2018

I think we're getting close to being able to make a release! Help with the following please:

@dhardy
Copy link
Member Author

dhardy commented Oct 17, 2018

I published:

The last three have had no recent changes and should be ready.

Rand itself hopefully has code in sufficiently good shape for 0.6, but I'll wait two weeks before marking it final. In the mean-time, some documentation work is needed (see previous post).

@dhardy
Copy link
Member Author

dhardy commented Oct 23, 2018

I added an item to the tracker: #634. Please help out!

@hcpl
Copy link

hcpl commented Nov 12, 2018

Can i128_support feature be removed now that compile-time detection has been merged?

@dhardy
Copy link
Member Author

dhardy commented Nov 12, 2018

That flag doesn't do anything any more; it's only there to avoid breakage. Probably we'll remove it for 0.7.

@dhardy
Copy link
Member Author

dhardy commented Nov 12, 2018

That flag doesn't do anything any more; it's only there to avoid breakage. Probably we'll remove it for 0.7.

Other news: I've scheduled the 0.6 release for Wednesday. The following two PRs will be merged first:

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

No branches or pull requests

6 participants