#ceres #solver #bindings

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

#125 in #solver

Download history 217/week @ 2024-06-15 35/week @ 2024-06-22 257/week @ 2024-06-29 22/week @ 2024-07-06 26/week @ 2024-07-13 46/week @ 2024-07-20 165/week @ 2024-07-27 30/week @ 2024-08-03 24/week @ 2024-08-10 13/week @ 2024-08-17 58/week @ 2024-08-24 317/week @ 2024-08-31 263/week @ 2024-09-07 515/week @ 2024-09-14 26/week @ 2024-09-21 306/week @ 2024-09-28

1,113 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