I can imagine some users might like to keep abreast of main, at least
in some kind of testing setup, but aren't ready to cut over their JDK
for some reason (as Dawid was describing), but they can always do a
small patch and build Lucene themselves, applying the -target for
compatibility with their environments. And if we ever get to the point
of really *requiring* compilation for the latest JDK, then it will
probably be for a good reason, and we should prepare users for that.

On Thu, Nov 4, 2021 at 7:54 AM Robert Muir <rcm...@gmail.com> wrote:
>
> With the current release frequency, JDK 11 will be EOL by the time
> Lucene 10 is released.
>
> Users can use lucene 9 if they want to stay on old outdated JDKs.
>
> On Thu, Nov 4, 2021 at 7:44 AM David Smiley <dsmi...@apache.org> wrote:
> >
> > I prefer that we require JDK 17 for build/test but allow our artifacts 
> > (except lucene-test-framework maybe) to be run on JDK 11 (or 14?) via 
> > setting the "target".  This allows us some time to appreciate some of the 
> > benefits of Java/JDK 17 without insisting that our users switch.  This 
> > approach doesn't prevent us from fully-committing to JDK 17 for Lucene 10 
> > if we want.  When we consider that Lucene is a library and not a full app, 
> > we should be somewhat conservative here.
> >
> > ~ David Smiley
> > Apache Lucene/Solr Search Developer
> > http://www.linkedin.com/in/davidwsmiley
> >
> >
> > On Thu, Nov 4, 2021 at 6:10 AM Uwe Schindler <u...@thetaphi.de> wrote:
> >>
> >> Hi,
> >>
> >>
> >>
> >> I agree with this plan, lets go to JDK17 in Lucene 10 (main), but whenever 
> >> a new Java version comes out, update Gradle and the –release=XX switch. 
> >> Plain simple! The stable branch has a defined java version (currently 
> >> “11”), “main” should be always latest. I don’t think this is a problem, 
> >> because the Java release cycles have changed and people who are old-syled 
> >> are still on 8 (so would be stuck with Lucene 8). For some larger 
> >> companies they stick with officially “Oracle supported LTS” versions, but 
> >> those people won’t upgrade soo. Nowadays with Docker and Kubernetes, it is 
> >> so easy to start Solr or Elasticsearch with any Java version (and you 
> >> don’t care, you just take what’s shipped with your image), so beeing 
> >> bleeding edge on main is perfectly fine. When we release a new major 
> >> version, we take what’s latest at that time (based on main branch, 
> >> hopefully with Panama).
> >>
> >>
> >>
> >> Based on my previous statement, JDK 17 is not the final goal for Lucene 
> >> 10, and not even 18 it is: JDK 18 won’t contain Panama (they have a second 
> >> icubator of Total-Panama), so it is likely to be part of “java.base” 
> >> Module in JDK 19 (still requiring some extra enabler-command line param).
> >>
> >>
> >>
> >> About 17: What I like most is the multiline-Strings and the new switch 
> >> statement. In addition to Robert’s comment: I like it not only because of 
> >> the break-hell, more because it is not a simple statement, but an 
> >> expression (having return value). So the anti-pattern like a variable and 
> >> then a switch stament assigning a value to this variable in each case is 
> >> then finally obsolete. You have then “variable = switch(….)”. And finally 
> >> we will get a switch for instanceofs a bit later (hopefully at same time 
> >> when Panama comes out) 😊
> >>
> >>
> >>
> >> Records are bullshit, sorry. It’s only useful for the 
> >> Hibernate/Spring/Foobar-like Entities-For-Everything business logic. It 
> >> may be useful at some point when they are no instances on heap anymore and 
> >> just data wrappers, but based on classes I see no reason to use them for 
> >> Lucene.
> >>
> >>
> >>
> >> Uwe
> >>
> >>
> >>
> >> -----
> >>
> >> Uwe Schindler
> >>
> >> Achterdiek 19, D-28357 Bremen
> >>
> >> https://www.thetaphi.de
> >>
> >> eMail: u...@thetaphi.de
> >>
> >>
> >>
> >> From: Dawid Weiss <dawid.we...@gmail.com>
> >> Sent: Thursday, November 4, 2021 8:27 AM
> >> To: Lucene Dev <dev@lucene.apache.org>
> >> Subject: Re: Bump minimum Java version to 17 on main (10.0)
> >>
> >>
> >>
> >>
> >>
> >> Now you're talking.
> >>
> >> +1.
> >>
> >>
> >>
> >>
> >>
> >> On Thu, Nov 4, 2021 at 1:49 AM Robert Muir <rcm...@gmail.com> wrote:
> >>
> >> On Wed, Nov 3, 2021 at 1:36 PM Dawid Weiss <dawid.we...@gmail.com> wrote:
> >> >
> >> > I principally agree with you - we should leverage new Java features and 
> >> > I'm all for it. I just don't see much difference between
> >> > Java 11 and 17 in the context of Lucene... Upgrading for the sake of 
> >> > upgrading doesn't justify the move to
> >> > me. But if you can point at a feature of Java 17 and say - here, this is 
> >> > great and was not there before, it's worth using, then I'm all in.
> >> >
> >> > D.
> >>
> >> absolute-bulk-get methods on Byte/Short/Int/Long/Float/DoubleBuffers?
> >>
> >> I think we should investigate it for MMapDirectory and
> >> ByteBuffersDirectory at least? Maybe it can create new opportunities,
> >> e.g. reduce overhead vs position()+get().  Or maybe expand our
> >> random-access API to include it, and perhaps bit-unpacking can be
> >> simplified or sped up (e.g. DirectReader). Especially now that we have
> >> varhandles it seems to make more things possible. Or maybe there's no
> >> performance win for us and it only simplifies existing code in the
> >> short-term.
> >>
> >> I like the new PRNGs, maybe we should replace our handrolled
> >> xorshift128 stuff that is used for segment IDs (see StringHelper). The
> >> new API has nice set of algorithms:
> >> https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/random/package-summary.html.
> >> Good to look at for the HNSW vector stuff, too. Maybe, we should
> >> switch over unit tests eventually too.
> >>
> >> The JFR runtime streaming api looks interesting, maybe we could
> >> improve tests.profile to use it, or mike's benchmark.
> >> I like that they fixed multicast api to work correctly (IIRC
> >> previously you had to implicitly bind to all interfaces, couldn't even
> >> bind to just localhost). Theoretically it could be more efficient for
> >> stuff like replication, but there's still practical issues (e.g. you
> >> have to deal with UDP, some cloud environments have spotty support,
> >> etc).
> >> Unix Sockets! Now they work with windows, so java exposed them. I use
> >> these heavily at work, curl --unix-socket is my GOTO. it's a nice
> >> bonus you can protect them with ordinary file permissions on Linux at
> >> least. I love apps like haproxy that expose stats/control interfaces
> >> first-class over unix sockets. Infostream logging is nice, but maybe
> >> we should provide other options to make it easy to get
> >> metrics/statistics counters and such "live".
> >> I like that the Unicode version is bumped, that helps the lucene
> >> analyzers based on the JDK.
> >> I'm also a fan of the HexFormat to replace any hand-rolled
> >> hex-printers. Could probably clean up some test code at least.
> >>
> >> There's a lot of little improvements to the API like this:
> >> https://docs.oracle.com/en/java/javase/17/docs/api/new-list.html
> >>
> >> As far as the language/major features, sure they are just sugar
> >> sometime, but often it makes sense to refactor the code to use them.
> >> E.G. having text block support, it is just one of those little things
> >> that can make the code much easier. And I get spoiled by other
> >> languages that all seem to have this.
> >> There's a new packaging tool that might be appropriate for Luke, not sure.
> >> Maybe lucene/expressions should use Hidden Classes? I can't remember
> >> the details, but I think we make a private child classloader, register
> >> the class there, to try to prevent GC hell. But why register it at
> >> all?
> >> The switch expressions looks interesting, because we could remove some
> >> of the horrors of forgotten-break statements and stuff? Haven't looked
> >> in detail, I think we are doing stuff with ecj to try to detect these
> >> mistakes already. Seems potentially less error-prone to use the new
> >> syntax.
> >>
> >> You can easily see the full list of these language/major features since 
> >> java 11:
> >> https://openjdk.java.net/projects/jdk/12/
> >> https://openjdk.java.net/projects/jdk/13/
> >> https://openjdk.java.net/projects/jdk/14/
> >> https://openjdk.java.net/projects/jdk/15/
> >> https://openjdk.java.net/projects/jdk/16/
> >> https://openjdk.java.net/projects/jdk/17/
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
> >> For additional commands, e-mail: dev-h...@lucene.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
> For additional commands, e-mail: dev-h...@lucene.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to