#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

#1695 in Algorithms

Download history 190/week @ 2024-02-14 1468/week @ 2024-02-21 467/week @ 2024-02-28 102/week @ 2024-03-06 40/week @ 2024-03-13 90/week @ 2024-03-20 291/week @ 2024-03-27 117/week @ 2024-04-03 279/week @ 2024-04-10 254/week @ 2024-04-17 52/week @ 2024-04-24 145/week @ 2024-05-01 11/week @ 2024-05-08 47/week @ 2024-05-15 34/week @ 2024-05-22 239/week @ 2024-05-29

334 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 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