Hello Nicholas
Thanks for your feedback, this is much appreciated :-). The OpenSearch
GitHub issue was an interesting read, and I'm glad to see that the "move
to Gradle, then add module-info, then choose carefully what to export"
path is working for Lucene too.
Yes I'm very interested in Panama and vectorization as well. A goal of
doing JPMS first is indeed to prepare the code base for those further
developments. Panama could be used for providing access to the GDAL
library as a DataStore. Vectorization can be used for accelerating
coordinate operations (e.g. map projections). Actually Apache SIS is
particularly well suited to vectorization of coordinate operations
because of a design choice made about 10 years ago, where the
mathematics of map projections have been rearranged for delegating as
much work as possible to matrices. At that time to goal was to allow
efficient concatenation of operations (through matrix multiplications),
but an unintended (at that time) side-effect is that it makes the code
easier to vectorize compared to map projection formulas implemented
verbatim from the books.
Before that I need to do the long overdue upgrade of ISO 19111 and EPSG
database. But after those upgrades, Panama and vectorization are on my
wish list.
Martin
Le 29/07/2023 à 21:16, Nicholas Knize a écrit :
I've been following the development on this as I've been working for a
while on adding JPMS support to the OpenSearch codebase (
https://github.com/opensearch-project/opensearch/issues/5910). 💯 support
this effort. FWIW, the same approach was taken on Lucene. For ~1 year Mark
Miller (pretty much single handedly) switched Lucene from ant to gradle
first. Then module-info.java was added to each Lucene module and API
classes carefully exported.
Quick question. Are there corners of the SIS code base that could also
benefit from some of the other JDK JEP improvements (e.g., Valhalla,
Panama)? Perhaps we could explore adding SIMD optimizations through the
java vector incubating API with JDK 20 runtime? I think moving to JPMS and
a gradle build system would make this easier and we could cross breed some
of the MRJAR and Panama API integration work done on Lucene.