Repository navigation
Conversation
KnorpelSenf
left a comment
There was a problem hiding this comment.
I think the root cause here isn't that good_lp doesn't provide an option, it's that CBC doesn't provide an option we could expose. The solver itself has unremovable logs.
Can you update the attribution of the bug, and also wrap it in a block quote (prepend >)?
|
Updated — moved the note to a blockquote and clarified that this is CBC's |
🤨@DuexDEVG I don't have anything against AI assistance, but I'd rather you :
|
|
@lovasoa Thank you for the candid feedback. You are right that I should have disclosed this earlier. I used substantial AI assistance for repository exploration, implementation, test planning, validation commands, and PR wording. I reviewed the relevant code and verified the documented behavior locally and in CI, but I understand that this still requires additional scrutiny when the contribution is AI-assisted. Going forward, I will disclose the extent of AI assistance in PR descriptions and discuss design questions before implementing a solution. Thank you for pointing this out. |
| > **Note:** CBC itself does not provide a way to fully suppress its solver | ||
| > progress output; this is a limitation of the underlying CBC library, | ||
| > not of `good_lp`'s API. If silent solver output is a requirement for your | ||
| > application, consider selecting another solver from the table above and | ||
| > verify its output behavior for your deployment. This limitation is | ||
| > tracked in [issue #117](https://github.com/rust-or/good_lp/issues/117). |
There was a problem hiding this comment.
Is this actually true ? I asked an llm to check and it's telling me it's wrong.
let mut model = vars.maximise(objective).using(coin_cbc);
model.set_parameter("log", "0");does seem to remove output
There was a problem hiding this comment.
tested with coin_cbc 0.1.8 and CBC 2.10.12 - set_parameter("log", "0") cuts down
most of CBC's output but doesn't fully silence it, still seeing Presolve... and
Optimal objective... lines on stdout. helps but not 100%. i'll update the readme
to mention log=0 and make clear it reduces output rather than guaranteeing
silence
|
@DuexDEVG , excuse me for the stupid question, but: were you affected personally by the issues the ai was pointed to ? what are your goals here ? |
|
@lovasoa honest answer - no, I wasn't personally hit by this issue. I'm using this as |
…s/document-cbc-output # Conflicts: # README.md
|
Hi everyone :) sorry for the duplicate comment across prs and issues. Here is my suggested solution to the cbc verbosity issue in good_lp: expose Cbc_setLogLevel and set it to zero by default. I see the rust binding hasn't been updated in a long time and has old open issues. If the project is stale, just let us know and we'll switch to a different default solver in good_lp. Cross-references: coin_cbc PR #38, good_lp PR #134, good_lp PR #132, and good_lp issue #117. |
|
@DuexDEVG hey, no problem. Here is my personal advice. feel free to ignore it. If I were you, I would focus on things that matter most to me personally. There is so much oss software that there must be some that you both use every day, and feel could be improved. then I would use the ai to teach how the software works to me, help me build a mental model. then i would discuss the options to solve the issue, the different tradeoffs involved, investigate broader and narrower fixes. Then I would open a pr explaining the work in my own words. Even if english is not your native language, broken english often comes off better than ai prose. I would not try to maximise how many issues I fix, but to maximise how good I'm getting at understanding software bugs, the tradeoffs involved in fixing them and the communication with others. These skills are probably going to be more useful in the future than being good at prompting 2026's models. |
|
@lovasoa thank you, really appreciate you writing this out. i want to be honest |
|
thanks, no problem. closing this in favor of #134 |

Summary
This documentation-only change explains an important behavior of the default CBC solver: it may write solver progress messages to the process's standard output while a model is being solved.
It documents the solver-specific control already exposed by the
coin_cbcintegration:model.set_parameter("log", "0")suppresses much of CBC's progress output, but does not guarantee completely silent output across CBC/CLP versions. It also clarifies thatgood_lpdoes not currently provide a solver-independent output-suppression switch. Users whose applications require fully silent solver output are directed to consider another solver and to verify that solver's behavior for their deployment.The note is placed in the CBC section of the solver documentation, where users are already evaluating solver-specific trade-offs, and links to issue #117 for context.
Why
Issue #117 reports unexpected solver output when solving multiple problems. The existing documentation describes CBC's installation requirements and performance characteristics, but does not mention its output behavior or the available CBC-specific parameter. Documenting both prevents users from discovering the limitation only after integrating the default solver into an application.
Scope
Validation
cargo fmt -- --checkgit diff --checkcoin_cbc0.1.8 integration and CBC 2.10.12 under WSL2 Ubuntu:log=0removed the main progress output whilePresolveandOptimal objectivesummary lines remained on stdout.