Skip to content

Releases: bodo-ai/Bodo

2025.12.1

23 Dec 15:05
35fe92c

Choose a tag to compare

What's Changed

Full Changelog: 2025.12...2025.12.1

2025.12

10 Dec 20:23

Choose a tag to compare

Bodo 2025.12 Release (Date: 12/11/2025) {#December_2025}

🎉 Highlights

This release, we are excited to add Join Filters in the plan optimizer, significantly improving performance on real workloads. We also improve Bodo's timezone support and fix several minor bugs.

✨ New Features

  • Support datetime.datetime in query plans.
  • Validate repl argument of Series.str.replace same as Pandas.
  • Improve concat output order.
  • Support Series.take().
  • Support timezones in to_datetime.

🏎️ Performance Improvements

  • Add Join Filters to remove rows with keys that won’t match a join key as early as possible.
  • Box/unbox date arrays using Arrow.
  • Box/unbox time arrays using Arrow.

🐛 Bug Fixes

  • Avoid hang in scattering BodoSeries.
  • Fix explode bug for Arrow large list type.
  • Allow int64/uint64 mismatch in some internal data structures.
  • Fix for ArrowExtensionArray iloc indexing.
  • Fix timezone in convert_dtypes.
  • Fix for nested join.
  • Fixed remove unused column pass to keep column references alive in conjunction with duckdb version upgrade.
  • Better support for operations that result in empty dataframes.

Full Changelog: 2025.11.2...2025.12

2025.11.2

25 Nov 16:57
8aa0fec

Choose a tag to compare

What's Changed

Full Changelog: 2025.11.1...2025.11.2

2025.11.1

19 Nov 18:57
555d285

Choose a tag to compare

What's Changed

Full Changelog: 2025.11.0...2025.11.1

2025.11.0

05 Nov 17:49
c447d22

Choose a tag to compare

What's Changed

Full Changelog: 2025.10.2...2025.11.0

2025.10.2

21 Oct 14:35
df9a6b5

Choose a tag to compare

What's Changed

Full Changelog: 2025.10.1...2025.10.2

2025.10.1

20 Oct 16:22

Choose a tag to compare

What's Changed

Full Changelog: 2025.10...2025.10.1

2025.10

03 Oct 19:09
de6d7ba

Choose a tag to compare

Bodo 2025.10 Release (Date: 10/03/2025)

🎉 Highlights

This release, we are excited to significantly improve the responsiveness of Bodo DataFrames with lazy JIT imports, optimize performance with Common Table Expressions (CTEs), as well as upgrade to Arrow 21.

✨ New Features

  • Getting the length of a BodoDataFrame or BodoSeries now returns a lazily evaluated BodoScalar.
  • Add support for subset argument to drop_duplicates.

🏎️ Performance Improvements

  • Support lazy BodoScalar binary operations for better optimizations.
  • Recognize duplicate computations in execution trees and execute them only once using Common Table Expressions (CTEs).
  • Support internal gather/scatter calls without JIT for faster response times.
  • Support Iceberg read/write without JIT import for faster response times.

⚙️ Dependency Changes

  • Upgraded Arrow dependency to 21.0.

2025.9

18 Sep 20:23
888788d

Choose a tag to compare

Bodo 2025.9 Release (Date: 09/18/2025)

🎉 Highlights

This release, we are excited to significantly improve the import time of the Bodo package, as well as introduce new features like Series.where support and lazy BodoScalars.

✨ New Features

  • Bodo DataFrames now imports the JIT compiler lazily only when necessary, which reduces import time substantially.
  • Support for Series.where().
  • Series reductions such as “sum” or “max” now produce a BodoScalar that is evaluated lazily and can be used in some operations such as Series.where() and filter expressions without execution.
  • Optimized support for “not in series” cases like df[~df.A.isin(df.B)] using anti-join.
  • Support for bodo.pandas uses inside JIT functions.
  • Anthropic models used through AWS Bedrock now use Anthropic’s messages API to support newer versions of Claude.

🐛 Bug Fixes

  • Fix for join non-equi condition keys that are not part of the output.
  • Fix for Series expression with non-range Indexes.

🏎️ Performance Improvements

  • Improved the initialization time for cfuncs used in the acceleration of user defined functions in Series.map and DataFrame.apply calls.

⚙️ Dependency Changes

  • Added upper bound to Numba dependency to avoid issues with version 0.62.

2025.8.2

28 Aug 18:53
6ea7566

Choose a tag to compare

New Features

Support for AWS Bedrock backend for llm_generate and embed.
Support passing user defined functions that return scalars to groupby.agg and groupby.apply
Support renaming DataFrame column using df.columns = [...] syntax
Add API map_partition_with_state to DataFrame that allows you to do a one-time initialization of state on each worker which can then be used to map batches of rows from a DataFrame to produce a new DataFrame.
Added JIT fallback to Bodo DataFrames such that operations not supported natively in DataFrames can use the equivalent operation from Bodo engine.

Performance Improvements

Improve Series.quantile/describe performance.
Improve the performance of fetching row counts for Parquet datasets
Improve package import time and worker spinup time substantially

Bug Fixes

Fix a crash with llm_generate and embed in Jupyter Notebooks/when an asyncio executor is already running.
Fix OpenAI environment variables not being sent to workers.
Fix bug in loss computation when fitting LogisticRegression in parallel.
Fix crash when running map/apply on large numbers of workers