#solver #ceres #bindings

sys ceres-solver-sys

Unsafe Rust bindings for the Ceres Solver

9 releases

0.4.1 Jan 7, 2025
0.4.0 Jan 7, 2025
0.3.0 Feb 26, 2024
0.2.2 Feb 26, 2024
0.1.0 Jan 19, 2023

#2816 in Algorithms

Download history 299/week @ 2024-09-25 47/week @ 2024-10-02 199/week @ 2024-10-09 42/week @ 2024-10-16 31/week @ 2024-10-23 528/week @ 2024-10-30 47/week @ 2024-11-06 75/week @ 2024-11-13 27/week @ 2024-11-20 409/week @ 2024-11-27 153/week @ 2024-12-04 16/week @ 2024-12-11 4/week @ 2024-12-18 511/week @ 2025-01-01 387/week @ 2025-01-08

904 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 497 SLoC // 0.0% comments Shell 174 SLoC // 0.2% comments Bazel 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