#solver #source #ceres-solver-sys

sys ceres-solver-sys

Unsafe Rust bindings for the Ceres Solver

10 releases

new 0.4.2 Apr 18, 2025
0.4.1 Jan 7, 2025
0.3.0 Feb 26, 2024
0.2.2 Feb 26, 2024
0.1.0 Jan 19, 2023

#2090 in Algorithms

Download history 162/week @ 2024-12-27 609/week @ 2025-01-03 133/week @ 2025-01-10 78/week @ 2025-01-17 87/week @ 2025-01-24 464/week @ 2025-01-31 91/week @ 2025-02-07 18/week @ 2025-02-14 103/week @ 2025-02-21 219/week @ 2025-02-28 63/week @ 2025-03-07 53/week @ 2025-03-14 418/week @ 2025-03-21 96/week @ 2025-03-28 42/week @ 2025-04-04 74/week @ 2025-04-11

634 downloads per month
Used in 2 crates (via ceres-solver)

MIT/Apache

2.5MB
41K SLoC

C++ 32K SLoC // 0.2% comments FORTRAN Legacy 5.5K SLoC // 0.4% comments C 1K SLoC // 0.4% comments CUDA 817 SLoC // 0.1% comments Rust 498 SLoC // 0.0% comments Bazel 174 SLoC // 0.2% comments Shell 174 SLoC // 0.2% comments Python 158 SLoC // 0.6% comments JavaScript 51 SLoC // 0.1% comments XSL 28 SLoC

ceres-solver-sys

Low-level unsafe Rust bindings for Ceres Solver

Test pre-commit.ci status Crates.io

Currently, we bind C API only using bindgen. The minimal tested version of Ceres Solver is 2.0

Cargo feature flags

  • v2_1 wraps Ceres Solver 2.1 API, which added CUDA support
  • system (default) links a system copy of the Ceres Solver library. By default, it would be a synamic library, but you can tweak it with pkg-config
  • source (optional) overrides system and links a static library file built by ceres-solver-src crate, it is also applies v2_1 feature flag, because ceres-solver-src crate builds Ceres Solver 2.2 from source

system feature requires pkg-config system dependency, while source requires ceres-solver-src build dependencies such as CMake and C++17 compatible compiler.

Dependencies