You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by dc...@apache.org on 2021/08/19 22:18:24 UTC

svn commit: r49567 [14/14] - in /dev/datasketches/memory/2.0.0-RC1: ./ apache-datasketches-memory-2.0.0-src/ apache-datasketches-memory-2.0.0-src/datasketches-memory-java11/ apache-datasketches-memory-2.0.0-src/datasketches-memory-java11/src/ apache-da...

Added: dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/docs/usage-instructions.md
==============================================================================
--- dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/docs/usage-instructions.md (added)
+++ dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/docs/usage-instructions.md Thu Aug 19 22:18:24 2021
@@ -0,0 +1,203 @@
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+
+# Usage Instructions
+
+You may need to supply additional runtime arguments to the JVM depending on how you are using the Datasketches Memory library.
+There are several applicable use cases that are considered:
+
+1. Using the library from a Java 8 application
+2. Using the library with on-heap memory only
+3. Using off-heap memory in a non-modularized Java 9+ application
+4. Using off-heap memory in a modularized Java 9+ application
+
+### 1) Using the library from a Java 8 application
+
+No additional runtime arguments are required.  
+
+As an example, consider the following launch script that compiles and runs a simple Java 8 application:
+
+```shell
+  export JAVA_HOME=$JAVA8_HOME
+  export JAVAC=$JAVA_HOME/bin/javac
+  export JAR=$JAVA_HOME/bin/jar
+  export JAVA=$JAVA_HOME/bin/java
+  patha=nomvn-jdk8
+  
+  cd $patha
+  echo PWD:$(pwd)
+  echo $JAVA_HOME
+  
+  echo "--- CLEAN & COMPILE ---"
+  rm -rf target
+  mkdir target
+  mkdir target/classes
+  mkdir target/test-classes
+  
+  $JAVAC -d target/test-classes/  -cp "libs/*"  $(find . -name '*.java')
+  
+  echo "---- RUN ----"
+  echo PWD:$(pwd)
+  
+  $JAVA\ 
+    -cp target/test-classes:libs/*:src/test/resources/\
+    org.xyz.memory.CheckJava8
+```
+
+### 2) Using the library with on-heap memory only, or with off-heap memory allocated via ByteBuffer by the user.
+
+No additional runtime arguments are required, regardless of whether the library is used from a Java 8 or Java 9+
+application. 
+
+As an example, consider the following launch script that compiles and runs a simple Java 9 application that only exclusively
+uses on-heap memory:
+
+```shell
+  export JAVA_HOME=$JAVA9_HOME
+  export JAVAC=$JAVA_HOME/bin/javac
+  export JAR=$JAVA_HOME/bin/jar
+  export JAVA=$JAVA_HOME/bin/java
+  patha=nomvn-nomod-heap-jdk9
+  
+  cd $patha
+  echo PWD:$(pwd)
+  echo $JAVA_HOME
+  
+  echo "--- CLEAN & COMPILE ---"
+  rm -rf target
+  mkdir target
+  mkdir target/classes
+  mkdir target/test-classes
+  
+  $JAVAC -d target/test-classes -cp "mods/*":"libs/*" -p mods $(find . -name '*.java')
+  
+  echo "---- RUN ----"
+  
+  echo PWD:$(pwd)
+  
+  $JAVA\
+    -cp target/test-classes:"mods/*":"libs/*":src/test/resources\
+    org.xyz.memory.CheckJava9plus
+```
+
+### 3) Using off-heap memory in a non-modularized Java 9+ application
+
+The following section applies to applications that are not modularized JPMS applications.
+
+In order to allocate off-heap memory using the `WritableMemory.allocateDirect(...)` method in Java 9 and above, you must provide the
+following runtime arguments to the JVM:
+
+```shell
+    --add-exports java.base/jdk.internal.misc=ALL-UNNAMED\
+    --add-exports java.base/jdk.internal.ref=ALL-UNNAMED\
+    --add-opens java.base/java.nio=ALL-UNNAMED\
+    --add-opens java.base/sun.nio.ch=ALL-UNNAMED\
+```
+
+These arguments expose encapsulated packages in the `java.base` package to the `org.apache.datasketches.memory` module,
+which runs as an UNNAMED module in a non-JPMS (non-modularized) application.
+
+The following launch script compiles and runs a non-modularized Java 9 application:
+
+```shell
+
+  export JAVA_HOME=$JAVA9_HOME
+  export JAVAC=$JAVA_HOME/bin/javac
+  export JAR=$JAVA_HOME/bin/jar
+  export JAVA=$JAVA_HOME/bin/java
+  patha=nomvn-nomod-jdk9
+  
+  cd $patha
+  echo PWD:$(pwd)
+  echo $JAVA_HOME
+  
+  echo "--- CLEAN & COMPILE ---"
+  rm -rf target
+  mkdir target
+  mkdir target/classes
+  mkdir target/test-classes
+  
+  $JAVAC -d target/test-classes -cp "mods/*":"libs/*" -p mods $(find . -name '*.java')
+  
+  echo "---- RUN ----"
+  
+  echo PWD:$(pwd)
+  
+  $JAVA\
+    --add-exports java.base/jdk.internal.misc=ALL-UNNAMED\
+    --add-exports java.base/jdk.internal.ref=ALL-UNNAMED\
+    --add-opens java.base/java.nio=ALL-UNNAMED\
+    --add-opens java.base/sun.nio.ch=ALL-UNNAMED\
+    -cp target/test-classes:"mods/*":"libs/*":src/test/resources\
+    org.xyz.memory.CheckJava9plus
+```
+where the traditional classpath (`-cp`) argument contains all modules, libraries and resources. 
+
+Note: `mods` is a local directory containing external modules, and `libs` is a localy directory for external library
+dependencies.  No distinction is made between modules and libraries since they are both appended to the classpath.
+
+### 4) Using off-heap memory in a modularized Java 9+ application
+
+The following section applies to modularized JPMS applications.
+
+In order to allocate off-heap memory using the `WritableMemory.allocateDirect(...)` method in Java 9 and above, you must provide the
+following runtime arguments to the JVM:
+
+```shell
+    --add-exports java.base/jdk.internal.misc=org.apache.datasketches.memory\
+    --add-exports java.base/jdk.internal.ref=org.apache.datasketches.memory\
+    --add-opens java.base/java.nio=org.apache.datasketches.memory\
+    --add-opens java.base/sun.nio.ch=org.apache.datasketches.memory\
+```
+
+These arguments expose encapsulated packages in the `java.base` package to the `org.apache.datasketches.memory` module.
+
+The following launch script compiles and runs a modularized Java 9 application:
+
+```shell
+  export JAVA_HOME=$JAVA9_HOME
+  export JAVAC=$JAVA_HOME/bin/javac
+  export JAR=$JAVA_HOME/bin/jar
+  export JAVA=$JAVA_HOME/bin/java
+  patha=nomvn-mod-jdk9
+  
+  cd $patha
+  echo PWD:$(pwd)
+  echo $JAVA_HOME
+  
+  echo "--- CLEAN & COMPILE ---"
+  rm -rf target
+  mkdir target
+  mkdir target/classes
+  mkdir target/test-classes
+  
+  $JAVAC -d target/test-classes -cp "libs/*" -p mods $(find . -name '*.java')
+  
+  echo "---- RUN ----"
+  echo PWD:$(pwd)
+  
+  $JAVA\
+    --add-opens java.base/java.nio=org.apache.datasketches.memory\
+    --add-opens java.base/sun.nio.ch=org.apache.datasketches.memory\
+    -cp "/libs/*":src/test/resources\
+    -p target/test-classes:mods\
+    -m org.xyz.memory/org.xyz.memory.CheckJava9plus
+```
+where the traditional classpath (`-cp`) argument contains libraries and resources, and the module-path argument (`-p`)
+references all external modules and compiled classes for the current user application, which is itself a module.

