# 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.