ripopt 0.7.1

A memory-safe interior point optimizer in Rust
Documentation
[workspace]
members = [".", "rmumps", "ripopt-py"]

[package]
name = "ripopt"
version = "0.7.1"
edition = "2021"
license = "EPL-2.0"
description = "A memory-safe interior point optimizer in Rust"
repository = "https://github.com/jkitchin/ripopt"
categories = ["mathematics", "science", "algorithms"]
keywords = ["optimization", "nlp", "interior-point", "nonlinear", "solver"]
exclude = [
    "adversary/",
    "benchmarks/",
    ".crucible/",
    "docs/",
    "manuscript/",
    "research/",
    "tutorials/",
    "Ripopt.jl/",
    "ipopt-rust.png",
    "*.pdf",
    "*.ipynb",
    "RIPOPT_VS_IPOPT.md",
    ".github/",
    "CLAUDE.md",
    "narrative-history.org",
    "reflections.org",
    "examples/debug_tp*.rs",
]

[lib]
crate-type = ["cdylib", "rlib"]

[dependencies]
log = "0.4"
env_logger = "0.11"
libloading = "0.8"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
faer = { version = "0.20", optional = true }
rmumps = { version = "0.1.1", path = "rmumps", optional = true, features = ["faer"] }
num-dual = { version = "0.13", optional = true }
nalgebra = { version = "0.34", optional = true }

[features]
default = ["rmumps", "faer"]
ipopt-native = []
cutest = []
hs = []
rmumps = ["dep:rmumps"]
faer = ["dep:faer"]
num-dual = ["dep:num-dual", "dep:nalgebra"]

[[bin]]
name = "hs_suite"
path = "benchmarks/hs/run_ripopt.rs"
required-features = ["hs"]

[[bin]]
name = "ipopt_native"
path = "benchmarks/hs/run_ipopt_native.rs"
required-features = ["ipopt-native"]

[[bin]]
name = "ripopt"
path = "src/bin/ripopt_ampl.rs"

[[bin]]
name = "cutest_suite"
path = "benchmarks/cutest/run_cutest.rs"
required-features = ["cutest", "ipopt-native"]

[[bin]]
name = "collect_kkt"
path = "benchmarks/cutest/collect_kkt.rs"
required-features = ["cutest"]

[[example]]
name = "cat_a_probe"
required-features = ["cutest"]

[[example]]
name = "compare_large_scale"
required-features = ["ipopt-native"]

[[example]]
name = "diff_harness"
required-features = ["ipopt-native"]

[[example]]
name = "autodiff_num_dual"
required-features = ["num-dual"]

[[example]]
name = "benchmark_solvers"

[profile.release]
debug = true

[dev-dependencies]
approx = "0.5"
serde = { version = "1", features = ["derive"] }
serde_json = "1"