Skip to content
You must be logged in to sponsor blackopsrepl

Become a sponsor to Vittorio Distefano

SolverForge

Constraint programming has a developer experience problem. The solvers are fast but the APIs are hostile. You shouldn't need a PhD to express "employees can't work overlapping shifts."

SolverForge is a constraint solver written in Rust. The goal: write constraints like you write code.

From Zero to Solving in One Command

$ solverforge new --basic/employee-scheduling my-app
$ cd my-app
$ solverforge server

That's it. A scaffolded project with domain model, constraints, sample data, and a dev server — running a release-optimized solver out of the box. Vehicle routing, employee scheduling, maintenance planning: pick a template, start modeling.

Rails proved that a framework's job is to make the first five minutes magical and the next five years productive. SolverForge makes the same bet for constraint programming. Define your domain with derive macros. Express constraints with a fluent stream API. Let the compiler turn it into the fastest thing it knows how to build.

Already in Production

Dr. Fawaz Halwani, pathologist at The Ottawa Hospital, built staff scheduling on SolverForge's Rust core: "I have incorporated SolverForge in my new Rust application for staff scheduling and it's working like a charm, A+."

A constraint solver that a doctor can pick up, build a real scheduling system with, and ship — that's the developer experience we're after.

The Engine

Under the hood, SolverForge is fully monomorphized. No Box<dyn Trait> in hot paths. No vtable lookups during move evaluation. No garbage collector. When you define a constraint, the Rust compiler generates specialized code for your exact domain model — direct function calls all the way down.

At the core is SERIO (Scoring Engine for Real-time Incremental Optimization). Change one variable, SERIO recalculates only the affected constraints. Stack-allocated moves. Arena allocation with O(1) cleanup. Cache-friendly data layouts. The inner loop evaluates hundreds of thousands of candidate moves per second because that's what it takes to find good solutions.

The solver internals require zero-cost abstractions. The user-facing API doesn't have to expose them.

What's Here Now

  • SolverForge — the Rust solver: constraint streams, construction heuristics, local search, benchmarking
  • Quickstarts — employee scheduling, vehicle routing, maintenance planning, order picking, meeting scheduling; will be replaced by SolverForge CLI/Templates
  • SolverForge Maps — routing infrastructure for VRP solvers

What's Next

  • SolverForge CLI — solverforge new, solverforge server, project scaffolding with templates
  • A constraints! macro DSL that reads like a specification and compiles to the same zero-erasure code. Python bindings where lambdas are analyzed at definition time via AST, converted to native expression trees, and never touch the interpreter during solving. Two interfaces, one solver core, no compromises.
  • Full Python bindings via PyO3

Why Sponsor

This is one person building a framework. Every dollar goes to infrastructure (demo hosting, CI/CD) and development time on the core, the bindings and the CLI.

Sponsors buy velocity on a project that already works.

⭐ Star the repos
💬 Share the project
💰 Sponsor the next release

@blackopsrepl

SolverForge pays for itself and the required time and focus, therefore does not lose momentum and solidifies its roots as a stable framework in the Rust, Python and Go ecosystems.

Featured work

  1. SolverForge/solverforge

    SolverForge is a constraint programming framework and solver written in Rust. It allows you to solve any planning problem, blazing fast!

    Rust 38
  2. SolverForge/solverforge-quickstarts

    Quickstarts for SolverForge

    Python 7

0% towards $7,000 per month goal

Be the first to sponsor this goal!

Select a tier

$ a month

Choose a custom amount.