Alternative Version implementation
    David M. Lloyd 
    david.lloyd at redhat.com
       
    Wed Mar 23 18:46:01 UTC 2016
    
    
  
On 03/23/2016 09:20 AM, David M. Lloyd wrote:
> I've gone ahead and written a new Version implementation that implements
> the rules I've described.  It seems to work OK though I am having a hard
> time running all tests locally due to some environmental problem that
> I'm still working on, so I don't have a webrev yet.  But I do have a
> diff that can be examined (and commented upon) at [1].
One oddity that springs up relating to numeric versions when not 
normalizing the version string in any way is that version segments 
leading zeros parse and sort strangely.  After fiddling around with 
various approaches, currently I've settled on this order:
  1
  1.0
  1.1
  1.00
  1.01
  1.10
  1.11
  1.000
  1.001
  1.010
  1.011
  1.100
  1.101
  1.110
  1.111
Wherein versions are sorted for length first, then for value.  However 
that might be counter-intuitive if your expectation is that (for 
example) 1.0 is equal to 1.00 or at least sorts immediately before or 
after it.  A good case could be made that versions should be normalized 
to strip leading zeros, and I believe the previous implementation did 
this (either intentionally or unintentionally) as an implementation 
side-effect.  The downside of normalization is the extra work and extra 
String being produced as a result.
A third option would be to reject version segments with leading zeros, 
which prevents the problem from coming up and also avoids the extra copy 
work, making the "number" production look like:
    number = ? Unicode decimal digit with values 1-9 ? { ? Unicode 
decimal digit ? }
Any thoughts on this would be appreciated.
-- 
- DML
    
    
More information about the jpms-spec-observers
mailing list