#solver #bindings #ceres

sys ceres-solver-sys

Unsafe Rust bindings for the Ceres Solver

7 releases

0.3.0 Feb 26, 2024
0.2.2 Feb 26, 2024
0.2.1 Feb 28, 2023
0.1.0 Jan 19, 2023

#144 in #solver

Download history 30/week @ 2024-02-04 99/week @ 2024-02-11 888/week @ 2024-02-18 1071/week @ 2024-02-25 195/week @ 2024-03-03 41/week @ 2024-03-10 77/week @ 2024-03-17 31/week @ 2024-03-24 394/week @ 2024-03-31 23/week @ 2024-04-07 310/week @ 2024-04-14 228/week @ 2024-04-21 173/week @ 2024-04-28 8/week @ 2024-05-05 19/week @ 2024-05-12 49/week @ 2024-05-19

251 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 488 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