Announcing DuckDB 1.4.3 LTS

The DuckDB team
2025-12-09 · 3 min

TL;DR: Today we are releasing DuckDB 1.4.3. Along with bugfixes, we are shipping native extensions and Python support for Windows ARM64.

In this blog post, we highlight a few important fixes in DuckDB v1.4.3, the third patch release in DuckDB's 1.4 LTS line. You can find the complete release notes on GitHub.

To install the new version, please visit the installation page.

Fixes

This version ships a number of performance improvements and bugfixes.

Correctness

Crashes and Internal Errors

Performance

Miscellaneous

Windows ARM64

With this release, we are introducing beta support for Windows ARM64 by distributing native DuckDB extensions and Python wheels.

Extension Distribution for Windows ARM64

On Windows ARM64, you can now natively install core extensions, including complex ones like spatial:

duckdb
PRAGMA platform;
┌───────────────┐
│   platform    │
│    varchar    │
├───────────────┤
│ windows_arm64 │
└───────────────┘
INSTALL spatial;
LOAD spatial;
SELECT ST_Area(ST_GeomFromText(
        'POLYGON((0 0, 4 0, 4 3, 0 3, 0 0))'
    )) AS area;
┌────────┐
│  area  │
│ double │
├────────┤
│  12.0  │
└────────┘

Python Wheel Distribution for Windows ARM64

We now distribute Python wheels for Windows ARM64. This means that you take e.g. a Copilot+ PC and run:

pip install duckdb

This installs the duckdb package using the binary distributed through PyPI.

python
Python 3.13.9 (tags/v3.13.9:8183fa5, Oct 14 2025, 14:51:39) [MSC v.1944 64 bit (ARM64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import duckdb
>>> duckdb.__version__
'1.4.3'

Currently, many Python installations that you'll find on Windows ARM64 computers use the x86_64 (AMD64) Python distribution and run through Microsoft's Prism emulator. For example, if you install Python through the Windows Store, you will get the Python AMD64 installation.

To understand which platform your Python installation is using, observe the Python CLI's first line (e.g., Python 3.13.9 ... (ARM64)).

We used the tpch extension to perform a quick benchmark by running the queries on the TPC-H SF100 dataset. We executed the benchmark on a Microsoft Copilot+ Laptop with a 12-core Snapdragon CPU running at 3.4 GHz, 64 GB RAM and 1 TB disk:

Click here to see the benchmark snippet
import duckdb
import os
import time

con = duckdb.connect("tpch-sf100.db")

con.execute("INSTALL tpch")
con.execute("LOAD tpch")
con.execute("CREATE OR REPLACE TABLE timings(query INTEGER, runtime DOUBLE)")

print(f"Architecture: {os.environ.get('PROCESSOR_ARCHITECTURE')}")

for i in range(1, 23):    
    start = time.time()
    con.execute(f"PRAGMA tpch({i})")
    duration = time.time() - start
    print(f"Q{i}: {duration:.02f}")
    con.execute(f"INSERT INTO timings VALUES ({i}, {duration})")

res = con.execute(f"""
    SELECT median(runtime)::DECIMAL(8, 2), geomean(runtime)::DECIMAL(8, 2)
    FROM timings""").fetchall()
print(f"Median runtime: {res[0][0]}")
print(f"Geomean runtime: {res[0][1]}")
Click here to see the detailed TPC-H SF100 results on Windows ARM64
Architecture AMD64 ARM64 (native)
Q1 2.87 2.10
Q2 0.56 0.40
Q3 2.36 1.58
Q4 2.01 1.45
Q5 2.29 1.61
Q6 0.50 0.39
Q7 2.04 1.52
Q8 2.13 1.46
Q9 7.39 7.32
Q10 4.18 6.98
Q11 0.43 0.57
Q12 2.92 1.04
Q13 6.65 0.54
Q14 1.56 1.12
Q15 0.90 0.55
Q16 0.97 0.74
Q17 2.57 1.67
Q18 4.86 5.15
Q19 2.96 1.72
Q20 1.75 1.12
Q21 7.05 4.44
Q22 1.78 0.97
Median 2.21 1.49
Geomean 2.09 1.59

The AMD64 package (running in the emulator) yielded a geometric mean runtime of 2.09 seconds, while the native ARM64 package had a geomean runtime of 1.59 seconds – a 24% performance improvement.

Conclusion

This post was a short summary of the changes in v1.4.3. As usual, you can find the full release notes on GitHub. We would like to thank our contributors for providing detailed issue reports and patches. Stay tuned for DuckDB v1.4.4 and v1.5.0, both released early next year!