This is an automated email from the ASF dual-hosted git repository.

github-actions[bot] pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/datafusion-site.git


The following commit(s) were added to refs/heads/asf-staging by this push:
     new c5c8ca1  Commit build products
c5c8ca1 is described below

commit c5c8ca16fc29a6a69fcb3dd2035bbf298894d51f
Author: Build Pelican (action) <[email protected]>
AuthorDate: Thu Aug 6 19:36:44 2026 +0000

    Commit build products
---
 blog/2026/08/07/datafusion-comet-1.0.0/index.html | 273 ++++++----------------
 blog/feeds/all-en.atom.xml                        | 223 ++++--------------
 blog/feeds/blog.atom.xml                          | 223 ++++--------------
 blog/feeds/pmc.atom.xml                           | 225 ++++--------------
 4 files changed, 203 insertions(+), 741 deletions(-)

diff --git a/blog/2026/08/07/datafusion-comet-1.0.0/index.html 
b/blog/2026/08/07/datafusion-comet-1.0.0/index.html
index 0474cdb..bbe879c 100644
--- a/blog/2026/08/07/datafusion-comet-1.0.0/index.html
+++ b/blog/2026/08/07/datafusion-comet-1.0.0/index.html
@@ -54,19 +54,20 @@
 
         <aside class="toc-container d-md-none mb-2">
           <div class="toc"><span class="toctitle">Contents</span><ul>
-<li><a href="#the-road-to-10">The Road to 1.0</a></li>
-<li><a href="#what-10-means">What 1.0 Means</a></li>
-<li><a href="#native-expression-performance">Native Expression 
Performance</a></li>
-<li><a href="#correctness">Correctness</a></li>
-<li><a href="#new-expression-and-aggregate-support">New Expression and 
Aggregate Support</a></li>
-<li><a href="#native-sampling">Native Sampling</a></li>
+<li><a href="#the-road-to-10">The Road to 1.0</a><ul>
+<li><a href="#correctness-testing">Correctness Testing</a></li>
+<li><a href="#performance">Performance</a></li>
+<li><a href="#codegen-dispatch">Codegen Dispatch</a></li>
+</ul>
+</li>
+<li><a href="#improvements-since-0171">Improvements since 0.17.1</a><ul>
 <li><a href="#experimental-pyarrow-udf-support">Experimental PyArrow UDF 
Support</a></li>
-<li><a href="#iceberg">Iceberg</a></li>
-<li><a href="#native-parquet-io-and-cloud">Native Parquet I/O and 
Cloud</a></li>
-<li><a href="#execution-and-fallback-improvements">Execution and Fallback 
Improvements</a></li>
-<li><a href="#shuffle-improvements">Shuffle Improvements</a></li>
-<li><a href="#configuration-changes">Configuration Changes</a></li>
-<li><a href="#documentation">Documentation</a></li>
+<li><a href="#new-expression-and-aggregate-support">New Expression and 
Aggregate Support</a></li>
+<li><a href="#faster-parquet-scans">Faster Parquet Scans</a></li>
+<li><a href="#iceberg-table-format-v3">Iceberg Table Format V3</a></li>
+<li><a href="#native-expression-performance">Native Expression 
Performance</a></li>
+</ul>
+</li>
 <li><a href="#deprecation-notice">Deprecation Notice</a></li>
 <li><a href="#compatibility">Compatibility</a></li>
 <li><a href="#get-started-with-comet-100">Get Started with Comet 1.0.0</a></li>
@@ -100,112 +101,36 @@ improved performance and efficiency without requiring 
any code changes.</p>
 contributors. See the <a 
href="https://github.com/apache/datafusion-comet/blob/main/docs/source/changelog/1.0.0.md";>change
 log</a> for the full list of changes.</p>
 <h2 id="the-road-to-10">The Road to 1.0<a class="headerlink" 
href="#the-road-to-10" title="Permanent link">¶</a></h2>
 <p>Comet was <a 
href="https://datafusion.apache.org/blog/2024/03/06/comet-donation/";>donated</a>
 to the Apache DataFusion project in March 2024 and cut its first release, 
0.1.0, five
-months later with 15 data types, 13 operators, 106 expressions, and a "modest 
performance speedup." The
-sixteen major releases between then and now cover a lot of ground:</p>
-<ul>
-<li><strong>Query coverage went from a handful of operators to the shape of a 
real Spark query.</strong> Native
-  SortMergeJoin, HashJoin, and BroadcastHashJoin landed early; native columnar 
and native shuffle,
-  broadcast nested loop joins, native window functions, native sampling, and 
mixed partial/final aggregation
-  followed. Supported expressions grew from 106 at 0.1.0 to more than 400 in 
1.0.0, and the introduction of the JVM
-  codegen dispatcher in 0.17.0 gave Comet a way to keep unsupported 
expressions Arrow-native by running
-  Spark's own generated code inside the pipeline rather than falling back to 
row-based execution.</li>
-<li><strong>Spark support broadened.</strong> The 0.1.0 release targeted Spark 
3.3, 3.4, and 3.5, with experimental 4.0. The
-  1.0 line drops 3.3, adds 4.1, and ships an experimental 4.2 profile. ANSI 
semantics — on by default in
-  Spark 4 — moved from partial to a supported default across the natively 
implemented surface.</li>
-<li><strong>The ecosystem story filled in.</strong> Native Iceberg support 
arrived in 0.10.0 and has been extended through
-  1.11 and format V3, native Parquet writes and CSV reads landed as 
experimental features and matured,
-  Azure joined S3 on the native cloud path, and 1.0.0 adds experimental 
accelerated PyArrow UDFs alongside the
-  Java and Scala UDF support that shipped in 0.17.0.</li>
-<li><strong>Correctness rigor grew alongside the surface area.</strong> Early 
releases relied on fuzz testing to surface
-  divergences; later releases added a full Spark SQL test-suite run against 
every supported Spark version,
-  followed by AI-assisted expression audits comparing Comet's behavior against 
every supported Spark version
-  edge case by edge case. 1.0 ships with every known open correctness gap 
documented in the compatibility
-  guide.</li>
-<li><strong>Performance moved from "modest speedup" to workload-level 
wins.</strong> TPC-DS at 1TB has become the reference
-  workload, with successive releases removing FFI round trips, caching Parquet 
metadata, shrinking plan
-  serialization, and tightening the shuffle write path. 0.17.0 alone was ~9% 
faster than 0.16.0 on TPC-DS
-  1TB, and the per-expression optimization work in 1.0 continues that 
trajectory.</li>
-</ul>
-<h2 id="what-10-means">What 1.0 Means<a class="headerlink" 
href="#what-10-means" title="Permanent link">¶</a></h2>
-<p>Beyond the accumulated features, 1.0 is where the project commits to being 
something you can build on:</p>
-<ul>
-<li><strong>Broad Spark coverage.</strong> Comet supports Apache Spark 3.4.3, 
3.5.9, 4.0.4, and 4.1.3 out of the same
-  codebase, with dedicated Maven profiles, shim sources, and CI matrices for 
each, plus an experimental
-  Spark 4.2 profile for early evaluation. A published Spark version adoption 
and support-lifetime policy
-  now states how long each Spark minor stays supported.</li>
-<li><strong>ANSI SQL by default.</strong> Spark 4 enables ANSI semantics by 
default. Comet implements ANSI behavior for the
-  expressions it supports natively, including arithmetic overflow checks, ANSI 
cast behavior, and <code>try_*</code>
-  variants, so ANSI workloads keep accelerating rather than falling back.</li>
-<li><strong>A correctness harness, not just unit tests.</strong> Comet runs 
the full Apache Spark SQL test suite through its
-  native execution path against every supported Spark version. Running Spark's 
own correctness tests is what
-  surfaces semantic shifts before they reach user workloads, and it is the 
foundation of the confidence behind
-  a 1.0 release.</li>
-<li><strong>A stable release line going forward.</strong> With 1.0, the 
project commits to semantic versioning. Because Comet
-  is a plugin rather than a library, its configuration is its primary API 
surface, so <code>spark.comet.*</code> keys, an
-  explicitly enumerated public Java and Scala API, and query results 
documented as Compatible are all part of
-  the compatibility surface. Behavior changes in a minor release now require a 
<code>spark.comet.legacy.*</code> key that
-  restores the previous behavior, and each release records its behavior 
changes in a user-facing upgrade
-  guide. Correctness fixes are exempt from being treated as breaking changes. 
The first deprecations under
-  that policy are announced in this release (see <a 
href="#deprecation-notice">Deprecation Notice</a> below).</li>
-<li><strong>Documented limitations.</strong> Every open correctness issue is 
now surfaced in the generated compatibility
-  guide, down to the expression level, so you can see where Comet is known to 
diverge from Spark before you
-  hit it in production rather than after.</li>
-</ul>
-<p>The rest of this post covers what is new since 0.17.0.</p>
-<h2 id="native-expression-performance">Native Expression Performance<a 
class="headerlink" href="#native-expression-performance" title="Permanent 
link">¶</a></h2>
-<p>A large share of this release is dedicated to making Comet's native scalar 
expressions faster. These kernels
-run per-row or per-batch, so improvements here compound across every query 
that uses them. Expressions with
-optimized implementations in this release include:</p>
-<ul>
-<li><strong>Casts</strong> between numeric, string, decimal, and date types, 
including a faster float-to-decimal cast, an
-  optimized integer-to-integer cast, shared no-overflow fast paths in 
<code>CheckOverflow</code> and
-  <code>DecimalRescaleCheckOverflow</code>, and a 
<code>cast_binary_to_string</code> that is up to 27x faster on binary-format
-  styles.</li>
-<li><strong>JSON, regex, and URL parsing</strong>: 
<code>get_json_object</code>, <code>regexp_extract</code>, and 
<code>parse_url</code>.</li>
-<li><strong>Date/time and decimal kernels</strong>: <code>date_trunc</code>, 
<code>spark_ceil</code>, and a vectorized 
<code>spark_unscaled_value</code>.</li>
-<li><strong>String and array kernels</strong>: <code>lpad</code>, 
<code>unhex</code>, <code>size</code>, <code>arrays_overlap</code>, 
<code>escape_string</code>, and the <code>try_*</code>
-  arithmetic kernel.</li>
-</ul>
-<p>To make this kind of work repeatable, the release also adds a scalar 
expression optimization guide
-documenting how to benchmark a kernel, keep its output bit-identical to Spark, 
and gate changes on a
-no-regression check.</p>
-<p>Parquet reads pick up several improvements as well. Full Parquet metadata, 
including the page index, is now
-cached via DataFusion's <code>CachedParquetFileReaderFactory</code>; identity 
casts are unwrapped in the schema adapter
-so Parquet statistics pruning can engage; filter pushdown configuration has 
been revised; the native scan
-passes a metadata size hint so a single read usually captures the footer; and 
the native Parquet scan seeds
-its reader options from the session config so Parquet settings you already set 
take effect.</p>
-<p>Query planning and plan serialization also got cheaper. 
<code>QueryContext</code> SQL text is now interned into a
-per-plan pool, which makes serialized plans up to 20x smaller on TPC-DS — 
every plan crosses the JNI
-boundary, so this shrinks per-query overhead across the board. Plan-data 
injection is now an O(1) lookup by
-operator kind and no longer rebuilds operators it does not touch. Comet also 
makes far fewer timer calls in
-the native execution loop.</p>
-<h2 id="correctness">Correctness<a class="headerlink" href="#correctness" 
title="Permanent link">¶</a></h2>
-<p>Correctness fixes have been a regular part of every Comet release, but for 
1.0 we made an extra push to
-clear out the bulk of the known issues before drawing a line under the stable 
release. This release fixes
-roughly 30 divergences from Spark, spanning casts, ANSI error semantics, 
wrong-result bugs, string and
-encoding handling, collations, and error reporting. Most were found by running 
extensive AI-assisted audit
-sweeps of the code base, comparing Comet's expression implementations with all 
supported versions of Spark.
-See the <a 
href="https://github.com/apache/datafusion-comet/blob/main/docs/source/changelog/1.0.0.md";>change
 log</a> for the full list; two representative fixes give a sense of the shape 
of the work:</p>
+months later with support for 13 operators, and 106 expressions.</p>
+<p>Comet 1.0.0 now supports more than 400 expressions, but that isn't the only 
way the project has grown over this time.</p>
+<p>Here's a recap of some of the main advances over the past two years</p>
+<h3 id="correctness-testing">Correctness Testing<a class="headerlink" 
href="#correctness-testing" title="Permanent link">¶</a></h3>
+<p>It is important that queries accelerated by Comet produce the same results 
as Spark. Correctness checking has always been a large effort in Comet 
development, but the approach has evolved over time.</p>
 <ul>
-<li><strong>Whitespace trimming in string-to-numeric casts.</strong> Casts to 
<code>boolean</code>, integral types, <code>float</code>/<code>double</code>,
-  and <code>decimal</code> now use Spark's exact trim rules. Comet's kernels 
had used four different trim sets, three of
-  them wrong, so results diverged in both directions — returning null where 
Spark parses a value, and
-  returning a value where Spark returns null.</li>
-<li><strong>ANSI errors swallowed by null short-circuit.</strong> The codegen 
dispatcher's null short-circuit no longer
-  swallows errors Spark raises. Spark evaluates null-intolerant expressions 
per node and left to right, so
-  short-circuiting on the union of input ordinals skipped subtrees Spark would 
have evaluated, losing their
-  errors. Roughly 70 built-in expressions route through this dispatcher and 
ANSI is on by default in Spark 4,
-  so this affected a wide surface.</li>
+<li>Comet has always run Spark's own test suite with Comet enabled, providing 
more than 24,000 unit tests effectively for free. These tests run in Comet's CI 
for all supported Spark versions.</li>
+<li>Scala tests: Comet has Scala tests that run queries end to end with Comet 
enabled vs disabled and ensure that the results match</li>
+<li>Fuzz testing: Many of the scala tests use a fuzz testing approach to 
generate randomized data that queries run against, helping to catch regressions 
around edge cases such as nulls, NaN, Infinity, and timezone issues</li>
+<li>Comet SQL Tests: In an effort to make it easier to write tests, Comet now 
provides a SQL-based testing approach that is inspired by sqllogictest</li>
+<li>Generative AI: More recently, Comet has taken advantage of agentic skills 
to perform audit sweeps of ll expressions, comapring the implementation to 
Spark's souce code and ensuring that Comet has tests covering all important 
edge cases</li>
 </ul>
