lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Muir (JIRA)" <>
Subject [jira] [Commented] (LUCENE-7966) build mr-jar and use some java 9 methods if available
Date Mon, 18 Sep 2017 17:48:00 GMT


Robert Muir commented on LUCENE-7966:

WARNING: We cannot support Maven builds here, Maven always builds a Java8-only JAR file!

Why exactly is this the case? with my patch maven should work. Maven just uses the jars produced
by ant. The smoketester validates they are exactly the same.

> build mr-jar and use some java 9 methods if available
> -----------------------------------------------------
>                 Key: LUCENE-7966
>                 URL:
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: general/build
>            Reporter: Robert Muir
>         Attachments: LUCENE-7966.patch, LUCENE-7966.patch, LUCENE-7966.patch, LUCENE-7966.patch,
> See background:
> It would be nice to use some of the newer array methods and range checking methods in
java 9 for example, without waiting for lucene 10 or something. If we build an MR-jar, we
can start migrating our code to use java 9 methods right now, it will use optimized methods
from java 9 when thats available, otherwise fall back to java 8 code.  
> This patch adds:
> {code}
> Objects.checkIndex(int,int)
> Objects.checkFromToIndex(int,int,int)
> Objects.checkFromIndexSize(int,int,int)
> Arrays.mismatch(byte[],int,int,byte[],int,int)
> Arrays.compareUnsigned(byte[],int,int,byte[],int,int)
> Arrays.equal(byte[],int,int,byte[],int,int)
> // did not add char/int/long/short/etc but of course its possible if needed
> {code}
> It sets these up in {{org.apache.lucene.future}} as 1-1 mappings to java methods. This
way, we can simply directly replace call sites with java 9 methods when java 9 is a minimum.
Simple 1-1 mappings mean also that we only have to worry about testing that our java 8 fallback
methods work.
> I found that many of the current byte array methods today are willy-nilly and very lenient
for example, passing invalid offsets at times and relying on compare methods not throwing
exceptions, etc. I fixed all the instances in core/codecs but have not looked at the problems
with AnalyzingSuggester. Also SimpleText still uses a silly method in ArrayUtil in similar
crazy way, have not removed that one yet.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message