RFR 8066397 Remove network-related seed initialization code in ThreadLocal/SplittableRandom

Bradford Wetmore bradford.wetmore at oracle.com
Fri Jan 2 21:29:49 UTC 2015


> the Microsoft C Runtime Library makes use of this function in its
> implementation of "rand_s", so it's removal would break a lot of
> programs. I think this is a relative guarantee that the function is here
> to stay.

Ok.

>>>> What are the fallbacks for SystemRandomImpl if /dev/urandom or the
>>>> rtlGenRandomFN/CryptGenRandom aren't available?  Is that something
>>>> you'll bake into TLR or will you do it here?
>> >
>>> I think it's better to leave it to consumers (TLR/SplittableRandom) as
>>> they know what's good-enough for them. The API allows for arbitrary
>>> number of bytes to be generated and I don't have an easy means of
>>> generating more than 8 "random" bytes just from System.nanoTime() and
>>> System.currentTimeMillis() short of using SecureRandom as a fall-back.
>>
>> webrev.03 only has new code, no changes yet to TLR/SplittableRandom,
>> so I'm not yet quite following where TLR/SR will be changing.  Also,
>> what is proposed for platforms that aren't Unix/Windows?  Should there
>> be a generic fallback mechanism like ThreadedSeedGenerator?  (Note,
>> I'm not suggesting using it, it's rather...SSLLLOOOWWWW...)
>
> Are there other non-Unix and non-Windows platforms?

I'm not an expert in non-Oracle Java offerings, but what about the 
various Java ME devices?  Some of the embedded devices are 
Linux/Windows, but are there others?  JavaCard?

I know IBM has a large number of OS's they support, for example IBM i.

http://en.wikipedia.org/wiki/IBM_i
https://www.ibm.com/developerworks/community/wikis/home?lang=en#/wiki/IBM%20i%20Technology%20Updates/page/Java%20on%20IBM%20i

I know IBM supports Java on z/OS, but apparently that uses a Linux-style 
filesystem via UNIX_System_Services. http://en.wikipedia.org/?title=Z/OS

Not sure about others.

I saw a couple of other non-unix/windows OSs in a wikipedia comparison 
of JVM's, but most of them seem to be discontinued.

> I think the planned
> fall-back for TLR/SplittableRandom is to just use
> System.currentTimeMillis() & System.nanoTime() - these are the defaults
> now unless SecureRandom is requested.

Ok.  Since this isn't security-critical, IMHO there just needs to be a 
"reasonable" fall-back option in case /dev/urandom or rtlGenRandomFN 
can't be used.

I don't always closely monitor core-libs-dev, so please cc me if further 
discussion occurs in a different thread.

Cheers, and HNY to you and everyone else here,

Brad



More information about the core-libs-dev mailing list