-<p>Alongside the bug fixes, Comet also adds conservative fallbacks where 
native behavior could not be made to
-match — decimal <code>SUM</code> / <code>AVG</code> over sliding window 
frames, <code>FromUnixTime</code> with a non-default format, and a
-handful of others — and falls back for predicates and datetime expressions 
under non-default collations
-rather than risking a wrong result.</p>
-<h2 id="new-expression-and-aggregate-support">New Expression and Aggregate 
Support<a class="headerlink" href="#new-expression-and-aggregate-support" 
title="Permanent link">¶</a></h2>
-<p>This release expands the set of Spark expressions and aggregates that run 
natively:</p>
+<h3 id="performance">Performance<a class="headerlink" href="#performance" 
title="Permanent link">¶</a></h3>
+<p>The early Comet releases provided a very modest speedup and the published 
benchmark results were based on running TPC workloads at small scale factors on 
a single node. There are now independent benchmark results published by AWS 
Labs that show significant speedups for TPC-DS @ 3TB running in EKS.</p>
+<h3 id="codegen-dispatch">Codegen Dispatch<a class="headerlink" 
href="#codegen-dispatch" title="Permanent link">¶</a></h3>
+<p>Matt TBD</p>
+<h2 id="improvements-since-0171">Improvements since 0.17.1<a 
class="headerlink" href="#improvements-since-0171" title="Permanent 
link">¶</a></h2>
+<p>The rest of this post covers what is new since the 0.17.1 release.</p>
+<h3 id="experimental-pyarrow-udf-support">Experimental PyArrow UDF Support<a 
class="headerlink" href="#experimental-pyarrow-udf-support" title="Permanent 
link">¶</a></h3>
+<p>This release adds experimental support for accelerated PyArrow UDFs, 
allowing PyArrow-based user-defined
+functions to participate in native execution instead of forcing a fallback to 
Spark. When the feature is
+disabled, Comet now hints at the native PyArrow UDF path in its fallback 
reasons so users know the option
+exists. This is an early-stage feature and we welcome feedback from users 
experimenting with it.</p>
+<h3 id="new-expression-and-aggregate-support">New Expression and Aggregate 
Support<a class="headerlink" href="#new-expression-and-aggregate-support" 
title="Permanent link">¶</a></h3>
+<p>This release expands the set of Spark expressions and aggregates that are 
accelerated by Comet:</p>
 <ul>
 <li><strong>Aggregates</strong>: <code>approx_percentile</code> / 
<code>percentile_approx</code>, exact <code>percentile</code> / 
<code>median</code>,
-  <code>approx_count_distinct</code>, and native <code>collect_list</code> / 
<code>array_agg</code>.</li>
+  <code>approx_count_distinct</code>, and native <code>collect_list</code> / 
<code>array_agg</code>.
+  <strong>Cast</strong>: Cast expressions where the native implementation is 
marked as incompatible or unsupported 
+  are now routed through codegen dispatch.</li>
 <li><strong>Grouping</strong>: <code>grouping()</code> and 
<code>grouping_id()</code>.</li>
 <li><strong>Intervals</strong>: interval types via 
<code>make_ym_interval</code> and <code>make_dt_interval</code>, 
<code>CalendarIntervalType</code>,
   <code>multiply_dt_interval</code>, and interval codegen dispatch for nested 
values and native shuffle.</li>
@@ -217,89 +142,30 @@ rather than risking a wrong result.</p>
   <code>PreciseTimestampConversion</code> for native time-window grouping.</li>
 <li><strong>Windows</strong>: extended native window function support and 
Spark 4 decimal window average.</li>
 </ul>
-<h2 id="native-sampling">Native Sampling<a class="headerlink" 
href="#native-sampling" title="Permanent link">¶</a></h2>
-<p>Spark's <code>SampleExec</code> now runs natively when sampling without 
replacement, covering <code>DataFrame.sample</code>, SQL
-<code>TABLESAMPLE</code>, and <code>DataFrame.randomSplit</code>. The native 
operator ports Spark's <code>BernoulliCellSampler</code> on top of
-<code>XorShiftRandom</code> and seeds per partition exactly as Spark does, so 
it selects the same rows for a given seed —
-sampling stays reproducible whether or not Comet is enabled. Sampling with 
replacement still falls back to
-Spark.</p>
-<h2 id="experimental-pyarrow-udf-support">Experimental PyArrow UDF Support<a 
class="headerlink" href="#experimental-pyarrow-udf-support" title="Permanent 
link">¶</a></h2>
-<p>This release adds experimental support for accelerated PyArrow UDFs, 
allowing PyArrow-based user-defined
-functions to participate in native execution instead of forcing a fallback to 
Spark. When the feature is
-disabled, Comet now hints at the native PyArrow UDF path in its fallback 
reasons so users know the option
-exists. This is an early-stage feature and we welcome feedback from users 
experimenting with it.</p>
-<h2 id="iceberg">Iceberg<a class="headerlink" href="#iceberg" title="Permanent 
link">¶</a></h2>
+<h3 id="faster-parquet-scans">Faster Parquet Scans<a class="headerlink" 
href="#faster-parquet-scans" title="Permanent link">¶</a></h3>
+<p>Parquet reads pick up several improvements as well. Full Parquet metadata, 
including the page index, is now
+cached via DataFusion's <code>CachedParquetFileReaderFactory</code>; identity 
casts are unwrapped in the schema adapter
+so Parquet statistics pruning can engage; filter pushdown configuration has 
been revised; the native scan
+passes a metadata size hint so a single read usually captures the footer; and 
the native Parquet scan seeds
+its reader options from the session config so Parquet settings you already set 
take effect.</p>
+<h3 id="iceberg-table-format-v3">Iceberg Table Format V3<a class="headerlink" 
href="#iceberg-table-format-v3" title="Permanent link">¶</a></h3>
 <p>Comet now supports Iceberg 1.11 and Iceberg table format V3 (with native 
table decryption for V3 tables and
 fallback to Spark for other V3 features). The native Iceberg scan supports the 
<code>_pos</code>, <code>_spec</code>, <code>_file</code>, and
 <code>_partition</code> metadata columns, sizes delete files correctly to 
avoid dropped deletes, disambiguates scans that
 share a <code>metadata_location</code>, and dedupes residuals and delete files 
in the native scan serde. A prior case
-where Iceberg native scan exchange reuse with different pushed filters could 
produce wrong results is also
-fixed.</p>
-<h2 id="native-parquet-io-and-cloud">Native Parquet I/O and Cloud<a 
class="headerlink" href="#native-parquet-io-and-cloud" title="Permanent 
link">¶</a></h2>
-<p>Native Parquet writes now support gzip compression, and the native Parquet 
scan supports Azure authentication,
-complementing the existing S3 credential support.</p>
-<h2 id="execution-and-fallback-improvements">Execution and Fallback 
Improvements<a class="headerlink" href="#execution-and-fallback-improvements" 
title="Permanent link">¶</a></h2>
-<ul>
-<li><strong>Mixed partial/final aggregation.</strong> <code>sum</code> and 
non-decimal <code>avg</code> can now run with the partial and final
-  aggregation stages split across Spark and Comet, keeping more aggregation 
plans partially native.</li>
-<li><strong>Codegen dispatch for opt-in serdes.</strong> Expressions reported 
as <code>Unsupported</code> can now route through JVM
-  codegen dispatch for opt-in serdes, and native opt-in expressions surface as 
compatible-by-default with a
-  <code>COMET-INFO</code> plan hint. Casts join this path: an incompatible or 
unsupported cast now runs Spark's own
-  generated code inside the Comet pipeline instead of pulling the whole 
operator back to Spark, so one
-  awkward cast no longer de-accelerates a query. <code>sort_array</code> under 
strict floating-point mode and <code>concat</code>
-  under non-<code>UTF8_BINARY</code> collations opt in the same way.</li>
-<li><strong>JVM columnar-to-row by default.</strong> Isolated benchmarking 
showed the native columnar-to-row converter is
-  roughly 3.7x slower per row than the JVM implementation at the default batch 
size — and up to 15.7x slower
-  for small batches — because of a fixed per-batch JNI and FFI cost, with no 
end-to-end benefit in TPC-DS
-  runs. It is now disabled by default.</li>
-<li><strong>Clearer fallback reasons.</strong> Unsupported scalar serde cases 
are reported in the support level,
-  mixed-execution fallback messages name the incompatible aggregate functions, 
unsupported metadata column
-  names appear in fallback reasons, and the spurious "WriteFilesExec is not 
supported" message is suppressed.</li>
-<li><strong>Expression coverage in extended explain.</strong> The extended 
explain summary previously reported operator
-  coverage but said nothing about expressions. It now ends with a line such as 
<code>Comet accelerated 14
-  expressions (14 native, 1 codegen dispatch)</code>, so you can see how much 
of a plan's expression evaluation
-  runs in native DataFusion kernels versus Spark's generated code inside the 
dispatcher.</li>
-<li><strong>Quieter logs and runtime cleanup.</strong> Logging levels on 
frequent call sites have been lowered so Comet no
-  longer floods executor logs at default settings, and the Tokio runtime is 
now released on driver and
-  executor exit.</li>
-</ul>
-<h2 id="shuffle-improvements">Shuffle Improvements<a class="headerlink" 
href="#shuffle-improvements" title="Permanent link">¶</a></h2>
-<ul>
-<li><strong>Native shuffle memory cap.</strong> A new 
<code>spark.comet.shuffle.maxBufferBytes</code> config caps native shuffle 
writer
-  memory to bound worst-case usage.</li>
-<li><strong>Shuffle IPC schema encoding.</strong> The IPC schema is now 
encoded once per writer instead of per block,
-  cutting per-batch shuffle overhead.</li>
-<li><strong>BatchCoalescer bypass.</strong> Shuffle bypasses the 
<code>BatchCoalescer</code> for batches that are already appropriately
-  sized.</li>
-<li><strong>Single-partition shuffle.</strong> A redundant concatenation layer 
has been removed from the single-partition
-  path.</li>
-</ul>
-<h2 id="configuration-changes">Configuration Changes<a class="headerlink" 
href="#configuration-changes" title="Permanent link">¶</a></h2>
-<p>Because configuration is Comet's primary API surface, 1.0 is the release 
where the naming gets cleaned up.
-Every rename below registers the old key as an alias, so existing 
configurations keep working and log a
-deprecation warning when an old key is read:</p>
+where Iceberg native scan exchange reuse with different pushed filters could 
produce wrong results is also</p>
+<h3 id="native-expression-performance">Native Expression Performance<a 
class="headerlink" href="#native-expression-performance" title="Permanent 
link">¶</a></h3>
+<p>Many native expression implementations have been optimized to more 
efficiently leverage Arrow kernels or to avoid per-row builders.</p>
 <ul>
-<li><strong>Unified shuffle prefix.</strong> Shuffle configs were spread 
across four disjoint prefixes
-  (<code>spark.comet.exec.shuffle.*</code>, 
<code>spark.comet.columnar.shuffle.*</code>, 
<code>spark.comet.native.shuffle.*</code>,
-  <code>spark.comet.shuffle.*</code>). They now all live under 
<code>spark.comet.shuffle.*</code>, with <code>.jvm.</code> and 
<code>.native.</code>
-  sub-namespaces matching the <code>spark.comet.shuffle.mode</code> value you 
already set.</li>
-<li><strong>Grouped explain configs.</strong> The orphan explain-related 
configs are collected under a single
-  <code>spark.comet.explain.*</code> prefix, and the PyArrow UDF config is 
renamed to <code>pyarrowUDF</code> for consistency.</li>
-<li><strong><code>spark.comet.version</code>.</strong> The loaded Comet build 
version is now exposed as a runtime config, so you can
-  confirm which Comet a cluster is actually running with 
<code>spark.conf.get</code> or <code>SET</code>.</li>
-<li><strong>Removed dead configs.</strong> The Parquet parallel-IO knobs, 
<code>spark.comet.use.lazyMaterialization</code>, and
-  <code>spark.comet.exceptionOnDatetimeRebase</code> had no remaining effect 
and were misleading anyone tuning against
-  them.</li>
-<li><strong>Removed async columnar shuffle.</strong> The 
<code>spark.comet.columnar.shuffle.async.*</code> path was off by default and
-  untested, and has been removed rather than carried into a stable release 
line.</li>
+<li><strong>Casts</strong> between numeric, string, decimal, and date types, 
including a faster float-to-decimal cast, an
+  optimized integer-to-integer cast, shared no-overflow fast paths in 
<code>CheckOverflow</code> and
+  <code>DecimalRescaleCheckOverflow</code>, and a 
<code>cast_binary_to_string</code> that is up to 27x faster on binary-format
+  styles.</li>
+<li><strong>JSON, regex, and URL parsing</strong>: 
<code>get_json_object</code>, <code>regexp_extract</code>, and 
<code>parse_url</code>.</li>
+<li><strong>Date/time and decimal kernels</strong>: <code>date_trunc</code>, 
<code>spark_ceil</code>, and a vectorized 
<code>spark_unscaled_value</code>.</li>
+<li><strong>String and array kernels</strong>: <code>lpad</code>, 
<code>unhex</code>, <code>size</code>, <code>arrays_overlap</code>, 
<code>escape_string</code>, and the <code>try_*</code>
+  arithmetic kernel.</li>
 </ul>
-<h2 id="documentation">Documentation<a class="headerlink" 
href="#documentation" title="Permanent link">¶</a></h2>
-<p>The documentation received a substantial overhaul for 1.0: a design refresh 
of the docs site, versioned user
-guides with captioned sidebar sections, and a set of accessibility and 
navigation fixes. The
-supported-expressions page now shows how each expression is implemented — 
native, codegen dispatch, or hybrid
-— generated from the planner itself rather than maintained by hand. An 
expanded tuning guide covers the
-performance and memory configs that matter in practice, and there is an 
updated post-1.0 roadmap and a new
-blog posts and talks page.</p>
 <h2 id="deprecation-notice">Deprecation Notice<a class="headerlink" 
href="#deprecation-notice" title="Permanent link">¶</a></h2>
 <p>With the move to a stable 1.0 release line, Comet begins deprecating older 
platforms under semantic
 versioning:</p>
@@ -355,19 +221,20 @@ to get up and running, then point Comet at your existing 
Spark workloads and see
 </div>      </div>
       <aside class="toc-container d-none d-md-block col-md-4 col-xl-3 ms-xl-2">
         <div class="toc"><span class="toctitle">Contents</span><ul>
