| layout | default | |||||||
|---|---|---|---|---|---|---|---|---|
| redirect_from |
|
|||||||
| title | Release Calendar | |||||||
| body_class | release-calendar blog_typography post | |||||||
| max_page_width | medium | |||||||
| toc | false |
DuckDB follows semantic versioning. Larger new features are introduced in minor versions, while patch versions mostly contain bugfixes.
The planned dates of upcoming DuckDB releases are shown below. Please note that these dates are tentative and DuckDB maintainers may decide to push back release dates to ensure the stability and quality of releases.
{% if site.data.upcoming_releases.size > 0 %}
| Date | Version |
|---|---|
| {%- for release in site.data.upcoming_releases %} | |
| {{ release.start_date }} | {{ release.title }} |
| {%- endfor %} | |
| {% else %} | |
| There are no upcoming releases announced at the moment. Please check back later. | |
| {% endif %} |
For planned new features, see the [DuckDB Development Roadmap]({% link roadmap.md %}).
Starting with v1.4.0, every other DuckDB version is going to be a Long-Term Support (LTS) edition. For LTS DuckDB versions, the support period for community support is currently a year after the release. DuckDB Labs is offering support for older LTS versions after their community support has expired.
For an overview of end-of-life information, see the DuckDB entry on endoflife.date.
There is no set date yet for the release of DuckDB v1.4.5. We will select the date as necessitated by the issues filed for the DuckDB v1.4.x line. For exampe, if we encounter a critical issue or vulnerability, we will expedite the release of v1.4.5.
In the following, we list DuckDB's past releases along with their codename where applicable. Between versions 0.2.2 and 0.3.3, all releases (including patch versions) received a codename. Since version 0.4.0, only major and minor versions get a codename.
| Date | Version | Codename | Named after | End of life | |
|---|---|---|---|---|---|
| {% for row in site.data.past_releases %} | |||||
| {%- capture logo_filename %}images/release-icons/{{ row.version_number }}.svg{% endcapture -%} | |||||
| {%- capture logo_exists %}{% file_exists {{ logo_filename }} %}{% endcapture -%} | |||||
| {% if logo_exists == "true" %}{% endif %} | {{ row.release_date }} | [{{ row.version_number }}{% if row.lts == "true" %} LTS{% endif %}](https://github.com/duckdb/duckdb/releases/tag/v{{ row.version_number }}) | {% if row.blog_post %}[{{ row.codename }}]({{ row.blog_post }}){% else %}{{ row.codename | default: "–" }}{% endif %} | {% if row.duck_wikipage %}{% endif %}{{ row.duck_species_primary |
| {% endfor %} |
You can get a CSV file containing past DuckDB releases and analyze it using DuckDB's [CSV reader]({% link docs/stable/data/csv/overview.md %}).
For example, you can compute the average number of days between releases using the [lag window function]({% link docs/stable/sql/functions/window_functions.md %}#lagexpr-offset-default-order-by-ordering-ignore-nulls):
SELECT avg(diff)::DECIMAL(8, 2) AS average_days_between_releases
FROM (
SELECT release_date - lag(release_date) OVER (ORDER BY release_date) AS diff
FROM 'https://duckdb.org/data/duckdb-releases.csv'
);