# Changelog

All notable changes to `ceres-solver-sys` Rust crate will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Added

--

### Changed

--

### Deprecated

--

### Removed

--

### Fixed

--

### Security

--

## [0.5.3] 2026-04-06

### Added

- Windows support: vcpkg integration for system-installed Ceres on Windows (reads `VCPKG_ROOT` + `VCPKGRS_TRIPLET`); fallback to `CERES_INCLUDE_DIR`, `EIGEN3_INCLUDE_DIR`, `CERES_LIB_DIR` environment variables.

### Changed

- Bump `ceres-solver-src` from `0.5.0` to `0.5.1`.

### Fixed

- Windows build: link `shlwapi` (required by glog), define `GLOG_NO_ABBREVIATED_SEVERITIES` to avoid conflicts with `<windows.h>` macros, use `/std:c++17` for MSVC, and add `eigen3` sub-directory to include paths for vcpkg layout.

## [0.5.2] 2026-02-10

### Fixed

- Define `GLOG_USE_GLOG_EXPORT` unconditionally (not only for the `source` feature) to fix builds against newer system glog installations.

## [0.5.1] 2025-12-13

### Fixed

- Building issues caused by Rust edtion bump to 2024, changed back to 2021.

### Changed

- Revert Rust edition from 2024 back to 2021, set resolver explicitly to 3 to support MSRV-aware dependency resolution.

## [0.5.0] 2025-12-13

### Changed

- Bump `ceres-solver-src` from `0.4.0` to `0.5.0`.
- **Build breking** Bump minimum supported Rust version (MSRV) to 1.85 to support MSRV-aware dependency resolution.
- Bump Rust edition from 2021 to 2024.
- Unpin `cxx` and `cxx-build` versions, now the latest 1.x versions will be used.
- Remove redundant `cmake` build dependency.

### Fixed

- Eigen headers detection on macOS with homebrew installation.

## [0.4.2] 2025-04-18

### Changed

- Require `ceres-solver-sys` 0.4.0 for the Cargo `source` feature, this uses glog 0.7.1. Older version of glog 0.6.0
  stopped being support by CMake 4.0.0, so we need to update it.

## [0.4.1] 2025-01-07

### Fixed

- Some clippy v0.1.83 lints.
- macOS build for homebrew ceres installation on aarch64.

## [0.4.0] 2025-01-07

### Changed

- **Breaking** MSRV is changed from 1.57.0 to 1.67.0.
- `cxx` and `cxx-build` are updated to `1.0.129`.

## [0.3.0] 2024-02-26

### Changed

- **Breaking** The only supported version of ceres-solver is 2.2 now, due to some breaking changes in the C++ API, this
  removes support of v2.0 and v2.1.

## [0.2.2] 2024-02-26

### Changed

- Require `ceres-solver` version to be between 2.0 and 2.1, 2.2 is known to be incompatible.

## [0.2.1] 2023-02-28

### Changed

- Bump `ceres-solver-src` to `0.2.0`. This replaces `miniglog` with `glog` and makes logging configurable. We don't
  consider it as a breaking change, but by default you will see no output now when using "source" Cargo feature.
- "source" feature: discover `eigen` using `pkg-config`.

### Removed

- CI and "source" feature: Windows build removed. Probably it doesn't work anymore, help needed to fix it.

## [0.2.0] 2023-02-09

### Added

- Support of a lot of new functions and classes throught C++ API.
- `v2_1` Cargo feature which must be enabled to use the crate with Ceres 2.1.0+.

### Changed

- **breaking** the wrapper is rewritten from binding C API to C++ API with `cxx`. This change is backward incompatible
  in many ways.
- Minimum supported Ceres version is 2.0.0.
- Minimum supported Rust version is 1.57.0.

### Fixed

- Building issues with system library.

## [0.1.0] 2023-01-19

Initial release