-<li><a href="#the-road-to-10">The Road to 1.0</a></li>
-<li><a href="#what-10-means">What 1.0 Means</a></li>
-<li><a href="#native-expression-performance">Native Expression 
Performance</a></li>
-<li><a href="#correctness">Correctness</a></li>
-<li><a href="#new-expression-and-aggregate-support">New Expression and 
Aggregate Support</a></li>
-<li><a href="#native-sampling">Native Sampling</a></li>
+<li><a href="#the-road-to-10">The Road to 1.0</a><ul>
+<li><a href="#correctness-testing">Correctness Testing</a></li>
+<li><a href="#performance">Performance</a></li>
+<li><a href="#codegen-dispatch">Codegen Dispatch</a></li>
+</ul>
+</li>
+<li><a href="#improvements-since-0171">Improvements since 0.17.1</a><ul>
 <li><a href="#experimental-pyarrow-udf-support">Experimental PyArrow UDF 
Support</a></li>
-<li><a href="#iceberg">Iceberg</a></li>
-<li><a href="#native-parquet-io-and-cloud">Native Parquet I/O and 
Cloud</a></li>
-<li><a href="#execution-and-fallback-improvements">Execution and Fallback 
Improvements</a></li>
-<li><a href="#shuffle-improvements">Shuffle Improvements</a></li>
-<li><a href="#configuration-changes">Configuration Changes</a></li>
-<li><a href="#documentation">Documentation</a></li>
+<li><a href="#new-expression-and-aggregate-support">New Expression and 
Aggregate Support</a></li>
+<li><a href="#faster-parquet-scans">Faster Parquet Scans</a></li>
+<li><a href="#iceberg-table-format-v3">Iceberg Table Format V3</a></li>
+<li><a href="#native-expression-performance">Native Expression 
Performance</a></li>
+</ul>
+</li>
 <li><a href="#deprecation-notice">Deprecation Notice</a></li>
 <li><a href="#compatibility">Compatibility</a></li>
 <li><a href="#get-started-with-comet-100">Get Started with Comet 1.0.0</a></li>
diff --git a/blog/feeds/all-en.atom.xml b/blog/feeds/all-en.atom.xml
index b9fa4fa..409a0da 100644
--- a/blog/feeds/all-en.atom.xml
+++ b/blog/feeds/all-en.atom.xml
@@ -47,112 +47,36 @@ improved performance and efficiency without requiring any 
code changes.&lt;/p&gt
 contributors. See the &lt;a 
href="https://github.com/apache/datafusion-comet/blob/main/docs/source/changelog/1.0.0.md"&gt;change
 log&lt;/a&gt; for the full list of changes.&lt;/p&gt;
 &lt;h2 id="the-road-to-10"&gt;The Road to 1.0&lt;a class="headerlink" 
href="#the-road-to-10" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;Comet was &lt;a 
href="https://datafusion.apache.org/blog/2024/03/06/comet-donation/"&gt;donated&lt;/a&gt;
 to the Apache DataFusion project in March 2024 and cut its first release, 
0.1.0, five
-months later with 15 data types, 13 operators, 106 expressions, and a "modest 
performance speedup." The
-sixteen major releases between then and now cover a lot of ground:&lt;/p&gt;
+months later with support for 13 operators, and 106 expressions.&lt;/p&gt;
+&lt;p&gt;Comet 1.0.0 now supports more than 400 expressions, but that isn't 
the only way the project has grown over this time.&lt;/p&gt;
+&lt;p&gt;Here's a recap of some of the main advances over the past two 
years&lt;/p&gt;
+&lt;h3 id="correctness-testing"&gt;Correctness Testing&lt;a class="headerlink" 
href="#correctness-testing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;It is important that queries accelerated by Comet produce the same 
results as Spark. Correctness checking has always been a large effort in Comet 
development, but the approach has evolved over time.&lt;/p&gt;
 &lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Query coverage went from a handful of operators to the 
shape of a real Spark query.&lt;/strong&gt; Native
-  SortMergeJoin, HashJoin, and BroadcastHashJoin landed early; native columnar 
and native shuffle,
-  broadcast nested loop joins, native window functions, native sampling, and 
mixed partial/final aggregation
-  followed. Supported expressions grew from 106 at 0.1.0 to more than 400 in 
1.0.0, and the introduction of the JVM
-  codegen dispatcher in 0.17.0 gave Comet a way to keep unsupported 
expressions Arrow-native by running
-  Spark's own generated code inside the pipeline rather than falling back to 
row-based execution.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Spark support broadened.&lt;/strong&gt; The 0.1.0 
release targeted Spark 3.3, 3.4, and 3.5, with experimental 4.0. The
-  1.0 line drops 3.3, adds 4.1, and ships an experimental 4.2 profile. ANSI 
semantics — on by default in
-  Spark 4 — moved from partial to a supported default across the natively 
implemented surface.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;The ecosystem story filled in.&lt;/strong&gt; Native 
Iceberg support arrived in 0.10.0 and has been extended through
-  1.11 and format V3, native Parquet writes and CSV reads landed as 
experimental features and matured,
-  Azure joined S3 on the native cloud path, and 1.0.0 adds experimental 
accelerated PyArrow UDFs alongside the
-  Java and Scala UDF support that shipped in 0.17.0.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Correctness rigor grew alongside the surface 
area.&lt;/strong&gt; Early releases relied on fuzz testing to surface
-  divergences; later releases added a full Spark SQL test-suite run against 
every supported Spark version,
-  followed by AI-assisted expression audits comparing Comet's behavior against 
every supported Spark version
-  edge case by edge case. 1.0 ships with every known open correctness gap 
documented in the compatibility
-  guide.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Performance moved from "modest speedup" to 
workload-level wins.&lt;/strong&gt; TPC-DS at 1TB has become the reference
-  workload, with successive releases removing FFI round trips, caching Parquet 
metadata, shrinking plan
-  serialization, and tightening the shuffle write path. 0.17.0 alone was ~9% 
faster than 0.16.0 on TPC-DS
-  1TB, and the per-expression optimization work in 1.0 continues that 
trajectory.&lt;/li&gt;
+&lt;li&gt;Comet has always run Spark's own test suite with Comet enabled, 
providing more than 24,000 unit tests effectively for free. These tests run in 
Comet's CI for all supported Spark versions.&lt;/li&gt;
+&lt;li&gt;Scala tests: Comet has Scala tests that run queries end to end with 
Comet enabled vs disabled and ensure that the results match&lt;/li&gt;
+&lt;li&gt;Fuzz testing: Many of the scala tests use a fuzz testing approach to 
generate randomized data that queries run against, helping to catch regressions 
around edge cases such as nulls, NaN, Infinity, and timezone issues&lt;/li&gt;
+&lt;li&gt;Comet SQL Tests: In an effort to make it easier to write tests, 
Comet now provides a SQL-based testing approach that is inspired by 
sqllogictest&lt;/li&gt;
+&lt;li&gt;Generative AI: More recently, Comet has taken advantage of agentic 
skills to perform audit sweeps of ll expressions, comapring the implementation 
to Spark's souce code and ensuring that Comet has tests covering all important 
edge cases&lt;/li&gt;
 &lt;/ul&gt;
-&lt;h2 id="what-10-means"&gt;What 1.0 Means&lt;a class="headerlink" 
href="#what-10-means" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Beyond the accumulated features, 1.0 is where the project commits to 
being something you can build on:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Broad Spark coverage.&lt;/strong&gt; Comet supports 
Apache Spark 3.4.3, 3.5.9, 4.0.4, and 4.1.3 out of the same
-  codebase, with dedicated Maven profiles, shim sources, and CI matrices for 
each, plus an experimental
-  Spark 4.2 profile for early evaluation. A published Spark version adoption 
and support-lifetime policy
-  now states how long each Spark minor stays supported.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;ANSI SQL by default.&lt;/strong&gt; Spark 4 enables 
ANSI semantics by default. Comet implements ANSI behavior for the
-  expressions it supports natively, including arithmetic overflow checks, ANSI 
cast behavior, and &lt;code&gt;try_*&lt;/code&gt;
-  variants, so ANSI workloads keep accelerating rather than falling 
back.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;A correctness harness, not just unit 
tests.&lt;/strong&gt; Comet runs the full Apache Spark SQL test suite through 
its
-  native execution path against every supported Spark version. Running Spark's 
own correctness tests is what
-  surfaces semantic shifts before they reach user workloads, and it is the 
foundation of the confidence behind
-  a 1.0 release.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;A stable release line going forward.&lt;/strong&gt; 
With 1.0, the project commits to semantic versioning. Because Comet
-  is a plugin rather than a library, its configuration is its primary API 
surface, so &lt;code&gt;spark.comet.*&lt;/code&gt; keys, an
-  explicitly enumerated public Java and Scala API, and query results 
documented as Compatible are all part of
-  the compatibility surface. Behavior changes in a minor release now require a 
&lt;code&gt;spark.comet.legacy.*&lt;/code&gt; key that
-  restores the previous behavior, and each release records its behavior 
changes in a user-facing upgrade
-  guide. Correctness fixes are exempt from being treated as breaking changes. 
The first deprecations under
-  that policy are announced in this release (see &lt;a 
href="#deprecation-notice"&gt;Deprecation Notice&lt;/a&gt; below).&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Documented limitations.&lt;/strong&gt; Every open 
correctness issue is now surfaced in the generated compatibility
-  guide, down to the expression level, so you can see where Comet is known to 
diverge from Spark before you
-  hit it in production rather than after.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;p&gt;The rest of this post covers what is new since 0.17.0.&lt;/p&gt;
-&lt;h2 id="native-expression-performance"&gt;Native Expression 
Performance&lt;a class="headerlink" href="#native-expression-performance" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;A large share of this release is dedicated to making Comet's native 
scalar expressions faster. These kernels
-run per-row or per-batch, so improvements here compound across every query 
that uses them. Expressions with
-optimized implementations in this release include:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Casts&lt;/strong&gt; between numeric, string, decimal, 
and date types, including a faster float-to-decimal cast, an
-  optimized integer-to-integer cast, shared no-overflow fast paths in 
&lt;code&gt;CheckOverflow&lt;/code&gt; and
-  &lt;code&gt;DecimalRescaleCheckOverflow&lt;/code&gt;, and a 
&lt;code&gt;cast_binary_to_string&lt;/code&gt; that is up to 27x faster on 
binary-format
-  styles.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;JSON, regex, and URL parsing&lt;/strong&gt;: 
&lt;code&gt;get_json_object&lt;/code&gt;, 
&lt;code&gt;regexp_extract&lt;/code&gt;, and 
&lt;code&gt;parse_url&lt;/code&gt;.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Date/time and decimal kernels&lt;/strong&gt;: 
&lt;code&gt;date_trunc&lt;/code&gt;, &lt;code&gt;spark_ceil&lt;/code&gt;, and a 
vectorized &lt;code&gt;spark_unscaled_value&lt;/code&gt;.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;String and array kernels&lt;/strong&gt;: 
&lt;code&gt;lpad&lt;/code&gt;, &lt;code&gt;unhex&lt;/code&gt;, 
&lt;code&gt;size&lt;/code&gt;, &lt;code&gt;arrays_overlap&lt;/code&gt;, 
&lt;code&gt;escape_string&lt;/code&gt;, and the &lt;code&gt;try_*&lt;/code&gt;
-  arithmetic kernel.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;p&gt;To make this kind of work repeatable, the release also adds a scalar 
expression optimization guide
-documenting how to benchmark a kernel, keep its output bit-identical to Spark, 
and gate changes on a
-no-regression check.&lt;/p&gt;
-&lt;p&gt;Parquet reads pick up several improvements as well. Full Parquet 
metadata, including the page index, is now
-cached via DataFusion's 
&lt;code&gt;CachedParquetFileReaderFactory&lt;/code&gt;; identity casts are 
unwrapped in the schema adapter
-so Parquet statistics pruning can engage; filter pushdown configuration has 
been revised; the native scan
-passes a metadata size hint so a single read usually captures the footer; and 
the native Parquet scan seeds
-its reader options from the session config so Parquet settings you already set 
take effect.&lt;/p&gt;
-&lt;p&gt;Query planning and plan serialization also got cheaper. 
&lt;code&gt;QueryContext&lt;/code&gt; SQL text is now interned into a
-per-plan pool, which makes serialized plans up to 20x smaller on TPC-DS — 
every plan crosses the JNI
-boundary, so this shrinks per-query overhead across the board. Plan-data 
injection is now an O(1) lookup by
-operator kind and no longer rebuilds operators it does not touch. Comet also 
makes far fewer timer calls in
-the native execution loop.&lt;/p&gt;
-&lt;h2 id="correctness"&gt;Correctness&lt;a class="headerlink" 
href="#correctness" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Correctness fixes have been a regular part of every Comet release, 
but for 1.0 we made an extra push to
-clear out the bulk of the known issues before drawing a line under the stable 
release. This release fixes
-roughly 30 divergences from Spark, spanning casts, ANSI error semantics, 
wrong-result bugs, string and
-encoding handling, collations, and error reporting. Most were found by running 
extensive AI-assisted audit
-sweeps of the code base, comparing Comet's expression implementations with all 
supported versions of Spark.
-See the &lt;a 
href="https://github.com/apache/datafusion-comet/blob/main/docs/source/changelog/1.0.0.md"&gt;change
 log&lt;/a&gt; for the full list; two representative fixes give a sense of the 