Added: dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/git.properties
==============================================================================
--- dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/git.properties (added)
+++ dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/git.properties Thu Aug 19 22:18:24 2021
@@ -0,0 +1,9 @@
+{
+  "Implementation-Vendor" : "The Apache Software Foundataion", 
+  "GroupId-ArtifactId" : "org.apache.datasketches:datasketches-memory", 
+  "git.branch" : "2.0.X",
+  "git.commit.id.full" : "86de062d3e92e26440ba3f270a5e95dd1f106dd6",
+  "git.commit.time" : "2021-08-19T22:23:59+01:00",
+  "git-commit-user-email" : "davecromberge@gmail.com", 
+  "git.commit.tag" : "2.0.0-RC1", 
+}

Added: dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/pom.xml
==============================================================================
--- dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/pom.xml (added)
+++ dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/pom.xml Thu Aug 19 22:18:24 2021
@@ -0,0 +1,538 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache</groupId>
+    <artifactId>apache</artifactId>
+    <version>23</version>
+  </parent>
+
+  <groupId>org.apache.datasketches</groupId>
+  <artifactId>datasketches-memory-root</artifactId>
+  <version>2.0.0</version>
+  <!-- Required for multi-module project -->
+  <packaging>pom</packaging>
+
+  <name>${project.artifactId}</name>
+  <description>High-performance native memory access.</description>
+  <url>https://datasketches.apache.org/</url>
+  <inceptionYear>2015</inceptionYear>
+
+  <mailingLists>
+    <mailingList>
+      <name>DataSketches Developers</name>
+      <subscribe>dev-subscribe@datasketches.apache.org</subscribe>
+      <unsubscribe>dev-unsubscribe@datasketches.apache.org</unsubscribe>
+      <post>dev@datasketches.apache.org</post>
+      <archive>https://mail-archives.apache.org/mod_mbox/datasketches-dev</archive>
+    </mailingList>
+    <mailingList>
+      <name>sketches-user</name>
+      <archive>https://groups.google.com/forum/#!forum/sketches-user</archive>
+      <subscribe>mailto:sketches-user%2Bsubscribe@googlegroups.com</subscribe>
+      <unsubscribe>mailto:sketches-user%2Bunsubscribe@googlegroups.com</unsubscribe>
+      <post>mailto:sketches-user@googlegroups.com</post>
+    </mailingList>
+  </mailingLists>
+
+  <scm>
+    <connection>scm:git:ssh://git@github.com/apache/${project.artifactId}.git</connection>
+    <developerConnection>scm:git:ssh://git@github.com/apache/${project.artifactId}.git</developerConnection>
+    <url>https://github.com/apache/${project.artifactId}</url>
+    <tag>HEAD</tag>
+  </scm>
+
+  <issueManagement>
+    <!-- <system>jira</system>
+      <url>https://issues.apache.org/jira/browse/DATASKETCHES</url> -->
+    <system>GitHub</system>
+    <url>https://github.com/apache/${project.artifactId}/issues</url>
+  </issueManagement>
+
+  <developers>
+    <developer>
+      <name>The Apache DataSketches Team</name>
+      <email>dev@datasketches.apache.org</email>
+      <url>https://datasketches.apache.org</url>
+      <organization>Apache Software Foundation</organization>
+      <organizationUrl>http://www.apache.org</organizationUrl>
+    </developer>
+  </developers>
+
+  <!--
+       NOTE:
+       The datasketches-memory submodule uses the Maven project-aggregation feature and does not inherit
+       from this root module as a parent; so that there is no runtime dependency on the parent project (root module).
+       As a result, some properties from this POM (including the version) are duplicated in the datasketches-memory
+       module for inclusion in the assembled artifacts.  For more information, see:
+       https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Aggregation -->
+
+
+  <properties>
+    <!-- UNIQUE FOR THIS JAVA COMPONENT -->
+    <protobuf-java.version>4.0.0-rc-2</protobuf-java.version>
+    <!-- Used for UTF8 testing -->
+    <zero-allocation-hashing.version>0.15</zero-allocation-hashing.version>
+    <!-- END:UNIQUE FOR THIS JAVA COMPONENT -->
+
+    <!-- Test -->
+    <!-- Version 7.4.0 fails to locate jquery.min.js for reporting on debian systems -->
+    <testng.version>7.1.0</testng.version>
+
+    <!-- System-wide properties -->
+    <maven.version>3.5.0</maven.version>
+    <java.version>1.8</java.version>
+    <jdk-toolchain.version>8</jdk-toolchain.version>
+    <maven.compiler.source>${java.version}</maven.compiler.source>
+    <maven.compiler.target>${java.version}</maven.compiler.target>
+    <argLine>-Xmx4g -Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8</argLine>
+    <charset.encoding>UTF-8</charset.encoding>
+    <project.build.sourceEncoding>${charset.encoding}</project.build.sourceEncoding>
+    <project.build.resourceEncoding>${charset.encoding}</project.build.resourceEncoding>
+    <project.reporting.outputEncoding>${charset.encoding}</project.reporting.outputEncoding>
+
+    <!-- org.codehaus plugins -->
+    <!-- used for strict profile testing-->
+    <plexus-compiler-javac-errorprone.version>2.8.5</plexus-compiler-javac-errorprone.version>
+    <versions-maven-plugin.version>2.8.1</versions-maven-plugin.version>
+
+    <!--  Maven Plugins -->
+    <maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version> <!-- overrides parent -->
+    <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version> <!-- overrides parent -->
+    <maven-deploy-plugin.version>3.0.0-M1</maven-deploy-plugin.version> <!-- overrides parent -->
+    <maven-enforcer-plugin.version>3.0.0-M3</maven-enforcer-plugin.version> <!-- overrides parent -->
+    <maven-jar-plugin.version>3.2.0</maven-jar-plugin.version> <!-- overrides parent -->
+    <maven-javadoc-plugin.version>3.3.0</maven-javadoc-plugin.version> <!-- overrides parent -->
+    <maven-release-plugin.version>3.0.0-M1</maven-release-plugin.version> <!-- overrides parent -->
+    <maven-remote-resources-plugin.version>1.7.0</maven-remote-resources-plugin.version> <!-- overrides parent -->
+    <maven-source-plugin.version>3.2.1</maven-source-plugin.version> <!-- overrides parent -->
+    <maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version> <!-- overrides parent -->
+    <maven-toolchains-plugin.version>3.0.0</maven-toolchains-plugin.version>
+    <maven-install-plugin.version>3.0.0-M1</maven-install-plugin.version>
+    <!-- Apache Plugins -->
+    <apache-rat-plugin.version>0.13</apache-rat-plugin.version> <!-- overrides parent -->
+    <!-- org.jacoco Maven Plugins -->
+    <jacoco-maven-plugin.version>0.8.6</jacoco-maven-plugin.version>
+    <!-- org.eluder Maven Plugins -->
+    <coveralls-repo-token></coveralls-repo-token>
+    <coveralls-maven-plugin.version>4.3.0</coveralls-maven-plugin.version>
+    <!-- other -->
+    <lifecycle-mapping.version>1.0.0</lifecycle-mapping.version>
+    <maven.deploy.skip>true</maven.deploy.skip>
+    <maven.install.skip>true</maven.install.skip>
+    <maven.javadoc.skip>true</maven.javadoc.skip>
+  </properties>
+
+  <repositories>
+    <repository>
+      <id>apache.snapshots</id>
+      <name>Apache Snapshot Repository</name>
+      <url>https://repository.apache.org/content/groups/snapshots/org/apache/datasketches/</url>
+      <releases>
+        <enabled>false</enabled>
+      </releases>
+      <snapshots>
+        <enabled>true</enabled>
+      </snapshots>
+    </repository>
+    <repository>
+      <id>apache</id>
+      <name>Apache Releases Repository</name>
+      <url>https://repository.apache.org/content/repositories/releases/org/apache/datasketches/</url>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
+  </repositories>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.testng</groupId>
+        <artifactId>testng</artifactId>
+        <version>${testng.version}</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <!-- Used for UTF8 testing -->
+        <groupId>com.google.protobuf</groupId>
+        <artifactId>protobuf-java</artifactId>
+        <version>${protobuf-java.version}</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <!-- Used for xxHash testing -->
+        <groupId>net.openhft</groupId>
+        <artifactId>zero-allocation-hashing</artifactId>
+        <version>${zero-allocation-hashing.version}</version>
+        <scope>test</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+
+        <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>versions-maven-plugin</artifactId>
+          <version>${versions-maven-plugin.version}</version>
+        </plugin>
+
+        <plugin>
+          <!-- We want to deploy the artifacts to a staging location for perusal -->
+          <!-- Apache Parent pom: apache-release profile -->
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-deploy-plugin</artifactId>
+          <version>${maven-deploy-plugin.version}</version>
+        </plugin>
+
+        <plugin>
+          <!-- Apache Parent pom, pluginManagement-->
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-release-plugin</artifactId>
+          <version>${maven-release-plugin.version}</version>
+        </plugin>
+
+        <plugin>
+          <!-- Extends Apache Parent pom, pluginManagement-->
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-jar-plugin</artifactId>
+          <version>${maven-jar-plugin.version}</version>
+          <executions>
+            <execution>
+              <id>default-jar</id>
+              <phase>package</phase>
+              <goals>
+                <goal>jar</goal>
+              </goals>
+            </execution>
+            <execution>
+              <id>default-test-jar</id>
+              <phase>package</phase>
+              <goals>
+                <goal>test-jar</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+
+        <plugin>
+          <!-- Extends Apache Parent pom, apache-release profile -->
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-javadoc-plugin</artifactId>
+          <version>${maven-javadoc-plugin.version}</version>
+          <configuration>
+            <docfilessubdirs>true</docfilessubdirs>
+            <doclint>none</doclint>
+            <jdkToolchain>
+              <version>${jdk-toolchain.version}</version>
+            </jdkToolchain>
+            <excludePackageNames>org.apache.datasketches.memory.internal</excludePackageNames>
+          </configuration>
+          <executions>
+            <execution>
+              <id>attach-javadocs</id>
+              <phase>package</phase>
+              <goals>
+                <goal>jar</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-enforcer-plugin</artifactId>
+          <version>${maven-enforcer-plugin.version}</version>
+          <executions>
+            <execution>
+              <id>enforce-banned-dependencies</id>
+              <goals>
+                <goal>enforce</goal>
+              </goals>
+              <configuration>
+                <rules>
+                  <requireJavaVersion>
+                    <version>[1.8,1.9),[8,14)</version>
+                  </requireJavaVersion>
+                  <requireMavenVersion>
+                    <version>[${maven.version},)</version>
+                  </requireMavenVersion>
+                  <bannedDependencies>
+                    <excludes>
+                      <!--LGPL licensed library-->
+                      <exclude>com.google.code.findbugs:annotations</exclude>
+                    </excludes>
+                  </bannedDependencies>
+                </rules>
+                <fail>true</fail>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
+
+        <plugin>
+          <!-- Apache Parent pom, pluginManagement-->
+          <groupId>org.apache.rat</groupId>
+          <artifactId>apache-rat-plugin</artifactId>
+          <version>${apache-rat-plugin.version}</version>
+          <executions>
+            <execution>
+              <phase>verify</phase>
+              <goals>
+                <goal>check</goal>
+              </goals>
+            </execution>
+          </executions>
+          <configuration>
+            <outputDirectory>${project.basedir}/rat</outputDirectory>
+            <consoleOutput>true</consoleOutput>
+            <useDefaultExcludes>true</useDefaultExcludes>
+            <excludes>
+              <exclude>**/*.yaml</exclude>
+              <exclude>**/*.yml</exclude>
+              <exclude>**/.*/**/*</exclude>
+              <exclude>**/.clover/**/*</exclude>
+              <exclude>**/test/resources/**/*.txt</exclude>
+              <exclude>**/docs/*.md</exclude>
+              <exclude>LICENSE</exclude>
+              <exclude>NOTICE</exclude>
+            </excludes>
+          </configuration>
+        </plugin>
+
+        <plugin>
+          <!-- Extends Apache Parent pom, apache-release profile -->
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-source-plugin</artifactId>
+          <version>${maven-source-plugin.version}</version>
+          <executions>
+            <execution>
+              <id>attach-sources</id>
+              <phase>package</phase>
+              <goals>
+                <goal>jar-no-fork</goal>
+              </goals>
+            </execution>
+            <execution>
+              <id>attach-test-sources</id>
+              <phase>package</phase>
+              <goals>
+                <goal>test-jar-no-fork</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+
+        <plugin>
+          <!-- Apache Parent pom, pluginManagement-->
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <version>${maven-surefire-plugin.version}</version>
+          <configuration>
+            <trimStackTrace>false</trimStackTrace>
+            <useManifestOnlyJar>false</useManifestOnlyJar>
+            <redirectTestOutputToFile>true</redirectTestOutputToFile>
+            <jdkToolchain>
+              <version>${jdk-toolchain.version}</version>
+            </jdkToolchain>
+          </configuration>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-toolchains-plugin</artifactId>
+          <version>${maven-toolchains-plugin.version}</version>
+          <configuration>
+            <toolchains>
+              <jdk>
+                <version>[1.8,1.9),[9,14)</version>
+              </jdk>
+            </toolchains>
+          </configuration>
+          <executions>
+            <execution>
+              <goals><goal>toolchain</goal></goals>
+            </execution>
+          </executions>
+        </plugin>
+
+        <plugin>
+          <!-- Generates code coverage report from website. -->
+          <groupId>org.jacoco</groupId>
+          <artifactId>jacoco-maven-plugin</artifactId>
+          <version>${jacoco-maven-plugin.version}</version>
+          <executions>
+            <execution>
+              <id>default-prepare-agent</id>
+              <goals>
+                <goal>prepare-agent</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+
+        <plugin>
+          <!-- Submit code coverage report to Coveralls.io. -->
+          <groupId>org.eluder.coveralls</groupId>
+          <artifactId>coveralls-maven-plugin</artifactId>
+          <version>${coveralls-maven-plugin.version}</version>
+          <configuration>
+            <!--suppress UnresolvedMavenProperty -->
+            <repoToken>${coveralls-repo-token}</repoToken>
+            <!--suppress UnresolvedMavenProperty -->
+            <jacocoReports>${maven.multiModuleProjectDirectory}/datasketches-memory/target/site/jacoco-aggregate/jacoco.xml</jacocoReports>
+          </configuration>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>${maven-compiler-plugin.version}</version>
+          <configuration>
+            <jdkToolchain>
+              <version>${jdk-toolchain.version}</version>
+            </jdkToolchain>
+          </configuration>
+        </plugin>
+
+      </plugins>
+    </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-deploy-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-release-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.rat</groupId>
+        <artifactId>apache-rat-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-source-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.jacoco</groupId>
+        <artifactId>jacoco-maven-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.eluder.coveralls</groupId>
+        <artifactId>coveralls-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+
+  <profiles>
+    <!-- Disable source release assembly for 'apache-release' profile.
+             This is performed from a script outside Maven
+    -->
+    <profile>
+      <id>apache-release</id>
+      <build>
+        <plugins>
+          <plugin>
+            <artifactId>maven-assembly-plugin</artifactId>
+            <version>${maven-assembly-plugin.version}</version>
+            <executions>
+              <execution>
+                <id>source-release-assembly</id>
+                <phase>none</phase>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+
+    <profile>
+      <id>only-eclipse</id>
+      <activation>
+        <property>
+          <name>m2e.version</name>
+        </property>
+      </activation>
+      <build>
+        <pluginManagement>
+          <plugins>
+            <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-remote-resources-plugin</artifactId>
+              <version>${maven-remote-resources-plugin.version}</version>
+              <executions>
+                <execution>
+                  <id>process-resource-bundles</id>
+                  <phase>none</phase>
+                </execution>
+              </executions>
+            </plugin>
+          </plugins>
+        </pluginManagement>
+      </build>
+    </profile>
+
+
+  </profiles>
+
+  <!-- This Maven project is divided into an aggregator project (the root), that manages a group of submodules that
+       inherit configuration from this root module.
+       A multi-module project is used to target different version-specific features of the Java language APIs.
+       Furthermore, it is a structure that is supported in most IDEs allowing minimal disruption to developers that
+       contribute to this project -->
+  <modules>
+    <module>datasketches-memory-java8</module>
+    <module>datasketches-memory-java8-tests</module>
+    <module>datasketches-memory-java9</module>
+    <module>datasketches-memory-java11</module>
+    <module>datasketches-memory</module>
+    <module>datasketches-memory-resources</module>
+  </modules>
+
+</project>

Added: dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/tools/CloverConfig.txt
==============================================================================
--- dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/tools/CloverConfig.txt (added)
+++ dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/tools/CloverConfig.txt Thu Aug 19 22:18:24 2021
@@ -0,0 +1,49 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Clover Config for Eclipse:
+
+At Project Level Properties:
+	Instrumentation:
+		Initstring: Default value
+		Output Folder: ...project output dir(s)
+		Flush Policy: At JVM shutdown ...
+		Misc: Fully qualify ... , Instrument and compile at statement level
+	Contexts:
+		Check: assert statements
+		Add Custom Coverage Context Filter:
+			private-constructor: also see link below
+				Method
+				(.* )?private +[a-zA-Z0-9_$]+ *\( *\).*
+	Source Files
+		Only look ...
+			[check] src/main/java[includes=**/*.java][excludes=]
+			[check] src/test/java[includes=**/*.java][excludes=]
+	Test Classes
+		Assume all source in the specified folders are tests or test utility classes
+			[check] src/test/java
+
+At Clover "down-triangle" menu:
+	Columns:
+		Element
+		% TOTAL Coverage
+		Uncovered Elements: Custom: %UncoveredElements * TotalElements / 100
+		Total Elements
+
+
+
+http://alexruizlog.blogspot.com/2009/04/how-to-make-clover-ignore-private_21.html
\ No newline at end of file

Added: dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/tools/FindBugsExcludeFilter.xml
==============================================================================
--- dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/tools/FindBugsExcludeFilter.xml (added)
+++ dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/tools/FindBugsExcludeFilter.xml Thu Aug 19 22:18:24 2021
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<FindBugsFilter> <!-- memory -->
+
+  <!-- Too many false positives to be useful.  I could not make it happy :( -->
+  <Match>
+    <Bug pattern="SF_SWITCH_NO_DEFAULT" />
+  </Match>
+
+  <Match>   <!-- Exclude for test classes; too many False Positives. -->
+    <Bug pattern="NP_NULL_PARAM_DEREF_NONVIRTUAL" />
+    <Class name="~.*\.*Test" />
+  </Match>
+  
+  <Match>   <!-- Exclude for test classes; too many False Positives. -->
+    <Bug pattern="DLS_DEAD_LOCAL_STORE" />
+    <Class name="~.*\.*Test" />
+  </Match>
+  
+</FindBugsFilter>
+
+
+
+<!--  Examples: -->
+
+<!-- Exclude java.* classes -->
+  <!--
+  <Match>
+    <Package name="java\.*" />
+  </Match>
+-->
+
+  <!-- Exclude test classes -->
+<!-- 
+  <Match>
+    <Class name="~.*\.*Test" />
+  </Match>
+-->
+
+<!--
+     <Match>
+       <Class name="com.foobar.ClassNotToBeAnalyzed" />
+     </Match>
+-->
+<!--
+     <Match>
+       <Class name="com.foobar.ClassWithSomeBugsMatched" />
+       <Bug code="DE,UrF,SIC" />
+     </Match>
+-->
+     <!-- Match all XYZ violations. -->
+<!--
+     <Match>
+       <Bug code="XYZ" />
+     </Match>
+-->
+     <!-- Match all doublecheck violations in these methods of "AnotherClass". -->
+<!--
+     <Match>
+       <Class name="com.foobar.AnotherClass" />
+       <Or>
+         <Method name="nonOverloadedMethod" />
+         <Method name="frob" params="int,java.lang.String" returns="void" />
+         <Method name="blat" params="" returns="boolean" />
+       </Or>
+       <Bug code="DC" />
+     </Match>
+-->
+     <!-- A method with a dead local store false positive (medium priority). -->
+<!--
+     <Match>
+       <Class name="com.foobar.MyClass" />
+       <Method name="someMethod" />
+       <Bug pattern="DLS_DEAD_LOCAL_STORE" />
+       <Priority value="2" />
+     </Match>
+-->

Added: dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/tools/MemoryCheckstyle.xml
==============================================================================
--- dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/tools/MemoryCheckstyle.xml (added)
+++ dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/tools/MemoryCheckstyle.xml Thu Aug 19 22:18:24 2021
@@ -0,0 +1,398 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC
+    "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
+    "https://checkstyle.org/dtds/configuration_1_3.dtd">
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!--
+  MemoryCheckstyle.xml
+
+  Checkstyle is very configurable. Be sure to read the documentation at
+  http://checkstyle.sourceforge.net (or in your downloaded distribution).
+
+  To completely disable a check, comment it out, delete it, or set
+  property name="severity" value="ignore".
+-->
+
+<module name="Checker">
+  <property name="charset" value="UTF-8"/>
+  <property name="severity" value="warning"/>
+  <property name="fileExtensions" value="java"/>
+
+  <module name="BeforeExecutionExclusionFileFilter">
+    <property name="fileNamePattern" value="src[\\/]test[\\/]java[\\/].+$|module\-info\.java.+$"/>
+  </module>
+
+  <module name="FileTabCharacter">
+    <property name="eachLine" value="true"/>
+  </module>
+  
+  <module name="JavadocPackage"/>
+  
+  <module name="NewlineAtEndOfFile">
+    <property name="lineSeparator" value="lf"/>
+  </module>
+  
+  <!-- Size Violations -->
+  <module name="LineLength">
+    <property name="severity" value="warning"/>
+    <property name="max" value="120"/>
+    <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
+    <!-- <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> -->
+  </module>
+  
+  <module name="SuppressWithPlainTextCommentFilter">
+    <property name="offCommentFormat" value="//CHECKSTYLE.OFF\: ([\w\|]+)"/>
+    <property name="onCommentFormat" value="//CHECKSTYLE.ON\: ([\w\|]+)"/>
+    <property name="checkFormat" value="$1"/>
+  </module>
+  
+  <!-- ******************************************************** -->
+  
+  <module name="TreeWalker">
+    
+    <!-- Annotations -->
+    <module name="AnnotationLocation">
+      <property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
+    </module>
+    
+    <module name="AnnotationLocation">
+      <property name="tokens" value="VARIABLE_DEF"/>
+      <property name="allowSamelineMultipleAnnotations" value="true"/>
+    </module>
+
+    <!-- Block Checks -->
+    <module name="EmptyBlock">
+      <property name="severity" value="warning"/>
+      <property name="option" value="TEXT"/>
+      <property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <module name="EmptyCatchBlock">
+      <property name="severity" value="ignore"/>
+      <property name="exceptionVariableName" value="expected"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <module name="LeftCurly">
+      <!-- doesn't allow for if (n == 0) { return 0.0; }, which is readable and not corruptable -->
+      <property name="severity" value="ignore"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <module name="NeedBraces">
+      <property name="allowSingleLineStatement" value="false"/> <!-- default = false -->
+      <property name="allowEmptyLoopBody" value="false"/>       <!-- default = false -->
+    </module>
+    
+    <module name="RightCurly"> 
+      <!-- requires right curly start a new line; alone: on a line alone -->
+      <property name="severity" value="ignore"/>
+      <property name="option" value="alone"/>
+      <property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <!-- Coding -->
+    <module name="FallThrough">
+      <property name="severity" value="warning"/>
+      <property name="reliefPattern" value="fallthru|falls? ?through|FALL[- ]?THROUGH"/>
+      <!-- <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> -->
+    </module>
+    
+    <module name="FinalLocalVariable">
+      <property name="severity" value="warning"/>
+      <property name="tokens" value="VARIABLE_DEF,PARAMETER_DEF"/>
+    </module>
+    
+    <module name="IllegalTokenText">
+      <property name="severity" value="warning"/>
+      <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
+      <property name="format" value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
+      <property name="message" value="Avoid using corresponding octal or Unicode escape."/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <module name="MissingSwitchDefault">
+      <!-- Too many false positives -->
+      <property name="severity" value="ignore"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <module name="MultipleVariableDeclarations">
+      <property name="severity" value="ignore"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <module name="NoFinalizer">
+      <property name="severity" value="ignore"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <module name="OneStatementPerLine">
+      <property name="severity" value="ignore"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <module name="OverloadMethodsDeclarationOrder">
+      <property name="severity" value="ignore"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <module name="VariableDeclarationUsageDistance">
+      <property name="severity" value="ignore"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <!-- Class Design -->
+    <module name="OneTopLevelClass"/>
+    
+    <module name="FinalClass"/>
+    
+    <!-- Imports -->
+    <module name="AvoidStarImport"/>
+    
+    <module name="CustomImportOrder">
+      <property name="specialImportsRegExp" value="org"/>
+      <property name="sortImportsInGroupAlphabetically" value="true"/>
+      <property name="separateLineBetweenGroups" value="true"/>
+      <!-- Google: "STATIC###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE" -->
+      <property name="customImportOrderRules" value="STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE"/>
+    </module>
+    
+    <module name="RedundantImport"/>
+    
+    <module name="UnusedImports"/>
+    
+    <!-- Filters -->
+    <!-- Enable suppression using comments: //CHECKSTYLE.OFF: "RULE" and //CHECKSTYLE.ON: "RULE"
+     You must specify the specific rule, as in: //CHECKSTYLE.OFF: LineLength -->
+    <module name="SuppressionCommentFilter">
+      <property name="offCommentFormat" value="//CHECKSTYLE.OFF\: ([\w\|]+)"/>
+      <property name="onCommentFormat" value="//CHECKSTYLE.ON\: ([\w\|]+)"/>
+      <property name="checkFormat" value="$1"/>
+    </module>
+    
+    <!-- Javadoc Comments -->
+    <!-- JavadocPackage under Checker -->
+    <module name="AtclauseOrder">
+      <property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
+      <property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
+    </module>
+    
+    <module name="JavadocMethod">
+      <property name="scope" value="public"/>
+      <property name="allowMissingParamTags" value="false"/> <!-- default -->
+      <property name="allowMissingReturnTag" value="false"/> <!-- default -->
+      <property name="allowedAnnotations" value="Override, Test"/>
+    </module>
+    
+    <module name="JavadocParagraph"/>
+    
+    <module name="JavadocTagContinuationIndentation">
+      <property name="severity" value="ignore"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+        
+    <module name="NonEmptyAtclauseDescription"/>
+    
+    <module name="SingleLineJavadoc">
+      <property name="ignoreInlineTags" value="false"/>
+    </module>
+    
+    <module name="SummaryJavadocCheck">
+      <property name="severity" value="ignore"/>
+      <property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <!-- Miscellaneous -->
+    <module name="ArrayTypeStyle">
+      <property name="severity" value="ignore"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+
+    <module name="AvoidEscapedUnicodeCharacters">
+      <property name="severity" value="warning"/>
+      <property name="allowEscapesForControlCharacters" value="true"/>
+      <property name="allowByTailComment" value="true"/>
+      <property name="allowNonPrintableEscapes" value="true"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <module name="CommentsIndentation">
+      <property name="severity" value="warning"/>
+      <!-- <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> -->
+    </module>
+    
+    <module name="Indentation">
+      <property name="severity" value="ignore"/>
+      <property name="basicOffset" value="2"/>
+      <property name="braceAdjustment" value="0"/> <!-- default -->
+      <property name="caseIndent" value="2"/>
+      <property name="throwsIndent" value="4"/>
+      <property name="lineWrappingIndentation" value="4"/>
+      <property name="arrayInitIndent" value="2"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <module name="OuterTypeFilename">
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <module name="TodoComment">
+      <property name="severity" value="ignore"/>
+      <property name="format" value="(//TODO)|(//FIXME)"/>
+    </module>
+    
+    <module name="UpperEll">
+      <property name="severity" value="warning"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <!-- Modifiers -->
+    <module name="ModifierOrder">
+      <property name="severity" value="ignore"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    
+    <!-- Naming Conventions -->
+    <module name="AbbreviationAsWordInName">
+      <property name="severity" value="ignore"/>
+      <property name="ignoreFinal" value="false"/>
+      <property name="allowedAbbreviationLength" value="1"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+
+    <module name="ClassTypeParameterName">
+      <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
+      <message key="name.invalidPattern"
+          value="Class type name ''{0}'' must match pattern ''{1}''."/>
+    </module>
+
+    <module name="LocalVariableName">
+      <property name="severity" value="ignore"/>
+      <property name="tokens" value="VARIABLE_DEF"/>
+      <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
+      <property name="allowOneCharVarInForLoop" value="true"/>
+      <message key="name.invalidPattern"
+          value="Local variable name ''{0}'' must match pattern ''{1}''."/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+
+    <module name="MemberName">
+      <property name="severity" value="ignore"/>
+      <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
+      <message key="name.invalidPattern"
+          value="Member name ''{0}'' must match pattern ''{1}''."/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+
+    <module name="MethodName">
+      <property name="severity" value="ignore"/>
+      <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
+      <message key="name.invalidPattern"
+          value="Method name ''{0}'' must match pattern ''{1}''."/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+
+    <module name="MethodTypeParameterName">
+      <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
+      <message key="name.invalidPattern"
+          value="Method type name ''{0}'' must match pattern ''{1}''."/>
+    </module>
+
+    <module name="PackageName">
+      <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
+      <message key="name.invalidPattern"
+          value="Package name ''{0}'' must match pattern ''{1}''."/>
+    </module>
+
+    <module name="ParameterName">
+      <property name="severity" value="ignore"/>
+      <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
+      <message key="name.invalidPattern"
+          value="Parameter name ''{0}'' must match pattern ''{1}''."/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+
+    <module name="TypeName">
+      <message key="name.invalidPattern"
+          value="Type name ''{0}'' must match pattern ''{1}''."/>
+    </module>
+
+    <!-- Regexp -->
+    <module name="Regexp">
+      <property name="severity" value="ignore"/>
+      <property name="format" value="[ \t]+$"/>
+      <property name="illegalPattern" value="true"/>
+      <property name="message" value="Trailing whitespace"/>
+      <property name="ignoreComments" value="true"/>
+    </module>
+    
+    <!-- Whitespace -->
+    <module name="EmptyLineSeparator">
+      <property name="allowNoEmptyLineBetweenFields" value="true"/>
+    </module>
+    
+    <module name="GenericWhitespace">
+      <message key="ws.followed"
+          value="GenericWhitespace ''{0}'' is followed by whitespace."/>
+      <message key="ws.preceded"
+          value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
+      <message key="ws.illegalFollow"
+          value="GenericWhitespace ''{0}'' should followed by whitespace."/>
+      <message key="ws.notPreceded"
+          value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
+    </module>
+    
+    <module name="NoLineWrap"/> <!-- Only for import and package statements -->
+    
+    <module name="MethodParamPad"/>
+    
+    <module name="OperatorWrap">
+      <property name="option" value="NL"/>
+      <property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/>
+    </module>
+    
+    <module name="SeparatorWrap">
+      <property name="tokens" value="DOT"/>
+      <property name="option" value="nl"/>
+    </module>
+    
+    <module name="SeparatorWrap">
+      <property name="tokens" value="COMMA"/>
+      <property name="option" value="EOL"/>
+    </module>
+    
+    <module name="WhitespaceAround">
+      <property name="allowEmptyConstructors" value="true"/>
+      <property name="allowEmptyMethods" value="true"/>
+      <property name="allowEmptyTypes" value="true"/>
+      <property name="allowEmptyLoops" value="true"/>
+      <message key="ws.notPreceded" value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
+      <message key="ws.notFollowed" value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
+    </module>
+
+  </module> <!-- End of TreeWalker -->
+
+</module>

Added: dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/tools/toolchains.xml
==============================================================================
--- dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/tools/toolchains.xml (added)
+++ dev/datasketches/memory/2.0.0-RC1/apache-datasketches-memory-2.0.0-src/tools/toolchains.xml Thu Aug 19 22:18:24 2021
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<toolchains>
+    <toolchain>
+        <type>jdk</type>
+        <provides>
+            <version>1.8</version>
+            <vendor>openjdk</vendor>
+        </provides>
+        <configuration>
+            <jdkHome>${env.JAVA8_HOME}</jdkHome>
+        </configuration>
+    </toolchain>
+    <toolchain>
+        <type>jdk</type>
+        <provides>
+            <version>8</version>
+            <vendor>openjdk</vendor>
+        </provides>
+        <configuration>
+            <jdkHome>${env.JAVA8_HOME}</jdkHome>
+        </configuration>
+    </toolchain>
+    <toolchain>
+        <type>jdk</type>
+        <provides>
+            <version>9</version>
+            <vendor>openjdk</vendor>
+        </provides>
+        <configuration>
+            <jdkHome>${env.JAVA9_HOME}</jdkHome>
+        </configuration>
+    </toolchain>
+    <toolchain>
+        <type>jdk</type>
+        <provides>
+            <version>11</version>
+            <vendor>openjdk</vendor>
+        </provides>
+        <configuration>
+            <jdkHome>${env.JAVA11_HOME}</jdkHome>
+        </configuration>
+    </toolchain>
+</toolchains>
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org