Migration Guide V2.0.0

This guide covers breaking changes introduced in ifm3d v2.0.0.

Python Version Support Changes

Python Version Support Policy

Starting with v2.0.0, ifm3d will support all non-EOL versions of Python 3. At the time of this release, this includes Python 3.10 through 3.14.

Removed Support for Python 3.9

Python 3.9 reached end-of-life and is no longer supported. The minimum required Python version is now 3.10.

Migration: Upgrade your Python environment to version 3.10 or newer.

Added Support for Python 3.14

Python 3.14.0 is now officially supported.

Platform Support Changes

Ubuntu Version Support Policy

Starting with v2.0.0, ifm3d will support the latest 2 LTS releases of Ubuntu. Currently this means:

  • Supported: Ubuntu 22.04 LTS and Ubuntu 24.04 LTS

  • Removed: Ubuntu 20.04 LTS

L4T-Based Docker Images

Support for l4t-based docker images has been dropped in v2.0.0.

Migration for l4t users: Users who need l4t-based images for on-device hardware-accelerated workloads should stay on the v1.6.x branch, which will continue to receive bugfixes but no new features.

Migration for Ubuntu 20.04 users: Upgrade to Ubuntu 22.04 or 24.04 to continue receiving prebuilt packages.

Build Dependency Changes

Replacement of curl and xmlrpc-c

ifm3d now uses cpp-httplib and tinyxml2 instead of curl and xmlrpc-c for HTTP and XML-RPC communication.

Impact: This change only affects users who build ifm3d from source. Runtime behavior and API remain unchanged.

Migration for source builds:

  • Remove curl and xmlrpc-c from your build dependencies

  • The new dependencies (cpp-httplib and tinyxml2) are fetched automatically via CMake’s FetchContent

No code changes are required in your application.

C++ API Breaking Changes

Name changes due to enforcement of code-style

Code-style is now enforced using clang-format as such some code has been adjusted to follow the naming conventions:

Old Name

New Name

ifm3d::buffer_id

ifm3d::BufferId

ifm3d::pixel_format

ifm3d::PixelFormat

ifm3d::image_chunk

ifm3d::ImageChunk

ifm3d::intrinsic_param

ifm3d::IntrinsicParam

ifm3d::Device::boot_mode

ifm3d::Device::BootMode

ifm3d::Device::operating_mode

ifm3d::Device::OperatingMode

ifm3d::Device::trigger_mode

ifm3d::Device::TriggerMode

ifm3d::Device::import_flags

ifm3d::Device::ImportFlags

ifm3d::Device::spatial_filter

ifm3d::Device::SpatialFilter

ifm3d::Device::temporal_filter

ifm3d::Device::TemporalFilter

ifm3d::Device::mfilt_mask_size

ifm3d::Device::MedianfilterMaskSize

ifm3d::Device::device_family

ifm3d::Device::DeviceFamily

ifm3d::Device::swu_version

ifm3d::Device::SWUVersion

ifm3d::O3DILLUTemperature

ifm3d::O3DIlluTemperature

ifm3d::Buffer::clone

ifm3d::Buffer::Clone

Please update any references to these names.

Summary of Breaking Changes

  1. Python Support: Only non-EOL Python versions supported (currently 3.10 through 3.14)

    • Python 3.9 no longer supported - upgrade to Python 3.10+

  2. Ubuntu Support: Only the latest 2 LTS releases supported (currently 22.04 and 24.04)

    • Ubuntu 20.04 no longer in official build matrix

  3. L4T Support: L4T-based docker images dropped - use v1.6.x branch for continued l4t support

  4. Build dependencies: curl and xmlrpc-c replaced with cpp-httplib and tinyxml2 (build-time only)

  5. C++ API Changes due to enforcement of code-style, see above for the full list

C++ applications will require code changes to adapt to the renamed types and methods. Platform and Python version upgrades may also be required for continued support.