shape of the work:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Whitespace trimming in string-to-numeric 
casts.&lt;/strong&gt; Casts to &lt;code&gt;boolean&lt;/code&gt;, integral 
types, &lt;code&gt;float&lt;/code&gt;/&lt;code&gt;double&lt;/code&gt;,
-  and &lt;code&gt;decimal&lt;/code&gt; now use Spark's exact trim rules. 
Comet's kernels had used four different trim sets, three of
-  them wrong, so results diverged in both directions — returning null where 
Spark parses a value, and
-  returning a value where Spark returns null.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;ANSI errors swallowed by null 
short-circuit.&lt;/strong&gt; The codegen dispatcher's null short-circuit no 
longer
-  swallows errors Spark raises. Spark evaluates null-intolerant expressions 
per node and left to right, so
-  short-circuiting on the union of input ordinals skipped subtrees Spark would 
have evaluated, losing their
-  errors. Roughly 70 built-in expressions route through this dispatcher and 
ANSI is on by default in Spark 4,
-  so this affected a wide surface.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;p&gt;Alongside the bug fixes, Comet also adds conservative fallbacks where 
native behavior could not be made to
-match — decimal &lt;code&gt;SUM&lt;/code&gt; / &lt;code&gt;AVG&lt;/code&gt; 
over sliding window frames, &lt;code&gt;FromUnixTime&lt;/code&gt; with a 
non-default format, and a
-handful of others — and falls back for predicates and datetime expressions 
under non-default collations
-rather than risking a wrong result.&lt;/p&gt;
-&lt;h2 id="new-expression-and-aggregate-support"&gt;New Expression and 
Aggregate Support&lt;a class="headerlink" 
href="#new-expression-and-aggregate-support" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;This release expands the set of Spark expressions and aggregates that 
run natively:&lt;/p&gt;
+&lt;h3 id="performance"&gt;Performance&lt;a class="headerlink" 
href="#performance" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;The early Comet releases provided a very modest speedup and the 
published benchmark results were based on running TPC workloads at small scale 
factors on a single node. There are now independent benchmark results published 
by AWS Labs that show significant speedups for TPC-DS @ 3TB running in 
EKS.&lt;/p&gt;
+&lt;h3 id="codegen-dispatch"&gt;Codegen Dispatch&lt;a class="headerlink" 
href="#codegen-dispatch" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;Matt TBD&lt;/p&gt;
+&lt;h2 id="improvements-since-0171"&gt;Improvements since 0.17.1&lt;a 
class="headerlink" href="#improvements-since-0171" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;The rest of this post covers what is new since the 0.17.1 
release.&lt;/p&gt;
+&lt;h3 id="experimental-pyarrow-udf-support"&gt;Experimental PyArrow UDF 
Support&lt;a class="headerlink" href="#experimental-pyarrow-udf-support" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;This release adds experimental support for accelerated PyArrow UDFs, 
allowing PyArrow-based user-defined
+functions to participate in native execution instead of forcing a fallback to 
Spark. When the feature is
+disabled, Comet now hints at the native PyArrow UDF path in its fallback 
reasons so users know the option
+exists. This is an early-stage feature and we welcome feedback from users 
experimenting with it.&lt;/p&gt;
+&lt;h3 id="new-expression-and-aggregate-support"&gt;New Expression and 
Aggregate Support&lt;a class="headerlink" 
href="#new-expression-and-aggregate-support" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;This release expands the set of Spark expressions and aggregates that 
are accelerated by Comet:&lt;/p&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;strong&gt;Aggregates&lt;/strong&gt;: 
&lt;code&gt;approx_percentile&lt;/code&gt; / 
&lt;code&gt;percentile_approx&lt;/code&gt;, exact 
&lt;code&gt;percentile&lt;/code&gt; / &lt;code&gt;median&lt;/code&gt;,
-  &lt;code&gt;approx_count_distinct&lt;/code&gt;, and native 
&lt;code&gt;collect_list&lt;/code&gt; / 
&lt;code&gt;array_agg&lt;/code&gt;.&lt;/li&gt;
+  &lt;code&gt;approx_count_distinct&lt;/code&gt;, and native 
&lt;code&gt;collect_list&lt;/code&gt; / &lt;code&gt;array_agg&lt;/code&gt;.
+  &lt;strong&gt;Cast&lt;/strong&gt;: Cast expressions where the native 
implementation is marked as incompatible or unsupported 
+  are now routed through codegen dispatch.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Grouping&lt;/strong&gt;: 
&lt;code&gt;grouping()&lt;/code&gt; and 
&lt;code&gt;grouping_id()&lt;/code&gt;.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Intervals&lt;/strong&gt;: interval types via 
&lt;code&gt;make_ym_interval&lt;/code&gt; and 
&lt;code&gt;make_dt_interval&lt;/code&gt;, 
&lt;code&gt;CalendarIntervalType&lt;/code&gt;,
   &lt;code&gt;multiply_dt_interval&lt;/code&gt;, and interval codegen dispatch 
for nested values and native shuffle.&lt;/li&gt;
@@ -164,89 +88,30 @@ rather than risking a wrong result.&lt;/p&gt;
   &lt;code&gt;PreciseTimestampConversion&lt;/code&gt; for native time-window 
grouping.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;: extended native window 
function support and Spark 4 decimal window average.&lt;/li&gt;
 &lt;/ul&gt;
-&lt;h2 id="native-sampling"&gt;Native Sampling&lt;a class="headerlink" 
href="#native-sampling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Spark's &lt;code&gt;SampleExec&lt;/code&gt; now runs natively when 
sampling without replacement, covering 
&lt;code&gt;DataFrame.sample&lt;/code&gt;, SQL
-&lt;code&gt;TABLESAMPLE&lt;/code&gt;, and 
&lt;code&gt;DataFrame.randomSplit&lt;/code&gt;. The native operator ports 
Spark's &lt;code&gt;BernoulliCellSampler&lt;/code&gt; on top of
-&lt;code&gt;XorShiftRandom&lt;/code&gt; and seeds per partition exactly as 
Spark does, so it selects the same rows for a given seed —
-sampling stays reproducible whether or not Comet is enabled. Sampling with 
replacement still falls back to
-Spark.&lt;/p&gt;
-&lt;h2 id="experimental-pyarrow-udf-support"&gt;Experimental PyArrow UDF 
Support&lt;a class="headerlink" href="#experimental-pyarrow-udf-support" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;This release adds experimental support for accelerated PyArrow UDFs, 
allowing PyArrow-based user-defined
-functions to participate in native execution instead of forcing a fallback to 
Spark. When the feature is
-disabled, Comet now hints at the native PyArrow UDF path in its fallback 
reasons so users know the option
-exists. This is an early-stage feature and we welcome feedback from users 
experimenting with it.&lt;/p&gt;
-&lt;h2 id="iceberg"&gt;Iceberg&lt;a class="headerlink" href="#iceberg" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
+&lt;h3 id="faster-parquet-scans"&gt;Faster Parquet Scans&lt;a 
class="headerlink" href="#faster-parquet-scans" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;Parquet reads pick up several improvements as well. Full Parquet 
metadata, including the page index, is now
+cached via DataFusion's 
&lt;code&gt;CachedParquetFileReaderFactory&lt;/code&gt;; identity casts are 
unwrapped in the schema adapter
+so Parquet statistics pruning can engage; filter pushdown configuration has 
been revised; the native scan
+passes a metadata size hint so a single read usually captures the footer; and 
the native Parquet scan seeds
+its reader options from the session config so Parquet settings you already set 
take effect.&lt;/p&gt;
+&lt;h3 id="iceberg-table-format-v3"&gt;Iceberg Table Format V3&lt;a 
class="headerlink" href="#iceberg-table-format-v3" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;Comet now supports Iceberg 1.11 and Iceberg table format V3 (with 
native table decryption for V3 tables and
 fallback to Spark for other V3 features). The native Iceberg scan supports the 
&lt;code&gt;_pos&lt;/code&gt;, &lt;code&gt;_spec&lt;/code&gt;, 
&lt;code&gt;_file&lt;/code&gt;, and
 &lt;code&gt;_partition&lt;/code&gt; metadata columns, sizes delete files 
correctly to avoid dropped deletes, disambiguates scans that
 share a &lt;code&gt;metadata_location&lt;/code&gt;, and dedupes residuals and 
delete files in the native scan serde. A prior case
-where Iceberg native scan exchange reuse with different pushed filters could 
produce wrong results is also
-fixed.&lt;/p&gt;
-&lt;h2 id="native-parquet-io-and-cloud"&gt;Native Parquet I/O and Cloud&lt;a 
class="headerlink" href="#native-parquet-io-and-cloud" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Native Parquet writes now support gzip compression, and the native 
Parquet scan supports Azure authentication,
-complementing the existing S3 credential support.&lt;/p&gt;
-&lt;h2 id="execution-and-fallback-improvements"&gt;Execution and Fallback 
Improvements&lt;a class="headerlink" 
href="#execution-and-fallback-improvements" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Mixed partial/final aggregation.&lt;/strong&gt; 
&lt;code&gt;sum&lt;/code&gt; and non-decimal &lt;code&gt;avg&lt;/code&gt; can 
now run with the partial and final
-  aggregation stages split across Spark and Comet, keeping more aggregation 
plans partially native.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Codegen dispatch for opt-in serdes.&lt;/strong&gt; 
Expressions reported as &lt;code&gt;Unsupported&lt;/code&gt; can now route 
through JVM
-  codegen dispatch for opt-in serdes, and native opt-in expressions surface as 
compatible-by-default with a
-  &lt;code&gt;COMET-INFO&lt;/code&gt; plan hint. Casts join this path: an 
incompatible or unsupported cast now runs Spark's own
-  generated code inside the Comet pipeline instead of pulling the whole 
operator back to Spark, so one
-  awkward cast no longer de-accelerates a query. 
&lt;code&gt;sort_array&lt;/code&gt; under strict floating-point mode and 
&lt;code&gt;concat&lt;/code&gt;
-  under non-&lt;code&gt;UTF8_BINARY&lt;/code&gt; collations opt in the same 
way.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;JVM columnar-to-row by default.&lt;/strong&gt; 
Isolated benchmarking showed the native columnar-to-row converter is
-  roughly 3.7x slower per row than the JVM implementation at the default batch 
size — and up to 15.7x slower
-  for small batches — because of a fixed per-batch JNI and FFI cost, with no 
end-to-end benefit in TPC-DS
-  runs. It is now disabled by default.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Clearer fallback reasons.&lt;/strong&gt; Unsupported 
scalar serde cases are reported in the support level,
-  mixed-execution fallback messages name the incompatible aggregate functions, 
unsupported metadata column
-  names appear in fallback reasons, and the spurious "WriteFilesExec is not 
supported" message is suppressed.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Expression coverage in extended 
explain.&lt;/strong&gt; The extended explain summary previously reported 
operator
-  coverage but said nothing about expressions. It now ends with a line such as 
&lt;code&gt;Comet accelerated 14
-  expressions (14 native, 1 codegen dispatch)&lt;/code&gt;, so you can see how 
much of a plan's expression evaluation
-  runs in native DataFusion kernels versus Spark's generated code inside the 
dispatcher.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Quieter logs and runtime cleanup.&lt;/strong&gt; 
Logging levels on frequent call sites have been lowered so Comet no
-  longer floods executor logs at default settings, and the Tokio runtime is 
now released on driver and
-  executor exit.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;h2 id="shuffle-improvements"&gt;Shuffle Improvements&lt;a 
class="headerlink" href="#shuffle-improvements" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
+where Iceberg native scan exchange reuse with different pushed filters could 
produce wrong results is also&lt;/p&gt;
+&lt;h3 id="native-expression-performance"&gt;Native Expression 
Performance&lt;a class="headerlink" href="#native-expression-performance" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;Many native expression implementations have been optimized to more 
efficiently leverage Arrow kernels or to avoid per-row builders.&lt;/p&gt;
 &lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Native shuffle memory cap.&lt;/strong&gt; A new 
&lt;code&gt;spark.comet.shuffle.maxBufferBytes&lt;/code&gt; config caps native 
shuffle writer
-  memory to bound worst-case usage.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Shuffle IPC schema encoding.&lt;/strong&gt; The IPC 
schema is now encoded once per writer instead of per block,
-  cutting per-batch shuffle overhead.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;BatchCoalescer bypass.&lt;/strong&gt; Shuffle bypasses 
the &lt;code&gt;BatchCoalescer&lt;/code&gt; for batches that are already 
appropriately
-  sized.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Single-partition shuffle.&lt;/strong&gt; A redundant 
concatenation layer has been removed from the single-partition
-  path.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;h2 id="configuration-changes"&gt;Configuration Changes&lt;a 
class="headerlink" href="#configuration-changes" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Because configuration is Comet's primary API surface, 1.0 is the 
release where the naming gets cleaned up.
-Every rename below registers the old key as an alias, so existing 
configurations keep working and log a
-deprecation warning when an old key is read:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Unified shuffle prefix.&lt;/strong&gt; Shuffle configs 
were spread across four disjoint prefixes
-  (&lt;code&gt;spark.comet.exec.shuffle.*&lt;/code&gt;, 
&lt;code&gt;spark.comet.columnar.shuffle.*&lt;/code&gt;, 
&lt;code&gt;spark.comet.native.shuffle.*&lt;/code&gt;,
-  &lt;code&gt;spark.comet.shuffle.*&lt;/code&gt;). They now all live under 
&lt;code&gt;spark.comet.shuffle.*&lt;/code&gt;, with 
&lt;code&gt;.jvm.&lt;/code&gt; and &lt;code&gt;.native.&lt;/code&gt;
-  sub-namespaces matching the 
&lt;code&gt;spark.comet.shuffle.mode&lt;/code&gt; value you already 
set.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Grouped explain configs.&lt;/strong&gt; The orphan 
explain-related configs are collected under a single
-  &lt;code&gt;spark.comet.explain.*&lt;/code&gt; prefix, and the PyArrow UDF 
config is renamed to &lt;code&gt;pyarrowUDF&lt;/code&gt; for 
consistency.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;&lt;code&gt;spark.comet.version&lt;/code&gt;.&lt;/strong&gt;
 The loaded Comet build version is now exposed as a runtime config, so you can
-  confirm which Comet a cluster is actually running with 
&lt;code&gt;spark.conf.get&lt;/code&gt; or 
&lt;code&gt;SET&lt;/code&gt;.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Removed dead configs.&lt;/strong&gt; The Parquet 
parallel-IO knobs, 
&lt;code&gt;spark.comet.use.lazyMaterialization&lt;/code&gt;, and
-  &lt;code&gt;spark.comet.exceptionOnDatetimeRebase&lt;/code&gt; had no 
remaining effect and were misleading anyone tuning against
-  them.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Removed async columnar shuffle.&lt;/strong&gt; The 
&lt;code&gt;spark.comet.columnar.shuffle.async.*&lt;/code&gt; path was off by 
default and
-  untested, and has been removed rather than carried into a stable release 
line.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;Casts&lt;/strong&gt; between numeric, string, decimal, 
and date types, including a faster float-to-decimal cast, an
+  optimized integer-to-integer cast, shared no-overflow fast paths in 
&lt;code&gt;CheckOverflow&lt;/code&gt; and
+  &lt;code&gt;DecimalRescaleCheckOverflow&lt;/code&gt;, and a 
&lt;code&gt;cast_binary_to_string&lt;/code&gt; that is up to 27x faster on 
binary-format
+  styles.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;JSON, regex, and URL parsing&lt;/strong&gt;: 
&lt;code&gt;get_json_object&lt;/code&gt;, 
&lt;code&gt;regexp_extract&lt;/code&gt;, and 
&lt;code&gt;parse_url&lt;/code&gt;.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;Date/time and decimal kernels&lt;/strong&gt;: 
&lt;code&gt;date_trunc&lt;/code&gt;, &lt;code&gt;spark_ceil&lt;/code&gt;, and a 
vectorized &lt;code&gt;spark_unscaled_value&lt;/code&gt;.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;String and array kernels&lt;/strong&gt;: 
&lt;code&gt;lpad&lt;/code&gt;, &lt;code&gt;unhex&lt;/code&gt;, 
&lt;code&gt;size&lt;/code&gt;, &lt;code&gt;arrays_overlap&lt;/code&gt;, 
&lt;code&gt;escape_string&lt;/code&gt;, and the &lt;code&gt;try_*&lt;/code&gt;
+  arithmetic kernel.&lt;/li&gt;
 &lt;/ul&gt;
