1.0.0
 * Support UDTs in the Bulk Writer (CASSANDRA-19340)
 * Fix bulk reads of multiple tables that potentially have the same data file name (CASSANDRA-19507)
 * Fix XXHash32Digest calculated digest value (CASSANDRA-19500)
 * Report additional bulk analytics job stats for instrumentation (CASSANDRA-19418)
 * Add certificate expiry check to start up validations done in Cassandra Analytics library (CASSANDRA-19424)
 * Use constant reference time during bulk read process (CASSANDRA-19452)
 * Update access of ClearSnapshotStrategy (CASSANDRA-19442)
 * Bulk reader fails to produce a row when regular column values are null (CASSANDRA-19411)
 * Use XXHash32 for digest calculation of SSTables (CASSANDRA-19369)
 * Startup Validation Failures when Checking Sidecar Connectivity (CASSANDRA-19377)
 * No longer need to synchronize on Schema.instance after Cassandra 4.0.12 (CASSANDRA-19351)
 * Upgrade to Cassandra 4.0.12 and remove RowBufferMode and BatchSize options (CASSANDRA-19334)
 * Improve logging for bulk writes and on task failures (CASSANDRA-19331)
 * Allow setting TTL for snapshots created by Analytics bulk reader (CASSANDRA-19273)
 * Fix range split and use open-closed range notation consistently (CASSANDRA-19325)
 * Add integration tests using in-jvm-dtest to cover blocklisted instances (CASSANDRA-19272)
 * Fix bulk writer consistency level validations for blocked instances (CASSANDRA-19257)
 * Column type mapping error for timestamp type during bulk writes (CASSANDRA-19223)
 * Speed up integration tests (CASSANDRA-19251)
 * Make bulk writer resilient to cluster resize events (CASSANDRA-18852)
 * Remove write option VALIDATE_SSTABLES to enforce validation (CASSANDRA-19199)
 * Fix bulk writing when using identifiers that need quotes (CASSANDRA-19031)
 * Fix bulk reading when using identifiers that need quotes (CASSANDRA-19024)
 * Remove unused dead code (CASSANDRA-19148)
 * Get Sidecar port through CassandraContext for more flexibility (CASSANDRA-19903)
 * Log start-up validation result to a single report (CASSANDRA-18916)
 * Use in-jvm dtest framework from Sidecar for testing (CASSANDRA-18759)
 * Cassandra Analytics Start-Up Validation (CASSANDRA-18810)
 * Expose per partition on-disk usage through new DataFrame that utilizes the Index.db SSTable file components (CASSANDRA-18683)
 * Fix bulk writes with Buffered RowBufferMode (CASSANDRA-18692)
 * Minor Refactoring to Improve Code Reusability (CASSANDRA-18684)
 * Fix cassandra-analytics-core-example (CASSANDRA-18662)
 * Added caching of Node Settings to improve efficiency (CASSANDRA-18633)
 * Upgrade to JUnit 5 (CASSANDRA-18599)
 * Add support for TTL & Timestamps for bulk writes (CASSANDRA-18605)
 * Add circleci configuration yaml for Cassandra Analytics (CASSANDRA-18578)
 * Provide a SecretsProvider interface to abstract the secret provisioning (CASSANDRA-18545)
 * Add the .asf.yaml file (CASSANDRA-18548)