-&lt;h2 id="documentation"&gt;Documentation&lt;a class="headerlink" 
href="#documentation" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;The documentation received a substantial overhaul for 1.0: a design 
refresh of the docs site, versioned user
-guides with captioned sidebar sections, and a set of accessibility and 
navigation fixes. The
-supported-expressions page now shows how each expression is implemented — 
native, codegen dispatch, or hybrid
-— generated from the planner itself rather than maintained by hand. An 
expanded tuning guide covers the
-performance and memory configs that matter in practice, and there is an 
updated post-1.0 roadmap and a new
-blog posts and talks page.&lt;/p&gt;
 &lt;h2 id="deprecation-notice"&gt;Deprecation Notice&lt;a class="headerlink" 
href="#deprecation-notice" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;With the move to a stable 1.0 release line, Comet begins deprecating 
older platforms under semantic
 versioning:&lt;/p&gt;
diff --git a/blog/feeds/blog.atom.xml b/blog/feeds/blog.atom.xml
index 30a64fb..809b36a 100644
--- a/blog/feeds/blog.atom.xml
+++ b/blog/feeds/blog.atom.xml
@@ -47,112 +47,36 @@ improved performance and efficiency without requiring any 
code changes.&lt;/p&gt
 contributors. See the &lt;a 
href="https://github.com/apache/datafusion-comet/blob/main/docs/source/changelog/1.0.0.md"&gt;change
 log&lt;/a&gt; for the full list of changes.&lt;/p&gt;
 &lt;h2 id="the-road-to-10"&gt;The Road to 1.0&lt;a class="headerlink" 
href="#the-road-to-10" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;Comet was &lt;a 
href="https://datafusion.apache.org/blog/2024/03/06/comet-donation/"&gt;donated&lt;/a&gt;
 to the Apache DataFusion project in March 2024 and cut its first release, 
0.1.0, five
-months later with 15 data types, 13 operators, 106 expressions, and a "modest 
performance speedup." The
-sixteen major releases between then and now cover a lot of ground:&lt;/p&gt;
+months later with support for 13 operators, and 106 expressions.&lt;/p&gt;
+&lt;p&gt;Comet 1.0.0 now supports more than 400 expressions, but that isn't 
the only way the project has grown over this time.&lt;/p&gt;
+&lt;p&gt;Here's a recap of some of the main advances over the past two 
years&lt;/p&gt;
+&lt;h3 id="correctness-testing"&gt;Correctness Testing&lt;a class="headerlink" 
href="#correctness-testing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;It is important that queries accelerated by Comet produce the same 
results as Spark. Correctness checking has always been a large effort in Comet 
development, but the approach has evolved over time.&lt;/p&gt;
 &lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Query coverage went from a handful of operators to the 
shape of a real Spark query.&lt;/strong&gt; Native
-  SortMergeJoin, HashJoin, and BroadcastHashJoin landed early; native columnar 
and native shuffle,
-  broadcast nested loop joins, native window functions, native sampling, and 
mixed partial/final aggregation
-  followed. Supported expressions grew from 106 at 0.1.0 to more than 400 in 
1.0.0, and the introduction of the JVM
-  codegen dispatcher in 0.17.0 gave Comet a way to keep unsupported 
expressions Arrow-native by running
-  Spark's own generated code inside the pipeline rather than falling back to 
row-based execution.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Spark support broadened.&lt;/strong&gt; The 0.1.0 
release targeted Spark 3.3, 3.4, and 3.5, with experimental 4.0. The
-  1.0 line drops 3.3, adds 4.1, and ships an experimental 4.2 profile. ANSI 
semantics — on by default in
-  Spark 4 — moved from partial to a supported default across the natively 
implemented surface.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;The ecosystem story filled in.&lt;/strong&gt; Native 
Iceberg support arrived in 0.10.0 and has been extended through
-  1.11 and format V3, native Parquet writes and CSV reads landed as 
experimental features and matured,
-  Azure joined S3 on the native cloud path, and 1.0.0 adds experimental 
accelerated PyArrow UDFs alongside the
-  Java and Scala UDF support that shipped in 0.17.0.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Correctness rigor grew alongside the surface 
area.&lt;/strong&gt; Early releases relied on fuzz testing to surface
-  divergences; later releases added a full Spark SQL test-suite run against 
every supported Spark version,
-  followed by AI-assisted expression audits comparing Comet's behavior against 
every supported Spark version
-  edge case by edge case. 1.0 ships with every known open correctness gap 
documented in the compatibility
-  guide.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Performance moved from "modest speedup" to 
workload-level wins.&lt;/strong&gt; TPC-DS at 1TB has become the reference
-  workload, with successive releases removing FFI round trips, caching Parquet 
metadata, shrinking plan
-  serialization, and tightening the shuffle write path. 0.17.0 alone was ~9% 
faster than 0.16.0 on TPC-DS
-  1TB, and the per-expression optimization work in 1.0 continues that 
trajectory.&lt;/li&gt;
+&lt;li&gt;Comet has always run Spark's own test suite with Comet enabled, 
providing more than 24,000 unit tests effectively for free. These tests run in 
Comet's CI for all supported Spark versions.&lt;/li&gt;
+&lt;li&gt;Scala tests: Comet has Scala tests that run queries end to end with 
Comet enabled vs disabled and ensure that the results match&lt;/li&gt;
+&lt;li&gt;Fuzz testing: Many of the scala tests use a fuzz testing approach to 
generate randomized data that queries run against, helping to catch regressions 
around edge cases such as nulls, NaN, Infinity, and timezone issues&lt;/li&gt;
+&lt;li&gt;Comet SQL Tests: In an effort to make it easier to write tests, 
Comet now provides a SQL-based testing approach that is inspired by 
sqllogictest&lt;/li&gt;
+&lt;li&gt;Generative AI: More recently, Comet has taken advantage of agentic 
skills to perform audit sweeps of ll expressions, comapring the implementation 
to Spark's souce code and ensuring that Comet has tests covering all important 
edge cases&lt;/li&gt;
 &lt;/ul&gt;
-&lt;h2 id="what-10-means"&gt;What 1.0 Means&lt;a class="headerlink" 
href="#what-10-means" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Beyond the accumulated features, 1.0 is where the project commits to 
being something you can build on:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Broad Spark coverage.&lt;/strong&gt; Comet supports 
Apache Spark 3.4.3, 3.5.9, 4.0.4, and 4.1.3 out of the same
-  codebase, with dedicated Maven profiles, shim sources, and CI matrices for 
each, plus an experimental
-  Spark 4.2 profile for early evaluation. A published Spark version adoption 
and support-lifetime policy
-  now states how long each Spark minor stays supported.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;ANSI SQL by default.&lt;/strong&gt; Spark 4 enables 
ANSI semantics by default. Comet implements ANSI behavior for the
-  expressions it supports natively, including arithmetic overflow checks, ANSI 
cast behavior, and &lt;code&gt;try_*&lt;/code&gt;
-  variants, so ANSI workloads keep accelerating rather than falling 
back.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;A correctness harness, not just unit 
tests.&lt;/strong&gt; Comet runs the full Apache Spark SQL test suite through 
its
-  native execution path against every supported Spark version. Running Spark's 
own correctness tests is what
-  surfaces semantic shifts before they reach user workloads, and it is the 
foundation of the confidence behind
-  a 1.0 release.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;A stable release line going forward.&lt;/strong&gt; 
With 1.0, the project commits to semantic versioning. Because Comet
-  is a plugin rather than a library, its configuration is its primary API 
surface, so &lt;code&gt;spark.comet.*&lt;/code&gt; keys, an
-  explicitly enumerated public Java and Scala API, and query results 
documented as Compatible are all part of
-  the compatibility surface. Behavior changes in a minor release now require a 
&lt;code&gt;spark.comet.legacy.*&lt;/code&gt; key that
-  restores the previous behavior, and each release records its behavior 
changes in a user-facing upgrade
-  guide. Correctness fixes are exempt from being treated as breaking changes. 
The first deprecations under
-  that policy are announced in this release (see &lt;a 
href="#deprecation-notice"&gt;Deprecation Notice&lt;/a&gt; below).&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Documented limitations.&lt;/strong&gt; Every open 
correctness issue is now surfaced in the generated compatibility
-  guide, down to the expression level, so you can see where Comet is known to 
diverge from Spark before you
-  hit it in production rather than after.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;p&gt;The rest of this post covers what is new since 0.17.0.&lt;/p&gt;
-&lt;h2 id="native-expression-performance"&gt;Native Expression 
Performance&lt;a class="headerlink" href="#native-expression-performance" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;A large share of this release is dedicated to making Comet's native 
scalar expressions faster. These kernels
-run per-row or per-batch, so improvements here compound across every query 
that uses them. Expressions with
-optimized implementations in this release include:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Casts&lt;/strong&gt; between numeric, string, decimal, 
and date types, including a faster float-to-decimal cast, an
-  optimized integer-to-integer cast, shared no-overflow fast paths in 
&lt;code&gt;CheckOverflow&lt;/code&gt; and
-  &lt;code&gt;DecimalRescaleCheckOverflow&lt;/code&gt;, and a 
&lt;code&gt;cast_binary_to_string&lt;/code&gt; that is up to 27x faster on 
binary-format
-  styles.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;JSON, regex, and URL parsing&lt;/strong&gt;: 
&lt;code&gt;get_json_object&lt;/code&gt;, 
&lt;code&gt;regexp_extract&lt;/code&gt;, and 
&lt;code&gt;parse_url&lt;/code&gt;.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Date/time and decimal kernels&lt;/strong&gt;: 
&lt;code&gt;date_trunc&lt;/code&gt;, &lt;code&gt;spark_ceil&lt;/code&gt;, and a 
vectorized &lt;code&gt;spark_unscaled_value&lt;/code&gt;.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;String and array kernels&lt;/strong&gt;: 
&lt;code&gt;lpad&lt;/code&gt;, &lt;code&gt;unhex&lt;/code&gt;, 
&lt;code&gt;size&lt;/code&gt;, &lt;code&gt;arrays_overlap&lt;/code&gt;, 
&lt;code&gt;escape_string&lt;/code&gt;, and the &lt;code&gt;try_*&lt;/code&gt;
-  arithmetic kernel.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;p&gt;To make this kind of work repeatable, the release also adds a scalar 
expression optimization guide
-documenting how to benchmark a kernel, keep its output bit-identical to Spark, 
and gate changes on a
-no-regression check.&lt;/p&gt;
-&lt;p&gt;Parquet reads pick up several improvements as well. Full Parquet 
metadata, including the page index, is now
-cached via DataFusion's 
&lt;code&gt;CachedParquetFileReaderFactory&lt;/code&gt;; identity casts are 
unwrapped in the schema adapter
-so Parquet statistics pruning can engage; filter pushdown configuration has 
been revised; the native scan
-passes a metadata size hint so a single read usually captures the footer; and 
the native Parquet scan seeds
-its reader options from the session config so Parquet settings you already set 
take effect.&lt;/p&gt;
-&lt;p&gt;Query planning and plan serialization also got cheaper. 
&lt;code&gt;QueryContext&lt;/code&gt; SQL text is now interned into a
-per-plan pool, which makes serialized plans up to 20x smaller on TPC-DS — 
every plan crosses the JNI
-boundary, so this shrinks per-query overhead across the board. Plan-data 
injection is now an O(1) lookup by
-operator kind and no longer rebuilds operators it does not touch. Comet also 
makes far fewer timer calls in
-the native execution loop.&lt;/p&gt;
-&lt;h2 id="correctness"&gt;Correctness&lt;a class="headerlink" 
href="#correctness" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Correctness fixes have been a regular part of every Comet release, 
but for 1.0 we made an extra push to
-clear out the bulk of the known issues before drawing a line under the stable 
release. This release fixes
-roughly 30 divergences from Spark, spanning casts, ANSI error semantics, 
wrong-result bugs, string and
-encoding handling, collations, and error reporting. Most were found by running 
extensive AI-assisted audit
-sweeps of the code base, comparing Comet's expression implementations with all 
supported versions of Spark.
-See the &lt;a 
href="https://github.com/apache/datafusion-comet/blob/main/docs/source/changelog/1.0.0.md"&gt;change
 log&lt;/a&gt; for the full list; two representative fixes give a sense of the 
shape of the work:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Whitespace trimming in string-to-numeric 
casts.&lt;/strong&gt; Casts to &lt;code&gt;boolean&lt;/code&gt;, integral 
types, &lt;code&gt;float&lt;/code&gt;/&lt;code&gt;double&lt;/code&gt;,
-  and &lt;code&gt;decimal&lt;/code&gt; now use Spark's exact trim rules. 
Comet's kernels had used four different trim sets, three of
-  them wrong, so results diverged in both directions — returning null where 
Spark parses a value, and
-  returning a value where Spark returns null.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;ANSI errors swallowed by null 
short-circuit.&lt;/strong&gt; The codegen dispatcher's null short-circuit no 
longer
-  swallows errors Spark raises. Spark evaluates null-intolerant expressions 
per node and left to right, so
-  short-circuiting on the union of input ordinals skipped subtrees Spark would 
have evaluated, losing their
-  errors. Roughly 70 built-in expressions route through this dispatcher and 
ANSI is on by default in Spark 4,
-  so this affected a wide surface.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;p&gt;Alongside the bug fixes, Comet also adds conservative fallbacks where 
native behavior could not be made to
-match — decimal &lt;code&gt;SUM&lt;/code&gt; / &lt;code&gt;AVG&lt;/code&gt; 
over sliding window frames, &lt;code&gt;FromUnixTime&lt;/code&gt; with a 
non-default format, and a
-handful of others — and falls back for predicates and datetime expressions 
under non-default collations
-rather than risking a wrong result.&lt;/p&gt;
-&lt;h2 id="new-expression-and-aggregate-support"&gt;New Expression and 
Aggregate Support&lt;a class="headerlink" 
href="#new-expression-and-aggregate-support" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;This release expands the set of Spark expressions and aggregates that 
run natively:&lt;/p&gt;
+&lt;h3 id="performance"&gt;Performance&lt;a class="headerlink" 
href="#performance" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;The early Comet releases provided a very modest speedup and the 
published benchmark results were based on running TPC workloads at small scale 
factors on a single node. There are now independent benchmark results published 
by AWS Labs that show significant speedups for TPC-DS @ 3TB running in 
EKS.&lt;/p&gt;
+&lt;h3 id="codegen-dispatch"&gt;Codegen Dispatch&lt;a class="headerlink" 
href="#codegen-dispatch" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;Matt TBD&lt;/p&gt;
+&lt;h2 id="improvements-since-0171"&gt;Improvements since 0.17.1&lt;a 
class="headerlink" href="#improvements-since-0171" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;The rest of this post covers what is new since the 0.17.1 
release.&lt;/p&gt;
+&lt;h3 id="experimental-pyarrow-udf-support"&gt;Experimental PyArrow UDF 
Support&lt;a class="headerlink" href="#experimental-pyarrow-udf-support" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;This release adds experimental support for accelerated PyArrow UDFs, 
allowing PyArrow-based user-defined
+functions to participate in native execution instead of forcing a fallback to 
Spark. When the feature is
+disabled, Comet now hints at the native PyArrow UDF path in its fallback 
reasons so users know the option
+exists. This is an early-stage feature and we welcome feedback from users 
experimenting with it.&lt;/p&gt;
+&lt;h3 id="new-expression-and-aggregate-support"&gt;New Expression and 
Aggregate Support&lt;a class="headerlink" 
href="#new-expression-and-aggregate-support" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;This release expands the set of Spark expressions and aggregates that 
are accelerated by Comet:&lt;/p&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;strong&gt;Aggregates&lt;/strong&gt;: 
&lt;code&gt;approx_percentile&lt;/code&gt; / 
&lt;code&gt;percentile_approx&lt;/code&gt;, exact 
&lt;code&gt;percentile&lt;/code&gt; / &lt;code&gt;median&lt;/code&gt;,
-  &lt;code&gt;approx_count_distinct&lt;/code&gt;, and native 
&lt;code&gt;collect_list&lt;/code&gt; / 
&lt;code&gt;array_agg&lt;/code&gt;.&lt;/li&gt;
+  &lt;code&gt;approx_count_distinct&lt;/code&gt;, and native 
&lt;code&gt;collect_list&lt;/code&gt; / &lt;code&gt;array_agg&lt;/code&gt;.
+  &lt;strong&gt;Cast&lt;/strong&gt;: Cast expressions where the native 
implementation is marked as incompatible or unsupported 
+  are now routed through codegen dispatch.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Grouping&lt;/strong&gt;: 
&lt;code&gt;grouping()&lt;/code&gt; and 
&lt;code&gt;grouping_id()&lt;/code&gt;.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Intervals&lt;/strong&gt;: interval types via 
&lt;code&gt;make_ym_interval&lt;/code&gt; and 
&lt;code&gt;make_dt_interval&lt;/code&gt;, 
&lt;code&gt;CalendarIntervalType&lt;/code&gt;,
   &lt;code&gt;multiply_dt_interval&lt;/code&gt;, and interval codegen dispatch 
for nested values and native shuffle.&lt;/li&gt;
@@ -164,89 +88,30 @@ rather than risking a wrong result.&lt;/p&gt;
   &lt;code&gt;PreciseTimestampConversion&lt;/code&gt; for native time-window 
grouping.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;: extended native window 
function support and Spark 4 decimal window average.&lt;/li&gt;
 &lt;/ul&gt;
-&lt;h2 id="native-sampling"&gt;Native Sampling&lt;a class="headerlink" 
href="#native-sampling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Spark's &lt;code&gt;SampleExec&lt;/code&gt; now runs natively when 
sampling without replacement, covering 
&lt;code&gt;DataFrame.sample&lt;/code&gt;, SQL
-&lt;code&gt;TABLESAMPLE&lt;/code&gt;, and 
&lt;code&gt;DataFrame.randomSplit&lt;/code&gt;. The native operator ports 
Spark's &lt;code&gt;BernoulliCellSampler&lt;/code&gt; on top of
-&lt;code&gt;XorShiftRandom&lt;/code&gt; and seeds per partition exactly as 
Spark does, so it selects the same rows for a given seed —
-sampling stays reproducible whether or not Comet is enabled. Sampling with 
replacement still falls back to
-Spark.&lt;/p&gt;
-&lt;h2 id="experimental-pyarrow-udf-support"&gt;Experimental PyArrow UDF 
Support&lt;a class="headerlink" href="#experimental-pyarrow-udf-support" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;This release adds experimental support for accelerated PyArrow UDFs, 
allowing PyArrow-based user-defined
-functions to participate in native execution instead of forcing a fallback to 
Spark. When the feature is
-disabled, Comet now hints at the native PyArrow UDF path in its fallback 
reasons so users know the option
-exists. This is an early-stage feature and we welcome feedback from users 
experimenting with it.&lt;/p&gt;
-&lt;h2 id="iceberg"&gt;Iceberg&lt;a class="headerlink" href="#iceberg" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
+&lt;h3 id="faster-parquet-scans"&gt;Faster Parquet Scans&lt;a 
class="headerlink" href="#faster-parquet-scans" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;Parquet reads pick up several improvements as well. Full Parquet 
metadata, including the page index, is now
+cached via DataFusion's 
&lt;code&gt;CachedParquetFileReaderFactory&lt;/code&gt;; identity casts are 
unwrapped in the schema adapter
+so Parquet statistics pruning can engage; filter pushdown configuration has 
been revised; the native scan
+passes a metadata size hint so a single read usually captures the footer; and 
the native Parquet scan seeds
+its reader options from the session config so Parquet settings you already set 
take effect.&lt;/p&gt;
+&lt;h3 id="iceberg-table-format-v3"&gt;Iceberg Table Format V3&lt;a 
class="headerlink" href="#iceberg-table-format-v3" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;Comet now supports Iceberg 1.11 and Iceberg table format V3 (with 
native table decryption for V3 tables and
 fallback to Spark for other V3 features). The native Iceberg scan supports the 
&lt;code&gt;_pos&lt;/code&gt;, &lt;code&gt;_spec&lt;/code&gt;, 
&lt;code&gt;_file&lt;/code&gt;, and
 &lt;code&gt;_partition&lt;/code&gt; metadata columns, sizes delete files 
correctly to avoid dropped deletes, disambiguates scans that
 share a &lt;code&gt;metadata_location&lt;/code&gt;, and dedupes residuals and 
delete files in the native scan serde. A prior case
-where Iceberg native scan exchange reuse with different pushed filters could 
produce wrong results is also
-fixed.&lt;/p&gt;
-&lt;h2 id="native-parquet-io-and-cloud"&gt;Native Parquet I/O and Cloud&lt;a 
class="headerlink" href="#native-parquet-io-and-cloud" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Native Parquet writes now support gzip compression, and the native 
Parquet scan supports Azure authentication,
-complementing the existing S3 credential support.&lt;/p&gt;
-&lt;h2 id="execution-and-fallback-improvements"&gt;Execution and Fallback 
Improvements&lt;a class="headerlink" 
href="#execution-and-fallback-improvements" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Mixed partial/final aggregation.&lt;/strong&gt; 
&lt;code&gt;sum&lt;/code&gt; and non-decimal &lt;code&gt;avg&lt;/code&gt; can 
now run with the partial and final
-  aggregation stages split across Spark and Comet, keeping more aggregation 
plans partially native.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Codegen dispatch for opt-in serdes.&lt;/strong&gt; 
Expressions reported as &lt;code&gt;Unsupported&lt;/code&gt; can now route 
through JVM
-  codegen dispatch for opt-in serdes, and native opt-in expressions surface as 
compatible-by-default with a
-  &lt;code&gt;COMET-INFO&lt;/code&gt; plan hint. Casts join this path: an 
incompatible or unsupported cast now runs Spark's own
-  generated code inside the Comet pipeline instead of pulling the whole 
operator back to Spark, so one
-  awkward cast no longer de-accelerates a query. 
&lt;code&gt;sort_array&lt;/code&gt; under strict floating-point mode and 
&lt;code&gt;concat&lt;/code&gt;
-  under non-&lt;code&gt;UTF8_BINARY&lt;/code&gt; collations opt in the same 
way.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;JVM columnar-to-row by default.&lt;/strong&gt; 
Isolated benchmarking showed the native columnar-to-row converter is
-  roughly 3.7x slower per row than the JVM implementation at the default batch 
size — and up to 15.7x slower
-  for small batches — because of a fixed per-batch JNI and FFI cost, with no 
end-to-end benefit in TPC-DS
-  runs. It is now disabled by default.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Clearer fallback reasons.&lt;/strong&gt; Unsupported 
scalar serde cases are reported in the support level,
-  mixed-execution fallback messages name the incompatible aggregate functions, 
unsupported metadata column
-  names appear in fallback reasons, and the spurious "WriteFilesExec is not 
supported" message is suppressed.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Expression coverage in extended 
explain.&lt;/strong&gt; The extended explain summary previously reported 
operator
-  coverage but said nothing about expressions. It now ends with a line such as 
&lt;code&gt;Comet accelerated 14
-  expressions (14 native, 1 codegen dispatch)&lt;/code&gt;, so you can see how 
much of a plan's expression evaluation
-  runs in native DataFusion kernels versus Spark's generated code inside the 
dispatcher.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Quieter logs and runtime cleanup.&lt;/strong&gt; 
Logging levels on frequent call sites have been lowered so Comet no
-  longer floods executor logs at default settings, and the Tokio runtime is 
now released on driver and
-  executor exit.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;h2 id="shuffle-improvements"&gt;Shuffle Improvements&lt;a 
class="headerlink" href="#shuffle-improvements" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
+where Iceberg native scan exchange reuse with different pushed filters could 
produce wrong results is also&lt;/p&gt;
+&lt;h3 id="native-expression-performance"&gt;Native Expression 
Performance&lt;a class="headerlink" href="#native-expression-performance" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;Many native expression implementations have been optimized to more 
efficiently leverage Arrow kernels or to avoid per-row builders.&lt;/p&gt;
 &lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Native shuffle memory cap.&lt;/strong&gt; A new 
&lt;code&gt;spark.comet.shuffle.maxBufferBytes&lt;/code&gt; config caps native 
shuffle writer
-  memory to bound worst-case usage.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Shuffle IPC schema encoding.&lt;/strong&gt; The IPC 
schema is now encoded once per writer instead of per block,
-  cutting per-batch shuffle overhead.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;BatchCoalescer bypass.&lt;/strong&gt; Shuffle bypasses 
the &lt;code&gt;BatchCoalescer&lt;/code&gt; for batches that are already 
appropriately
-  sized.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Single-partition shuffle.&lt;/strong&gt; A redundant 
concatenation layer has been removed from the single-partition
-  path.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;h2 id="configuration-changes"&gt;Configuration Changes&lt;a 
class="headerlink" href="#configuration-changes" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Because configuration is Comet's primary API surface, 1.0 is the 
release where the naming gets cleaned up.
-Every rename below registers the old key as an alias, so existing 
configurations keep working and log a
-deprecation warning when an old key is read:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Unified shuffle prefix.&lt;/strong&gt; Shuffle configs 
were spread across four disjoint prefixes
-  (&lt;code&gt;spark.comet.exec.shuffle.*&lt;/code&gt;, 
&lt;code&gt;spark.comet.columnar.shuffle.*&lt;/code&gt;, 
&lt;code&gt;spark.comet.native.shuffle.*&lt;/code&gt;,
-  &lt;code&gt;spark.comet.shuffle.*&lt;/code&gt;). They now all live under 
&lt;code&gt;spark.comet.shuffle.*&lt;/code&gt;, with 
&lt;code&gt;.jvm.&lt;/code&gt; and &lt;code&gt;.native.&lt;/code&gt;
-  sub-namespaces matching the 
&lt;code&gt;spark.comet.shuffle.mode&lt;/code&gt; value you already 
set.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Grouped explain configs.&lt;/strong&gt; The orphan 
explain-related configs are collected under a single
-  &lt;code&gt;spark.comet.explain.*&lt;/code&gt; prefix, and the PyArrow UDF 
config is renamed to &lt;code&gt;pyarrowUDF&lt;/code&gt; for 
consistency.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;&lt;code&gt;spark.comet.version&lt;/code&gt;.&lt;/strong&gt;
 The loaded Comet build version is now exposed as a runtime config, so you can
-  confirm which Comet a cluster is actually running with 
&lt;code&gt;spark.conf.get&lt;/code&gt; or 
&lt;code&gt;SET&lt;/code&gt;.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Removed dead configs.&lt;/strong&gt; The Parquet 
parallel-IO knobs, 
&lt;code&gt;spark.comet.use.lazyMaterialization&lt;/code&gt;, and
-  &lt;code&gt;spark.comet.exceptionOnDatetimeRebase&lt;/code&gt; had no 
remaining effect and were misleading anyone tuning against
-  them.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Removed async columnar shuffle.&lt;/strong&gt; The 
&lt;code&gt;spark.comet.columnar.shuffle.async.*&lt;/code&gt; path was off by 
default and
-  untested, and has been removed rather than carried into a stable release 
line.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;Casts&lt;/strong&gt; between numeric, string, decimal, 
and date types, including a faster float-to-decimal cast, an
+  optimized integer-to-integer cast, shared no-overflow fast paths in 
&lt;code&gt;CheckOverflow&lt;/code&gt; and
+  &lt;code&gt;DecimalRescaleCheckOverflow&lt;/code&gt;, and a 
&lt;code&gt;cast_binary_to_string&lt;/code&gt; that is up to 27x faster on 
binary-format
+  styles.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;JSON, regex, and URL parsing&lt;/strong&gt;: 
&lt;code&gt;get_json_object&lt;/code&gt;, 
&lt;code&gt;regexp_extract&lt;/code&gt;, and 
&lt;code&gt;parse_url&lt;/code&gt;.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;Date/time and decimal kernels&lt;/strong&gt;: 
&lt;code&gt;date_trunc&lt;/code&gt;, &lt;code&gt;spark_ceil&lt;/code&gt;, and a 
vectorized &lt;code&gt;spark_unscaled_value&lt;/code&gt;.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;String and array kernels&lt;/strong&gt;: 
&lt;code&gt;lpad&lt;/code&gt;, &lt;code&gt;unhex&lt;/code&gt;, 
&lt;code&gt;size&lt;/code&gt;, &lt;code&gt;arrays_overlap&lt;/code&gt;, 
&lt;code&gt;escape_string&lt;/code&gt;, and the &lt;code&gt;try_*&lt;/code&gt;
+  arithmetic kernel.&lt;/li&gt;
 &lt;/ul&gt;
-&lt;h2 id="documentation"&gt;Documentation&lt;a class="headerlink" 
href="#documentation" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;The documentation received a substantial overhaul for 1.0: a design 
refresh of the docs site, versioned user
-guides with captioned sidebar sections, and a set of accessibility and 
navigation fixes. The
-supported-expressions page now shows how each expression is implemented — 
native, codegen dispatch, or hybrid
-— generated from the planner itself rather than maintained by hand. An 
expanded tuning guide covers the
-performance and memory configs that matter in practice, and there is an 
updated post-1.0 roadmap and a new
-blog posts and talks page.&lt;/p&gt;
 &lt;h2 id="deprecation-notice"&gt;Deprecation Notice&lt;a class="headerlink" 
href="#deprecation-notice" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;With the move to a stable 1.0 release line, Comet begins deprecating 
older platforms under semantic
 versioning:&lt;/p&gt;
diff --git a/blog/feeds/pmc.atom.xml b/blog/feeds/pmc.atom.xml
index 2982b8b..8b170e6 100644
--- a/blog/feeds/pmc.atom.xml
+++ b/blog/feeds/pmc.atom.xml
@@ -47,112 +47,36 @@ improved performance and efficiency without requiring any 
code changes.&lt;/p&gt
 contributors. See the &lt;a 
href="https://github.com/apache/datafusion-comet/blob/main/docs/source/changelog/1.0.0.md"&gt;change
 log&lt;/a&gt; for the full list of changes.&lt;/p&gt;
 &lt;h2 id="the-road-to-10"&gt;The Road to 1.0&lt;a class="headerlink" 
href="#the-road-to-10" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;Comet was &lt;a 
href="https://datafusion.apache.org/blog/2024/03/06/comet-donation/"&gt;donated&lt;/a&gt;
 to the Apache DataFusion project in March 2024 and cut its first release, 
0.1.0, five
-months later with 15 data types, 13 operators, 106 expressions, and a "modest 
performance speedup." The
-sixteen major releases between then and now cover a lot of ground:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Query coverage went from a handful of operators to the 
shape of a real Spark query.&lt;/strong&gt; Native
-  SortMergeJoin, HashJoin, and BroadcastHashJoin landed early; native columnar 
and native shuffle,
-  broadcast nested loop joins, native window functions, native sampling, and 
mixed partial/final aggregation
-  followed. Supported expressions grew from 106 at 0.1.0 to more than 400 in 
1.0.0, and the introduction of the JVM
-  codegen dispatcher in 0.17.0 gave Comet a way to keep unsupported 
expressions Arrow-native by running
-  Spark's own generated code inside the pipeline rather than falling back to 
row-based execution.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Spark support broadened.&lt;/strong&gt; The 0.1.0 
release targeted Spark 3.3, 3.4, and 3.5, with experimental 4.0. The
-  1.0 line drops 3.3, adds 4.1, and ships an experimental 4.2 profile. ANSI 
semantics — on by default in
-  Spark 4 — moved from partial to a supported default across the natively 
implemented surface.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;The ecosystem story filled in.&lt;/strong&gt; Native 
Iceberg support arrived in 0.10.0 and has been extended through
-  1.11 and format V3, native Parquet writes and CSV reads landed as 
experimental features and matured,
-  Azure joined S3 on the native cloud path, and 1.0.0 adds experimental 
accelerated PyArrow UDFs alongside the
-  Java and Scala UDF support that shipped in 0.17.0.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Correctness rigor grew alongside the surface 
area.&lt;/strong&gt; Early releases relied on fuzz testing to surface
-  divergences; later releases added a full Spark SQL test-suite run against 
every supported Spark version,
-  followed by AI-assisted expression audits comparing Comet's behavior against 
every supported Spark version
-  edge case by edge case. 1.0 ships with every known open correctness gap 
documented in the compatibility
-  guide.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Performance moved from "modest speedup" to 
workload-level wins.&lt;/strong&gt; TPC-DS at 1TB has become the reference
-  workload, with successive releases removing FFI round trips, caching Parquet 
metadata, shrinking plan
-  serialization, and tightening the shuffle write path. 0.17.0 alone was ~9% 
faster than 0.16.0 on TPC-DS
-  1TB, and the per-expression optimization work in 1.0 continues that 
trajectory.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;h2 id="what-10-means"&gt;What 1.0 Means&lt;a class="headerlink" 
href="#what-10-means" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Beyond the accumulated features, 1.0 is where the project commits to 
being something you can build on:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Broad Spark coverage.&lt;/strong&gt; Comet supports 
Apache Spark 3.4.3, 3.5.9, 4.0.4, and 4.1.3 out of the same
-  codebase, with dedicated Maven profiles, shim sources, and CI matrices for 
each, plus an experimental
-  Spark 4.2 profile for early evaluation. A published Spark version adoption 
and support-lifetime policy
-  now states how long each Spark minor stays supported.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;ANSI SQL by default.&lt;/strong&gt; Spark 4 enables 
ANSI semantics by default. Comet implements ANSI behavior for the
-  expressions it supports natively, including arithmetic overflow checks, ANSI 
cast behavior, and &lt;code&gt;try_*&lt;/code&gt;
-  variants, so ANSI workloads keep accelerating rather than falling 
back.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;A correctness harness, not just unit 
tests.&lt;/strong&gt; Comet runs the full Apache Spark SQL test suite through 
its
-  native execution path against every supported Spark version. Running Spark's 
own correctness tests is what
-  surfaces semantic shifts before they reach user workloads, and it is the 
foundation of the confidence behind
-  a 1.0 release.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;A stable release line going forward.&lt;/strong&gt; 
With 1.0, the project commits to semantic versioning. Because Comet
-  is a plugin rather than a library, its configuration is its primary API 
surface, so &lt;code&gt;spark.comet.*&lt;/code&gt; keys, an
-  explicitly enumerated public Java and Scala API, and query results 
documented as Compatible are all part of
-  the compatibility surface. Behavior changes in a minor release now require a 
&lt;code&gt;spark.comet.legacy.*&lt;/code&gt; key that
-  restores the previous behavior, and each release records its behavior 
changes in a user-facing upgrade
-  guide. Correctness fixes are exempt from being treated as breaking changes. 
The first deprecations under
-  that policy are announced in this release (see &lt;a 
href="#deprecation-notice"&gt;Deprecation Notice&lt;/a&gt; below).&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Documented limitations.&lt;/strong&gt; Every open 
correctness issue is now surfaced in the generated compatibility
-  guide, down to the expression level, so you can see where Comet is known to 
diverge from Spark before you
-  hit it in production rather than after.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;p&gt;The rest of this post covers what is new since 0.17.0.&lt;/p&gt;
-&lt;h2 id="native-expression-performance"&gt;Native Expression 
Performance&lt;a class="headerlink" href="#native-expression-performance" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;A large share of this release is dedicated to making Comet's native 
scalar expressions faster. These kernels
-run per-row or per-batch, so improvements here compound across every query 
that uses them. Expressions with
-optimized implementations in this release include:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Casts&lt;/strong&gt; between numeric, string, decimal, 
and date types, including a faster float-to-decimal cast, an
-  optimized integer-to-integer cast, shared no-overflow fast paths in 
&lt;code&gt;CheckOverflow&lt;/code&gt; and
-  &lt;code&gt;DecimalRescaleCheckOverflow&lt;/code&gt;, and a 
&lt;code&gt;cast_binary_to_string&lt;/code&gt; that is up to 27x faster on 
binary-format
-  styles.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;JSON, regex, and URL parsing&lt;/strong&gt;: 
&lt;code&gt;get_json_object&lt;/code&gt;, 
&lt;code&gt;regexp_extract&lt;/code&gt;, and 
&lt;code&gt;parse_url&lt;/code&gt;.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Date/time and decimal kernels&lt;/strong&gt;: 
&lt;code&gt;date_trunc&lt;/code&gt;, &lt;code&gt;spark_ceil&lt;/code&gt;, and a 
vectorized &lt;code&gt;spark_unscaled_value&lt;/code&gt;.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;String and array kernels&lt;/strong&gt;: 
&lt;code&gt;lpad&lt;/code&gt;, &lt;code&gt;unhex&lt;/code&gt;, 
&lt;code&gt;size&lt;/code&gt;, &lt;code&gt;arrays_overlap&lt;/code&gt;, 
&lt;code&gt;escape_string&lt;/code&gt;, and the &lt;code&gt;try_*&lt;/code&gt;
-  arithmetic kernel.&lt;/li&gt;
+months later with support for 13 operators, and 106 expressions.&lt;/p&gt;
+&lt;p&gt;Comet 1.0.0 now supports more than 400 expressions, but that isn't 
the only way the project has grown over this time.&lt;/p&gt;
+&lt;p&gt;Here's a recap of some of the main advances over the past two 
years&lt;/p&gt;
+&lt;h3 id="correctness-testing"&gt;Correctness Testing&lt;a class="headerlink" 
href="#correctness-testing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;It is important that queries accelerated by Comet produce the same 
results as Spark. Correctness checking has always been a large effort in Comet 
development, but the approach has evolved over time.&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Comet has always run Spark's own test suite with Comet enabled, 
providing more than 24,000 unit tests effectively for free. These tests run in 
Comet's CI for all supported Spark versions.&lt;/li&gt;
+&lt;li&gt;Scala tests: Comet has Scala tests that run queries end to end with 
Comet enabled vs disabled and ensure that the results match&lt;/li&gt;
+&lt;li&gt;Fuzz testing: Many of the scala tests use a fuzz testing approach to 
generate randomized data that queries run against, helping to catch regressions 
around edge cases such as nulls, NaN, Infinity, and timezone issues&lt;/li&gt;
+&lt;li&gt;Comet SQL Tests: In an effort to make it easier to write tests, 
Comet now provides a SQL-based testing approach that is inspired by 
sqllogictest&lt;/li&gt;
+&lt;li&gt;Generative AI: More recently, Comet has taken advantage of agentic 
skills to perform audit sweeps of ll expressions, comapring the implementation 
to Spark's souce code and ensuring that Comet has tests covering all important 
edge cases&lt;/li&gt;
 &lt;/ul&gt;
-&lt;p&gt;To make this kind of work repeatable, the release also adds a scalar 
expression optimization guide
-documenting how to benchmark a kernel, keep its output bit-identical to Spark, 
and gate changes on a
-no-regression check.&lt;/p&gt;
-&lt;p&gt;Parquet reads pick up several improvements as well. Full Parquet 
metadata, including the page index, is now
-cached via DataFusion's 
&lt;code&gt;CachedParquetFileReaderFactory&lt;/code&gt;; identity casts are 
unwrapped in the schema adapter
-so Parquet statistics pruning can engage; filter pushdown configuration has 
been revised; the native scan
-passes a metadata size hint so a single read usually captures the footer; and 
the native Parquet scan seeds
-its reader options from the session config so Parquet settings you already set 
take effect.&lt;/p&gt;
-&lt;p&gt;Query planning and plan serialization also got cheaper. 
&lt;code&gt;QueryContext&lt;/code&gt; SQL text is now interned into a
-per-plan pool, which makes serialized plans up to 20x smaller on TPC-DS — 
every plan crosses the JNI
-boundary, so this shrinks per-query overhead across the board. Plan-data 
injection is now an O(1) lookup by
-operator kind and no longer rebuilds operators it does not touch. Comet also 
makes far fewer timer calls in
-the native execution loop.&lt;/p&gt;
-&lt;h2 id="correctness"&gt;Correctness&lt;a class="headerlink" 
href="#correctness" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Correctness fixes have been a regular part of every Comet release, 
but for 1.0 we made an extra push to
-clear out the bulk of the known issues before drawing a line under the stable 
release. This release fixes
-roughly 30 divergences from Spark, spanning casts, ANSI error semantics, 
wrong-result bugs, string and
-encoding handling, collations, and error reporting. Most were found by running 
extensive AI-assisted audit
-sweeps of the code base, comparing Comet's expression implementations with all 
supported versions of Spark.
-See the &lt;a 
href="https://github.com/apache/datafusion-comet/blob/main/docs/source/changelog/1.0.0.md"&gt;change
 log&lt;/a&gt; for the full list; two representative fixes give a sense of the 
shape of the work:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Whitespace trimming in string-to-numeric 
casts.&lt;/strong&gt; Casts to &lt;code&gt;boolean&lt;/code&gt;, integral 
types, &lt;code&gt;float&lt;/code&gt;/&lt;code&gt;double&lt;/code&gt;,
-  and &lt;code&gt;decimal&lt;/code&gt; now use Spark's exact trim rules. 
Comet's kernels had used four different trim sets, three of
-  them wrong, so results diverged in both directions — returning null where 
Spark parses a value, and
-  returning a value where Spark returns null.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;ANSI errors swallowed by null 
short-circuit.&lt;/strong&gt; The codegen dispatcher's null short-circuit no 
longer
-  swallows errors Spark raises. Spark evaluates null-intolerant expressions 
per node and left to right, so
-  short-circuiting on the union of input ordinals skipped subtrees Spark would 
have evaluated, losing their
-  errors. Roughly 70 built-in expressions route through this dispatcher and 
ANSI is on by default in Spark 4,
-  so this affected a wide surface.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;p&gt;Alongside the bug fixes, Comet also adds conservative fallbacks where 
native behavior could not be made to
-match — decimal &lt;code&gt;SUM&lt;/code&gt; / &lt;code&gt;AVG&lt;/code&gt; 
over sliding window frames, &lt;code&gt;FromUnixTime&lt;/code&gt; with a 
non-default format, and a
-handful of others — and falls back for predicates and datetime expressions 
under non-default collations
-rather than risking a wrong result.&lt;/p&gt;
-&lt;h2 id="new-expression-and-aggregate-support"&gt;New Expression and 
Aggregate Support&lt;a class="headerlink" 
href="#new-expression-and-aggregate-support" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;This release expands the set of Spark expressions and aggregates that 
run natively:&lt;/p&gt;
+&lt;h3 id="performance"&gt;Performance&lt;a class="headerlink" 
href="#performance" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;The early Comet releases provided a very modest speedup and the 
published benchmark results were based on running TPC workloads at small scale 
factors on a single node. There are now independent benchmark results published 
by AWS Labs that show significant speedups for TPC-DS @ 3TB running in 
EKS.&lt;/p&gt;
+&lt;h3 id="codegen-dispatch"&gt;Codegen Dispatch&lt;a class="headerlink" 
href="#codegen-dispatch" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;Matt TBD&lt;/p&gt;
+&lt;h2 id="improvements-since-0171"&gt;Improvements since 0.17.1&lt;a 
class="headerlink" href="#improvements-since-0171" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;The rest of this post covers what is new since the 0.17.1 
release.&lt;/p&gt;
+&lt;h3 id="experimental-pyarrow-udf-support"&gt;Experimental PyArrow UDF 
Support&lt;a class="headerlink" href="#experimental-pyarrow-udf-support" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;This release adds experimental support for accelerated PyArrow UDFs, 
allowing PyArrow-based user-defined
+functions to participate in native execution instead of forcing a fallback to 
Spark. When the feature is
+disabled, Comet now hints at the native PyArrow UDF path in its fallback 
reasons so users know the option
+exists. This is an early-stage feature and we welcome feedback from users 
experimenting with it.&lt;/p&gt;
+&lt;h3 id="new-expression-and-aggregate-support"&gt;New Expression and 
Aggregate Support&lt;a class="headerlink" 
href="#new-expression-and-aggregate-support" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;This release expands the set of Spark expressions and aggregates that 
are accelerated by Comet:&lt;/p&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;strong&gt;Aggregates&lt;/strong&gt;: 
&lt;code&gt;approx_percentile&lt;/code&gt; / 
&lt;code&gt;percentile_approx&lt;/code&gt;, exact 
&lt;code&gt;percentile&lt;/code&gt; / &lt;code&gt;median&lt;/code&gt;,
-  &lt;code&gt;approx_count_distinct&lt;/code&gt;, and native 
&lt;code&gt;collect_list&lt;/code&gt; / 
&lt;code&gt;array_agg&lt;/code&gt;.&lt;/li&gt;
+  &lt;code&gt;approx_count_distinct&lt;/code&gt;, and native 
&lt;code&gt;collect_list&lt;/code&gt; / &lt;code&gt;array_agg&lt;/code&gt;.
+  &lt;strong&gt;Cast&lt;/strong&gt;: Cast expressions where the native 
implementation is marked as incompatible or unsupported 
+  are now routed through codegen dispatch.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Grouping&lt;/strong&gt;: 
&lt;code&gt;grouping()&lt;/code&gt; and 
&lt;code&gt;grouping_id()&lt;/code&gt;.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Intervals&lt;/strong&gt;: interval types via 
&lt;code&gt;make_ym_interval&lt;/code&gt; and 
&lt;code&gt;make_dt_interval&lt;/code&gt;, 
&lt;code&gt;CalendarIntervalType&lt;/code&gt;,
   &lt;code&gt;multiply_dt_interval&lt;/code&gt;, and interval codegen dispatch 
for nested values and native shuffle.&lt;/li&gt;
@@ -164,89 +88,30 @@ rather than risking a wrong result.&lt;/p&gt;
   &lt;code&gt;PreciseTimestampConversion&lt;/code&gt; for native time-window 
grouping.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;: extended native window 
function support and Spark 4 decimal window average.&lt;/li&gt;
 &lt;/ul&gt;
-&lt;h2 id="native-sampling"&gt;Native Sampling&lt;a class="headerlink" 
href="#native-sampling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Spark's &lt;code&gt;SampleExec&lt;/code&gt; now runs natively when 
sampling without replacement, covering 
&lt;code&gt;DataFrame.sample&lt;/code&gt;, SQL
-&lt;code&gt;TABLESAMPLE&lt;/code&gt;, and 
&lt;code&gt;DataFrame.randomSplit&lt;/code&gt;. The native operator ports 
Spark's &lt;code&gt;BernoulliCellSampler&lt;/code&gt; on top of
-&lt;code&gt;XorShiftRandom&lt;/code&gt; and seeds per partition exactly as 
Spark does, so it selects the same rows for a given seed —
-sampling stays reproducible whether or not Comet is enabled. Sampling with 
replacement still falls back to
-Spark.&lt;/p&gt;
-&lt;h2 id="experimental-pyarrow-udf-support"&gt;Experimental PyArrow UDF 
Support&lt;a class="headerlink" href="#experimental-pyarrow-udf-support" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;This release adds experimental support for accelerated PyArrow UDFs, 
allowing PyArrow-based user-defined
-functions to participate in native execution instead of forcing a fallback to 
Spark. When the feature is
-disabled, Comet now hints at the native PyArrow UDF path in its fallback 
reasons so users know the option
-exists. This is an early-stage feature and we welcome feedback from users 
experimenting with it.&lt;/p&gt;
-&lt;h2 id="iceberg"&gt;Iceberg&lt;a class="headerlink" href="#iceberg" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
+&lt;h3 id="faster-parquet-scans"&gt;Faster Parquet Scans&lt;a 
class="headerlink" href="#faster-parquet-scans" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;Parquet reads pick up several improvements as well. Full Parquet 
metadata, including the page index, is now
+cached via DataFusion's 
&lt;code&gt;CachedParquetFileReaderFactory&lt;/code&gt;; identity casts are 
unwrapped in the schema adapter
+so Parquet statistics pruning can engage; filter pushdown configuration has 
been revised; the native scan
+passes a metadata size hint so a single read usually captures the footer; and 
the native Parquet scan seeds
+its reader options from the session config so Parquet settings you already set 
take effect.&lt;/p&gt;
+&lt;h3 id="iceberg-table-format-v3"&gt;Iceberg Table Format V3&lt;a 
class="headerlink" href="#iceberg-table-format-v3" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;Comet now supports Iceberg 1.11 and Iceberg table format V3 (with 
native table decryption for V3 tables and
 fallback to Spark for other V3 features). The native Iceberg scan supports the 
&lt;code&gt;_pos&lt;/code&gt;, &lt;code&gt;_spec&lt;/code&gt;, 
&lt;code&gt;_file&lt;/code&gt;, and
 &lt;code&gt;_partition&lt;/code&gt; metadata columns, sizes delete files 
correctly to avoid dropped deletes, disambiguates scans that
 share a &lt;code&gt;metadata_location&lt;/code&gt;, and dedupes residuals and 
delete files in the native scan serde. A prior case
-where Iceberg native scan exchange reuse with different pushed filters could 
produce wrong results is also
-fixed.&lt;/p&gt;
-&lt;h2 id="native-parquet-io-and-cloud"&gt;Native Parquet I/O and Cloud&lt;a 
class="headerlink" href="#native-parquet-io-and-cloud" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Native Parquet writes now support gzip compression, and the native 
Parquet scan supports Azure authentication,
-complementing the existing S3 credential support.&lt;/p&gt;
-&lt;h2 id="execution-and-fallback-improvements"&gt;Execution and Fallback 
Improvements&lt;a class="headerlink" 
href="#execution-and-fallback-improvements" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Mixed partial/final aggregation.&lt;/strong&gt; 
&lt;code&gt;sum&lt;/code&gt; and non-decimal &lt;code&gt;avg&lt;/code&gt; can 
now run with the partial and final
-  aggregation stages split across Spark and Comet, keeping more aggregation 
plans partially native.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Codegen dispatch for opt-in serdes.&lt;/strong&gt; 
Expressions reported as &lt;code&gt;Unsupported&lt;/code&gt; can now route 
through JVM
-  codegen dispatch for opt-in serdes, and native opt-in expressions surface as 
compatible-by-default with a
-  &lt;code&gt;COMET-INFO&lt;/code&gt; plan hint. Casts join this path: an 
incompatible or unsupported cast now runs Spark's own
-  generated code inside the Comet pipeline instead of pulling the whole 
operator back to Spark, so one
-  awkward cast no longer de-accelerates a query. 
&lt;code&gt;sort_array&lt;/code&gt; under strict floating-point mode and 
&lt;code&gt;concat&lt;/code&gt;
-  under non-&lt;code&gt;UTF8_BINARY&lt;/code&gt; collations opt in the same 
way.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;JVM columnar-to-row by default.&lt;/strong&gt; 
Isolated benchmarking showed the native columnar-to-row converter is
-  roughly 3.7x slower per row than the JVM implementation at the default batch 
size — and up to 15.7x slower
-  for small batches — because of a fixed per-batch JNI and FFI cost, with no 
end-to-end benefit in TPC-DS
-  runs. It is now disabled by default.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Clearer fallback reasons.&lt;/strong&gt; Unsupported 
scalar serde cases are reported in the support level,
-  mixed-execution fallback messages name the incompatible aggregate functions, 
unsupported metadata column
-  names appear in fallback reasons, and the spurious "WriteFilesExec is not 
supported" message is suppressed.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Expression coverage in extended 
explain.&lt;/strong&gt; The extended explain summary previously reported 
operator
-  coverage but said nothing about expressions. It now ends with a line such as 
&lt;code&gt;Comet accelerated 14
-  expressions (14 native, 1 codegen dispatch)&lt;/code&gt;, so you can see how 
much of a plan's expression evaluation
-  runs in native DataFusion kernels versus Spark's generated code inside the 
dispatcher.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Quieter logs and runtime cleanup.&lt;/strong&gt; 
Logging levels on frequent call sites have been lowered so Comet no
-  longer floods executor logs at default settings, and the Tokio runtime is 
now released on driver and
-  executor exit.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;h2 id="shuffle-improvements"&gt;Shuffle Improvements&lt;a 
class="headerlink" href="#shuffle-improvements" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
+where Iceberg native scan exchange reuse with different pushed filters could 
produce wrong results is also&lt;/p&gt;
+&lt;h3 id="native-expression-performance"&gt;Native Expression 
Performance&lt;a class="headerlink" href="#native-expression-performance" 
title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
+&lt;p&gt;Many native expression implementations have been optimized to more 
efficiently leverage Arrow kernels or to avoid per-row builders.&lt;/p&gt;
 &lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Native shuffle memory cap.&lt;/strong&gt; A new 
&lt;code&gt;spark.comet.shuffle.maxBufferBytes&lt;/code&gt; config caps native 
shuffle writer
-  memory to bound worst-case usage.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Shuffle IPC schema encoding.&lt;/strong&gt; The IPC 
schema is now encoded once per writer instead of per block,
-  cutting per-batch shuffle overhead.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;BatchCoalescer bypass.&lt;/strong&gt; Shuffle bypasses 
the &lt;code&gt;BatchCoalescer&lt;/code&gt; for batches that are already 
appropriately
-  sized.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Single-partition shuffle.&lt;/strong&gt; A redundant 
concatenation layer has been removed from the single-partition
-  path.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;h2 id="configuration-changes"&gt;Configuration Changes&lt;a 
class="headerlink" href="#configuration-changes" title="Permanent 
link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;Because configuration is Comet's primary API surface, 1.0 is the 
release where the naming gets cleaned up.
-Every rename below registers the old key as an alias, so existing 
configurations keep working and log a
-deprecation warning when an old key is read:&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;strong&gt;Unified shuffle prefix.&lt;/strong&gt; Shuffle configs 
were spread across four disjoint prefixes
-  (&lt;code&gt;spark.comet.exec.shuffle.*&lt;/code&gt;, 
&lt;code&gt;spark.comet.columnar.shuffle.*&lt;/code&gt;, 
&lt;code&gt;spark.comet.native.shuffle.*&lt;/code&gt;,
-  &lt;code&gt;spark.comet.shuffle.*&lt;/code&gt;). They now all live under 
&lt;code&gt;spark.comet.shuffle.*&lt;/code&gt;, with 
&lt;code&gt;.jvm.&lt;/code&gt; and &lt;code&gt;.native.&lt;/code&gt;
-  sub-namespaces matching the 
&lt;code&gt;spark.comet.shuffle.mode&lt;/code&gt; value you already 
set.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Grouped explain configs.&lt;/strong&gt; The orphan 
explain-related configs are collected under a single
-  &lt;code&gt;spark.comet.explain.*&lt;/code&gt; prefix, and the PyArrow UDF 
config is renamed to &lt;code&gt;pyarrowUDF&lt;/code&gt; for 
consistency.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;&lt;code&gt;spark.comet.version&lt;/code&gt;.&lt;/strong&gt;
 The loaded Comet build version is now exposed as a runtime config, so you can
-  confirm which Comet a cluster is actually running with 
&lt;code&gt;spark.conf.get&lt;/code&gt; or 
&lt;code&gt;SET&lt;/code&gt;.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Removed dead configs.&lt;/strong&gt; The Parquet 
parallel-IO knobs, 
&lt;code&gt;spark.comet.use.lazyMaterialization&lt;/code&gt;, and
-  &lt;code&gt;spark.comet.exceptionOnDatetimeRebase&lt;/code&gt; had no 
remaining effect and were misleading anyone tuning against
-  them.&lt;/li&gt;
-&lt;li&gt;&lt;strong&gt;Removed async columnar shuffle.&lt;/strong&gt; The 
&lt;code&gt;spark.comet.columnar.shuffle.async.*&lt;/code&gt; path was off by 
default and
-  untested, and has been removed rather than carried into a stable release 
line.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;Casts&lt;/strong&gt; between numeric, string, decimal, 
and date types, including a faster float-to-decimal cast, an
+  optimized integer-to-integer cast, shared no-overflow fast paths in 
&lt;code&gt;CheckOverflow&lt;/code&gt; and
+  &lt;code&gt;DecimalRescaleCheckOverflow&lt;/code&gt;, and a 
&lt;code&gt;cast_binary_to_string&lt;/code&gt; that is up to 27x faster on 
binary-format
+  styles.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;JSON, regex, and URL parsing&lt;/strong&gt;: 
&lt;code&gt;get_json_object&lt;/code&gt;, 
&lt;code&gt;regexp_extract&lt;/code&gt;, and 
&lt;code&gt;parse_url&lt;/code&gt;.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;Date/time and decimal kernels&lt;/strong&gt;: 
&lt;code&gt;date_trunc&lt;/code&gt;, &lt;code&gt;spark_ceil&lt;/code&gt;, and a 
vectorized &lt;code&gt;spark_unscaled_value&lt;/code&gt;.&lt;/li&gt;
+&lt;li&gt;&lt;strong&gt;String and array kernels&lt;/strong&gt;: 
&lt;code&gt;lpad&lt;/code&gt;, &lt;code&gt;unhex&lt;/code&gt;, 
&lt;code&gt;size&lt;/code&gt;, &lt;code&gt;arrays_overlap&lt;/code&gt;, 
&lt;code&gt;escape_string&lt;/code&gt;, and the &lt;code&gt;try_*&lt;/code&gt;
+  arithmetic kernel.&lt;/li&gt;
 &lt;/ul&gt;
-&lt;h2 id="documentation"&gt;Documentation&lt;a class="headerlink" 
href="#documentation" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
-&lt;p&gt;The documentation received a substantial overhaul for 1.0: a design 
refresh of the docs site, versioned user
-guides with captioned sidebar sections, and a set of accessibility and 
navigation fixes. The
-supported-expressions page now shows how each expression is implemented — 
native, codegen dispatch, or hybrid
-— generated from the planner itself rather than maintained by hand. An 
expanded tuning guide covers the
-performance and memory configs that matter in practice, and there is an 
updated post-1.0 roadmap and a new
-blog posts and talks page.&lt;/p&gt;
 &lt;h2 id="deprecation-notice"&gt;Deprecation Notice&lt;a class="headerlink" 
href="#deprecation-notice" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;With the move to a stable 1.0 release line, Comet begins deprecating 
older platforms under semantic
 versioning:&lt;/p&gt;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to