Problem
Once rer_solver Python module exists (#5), rez needs to actually call it.
Proposed Solution
Modify rez's src/rez/resolver.py:
try:
import rer_solver
_RUST_AVAILABLE = True
except ImportError:
_RUST_AVAILABLE = False
class Resolver:
def _solve_rust(self):
result = rer_solver.solve(
[str(r) for r in self.package_requests],
[str(p) for p in self.package_paths],
filters=self._serialize_filters(),
max_iterations=10000,
)
if result.status == "solved":
return self._map_rust_result(result)
elif result.status == "failed":
# Fall back to Python solver for better error reporting
return self._solve_python()
else:
raise ResolveError(result.failure_description)
def _map_rust_result(self, result):
"""Map (name, version, variant_index) tuples back to rez PackageVariant objects."""
...
def _serialize_filters(self):
"""Convert PackageFilterList to list of (type, arg) tuples for Rust."""
...
Gate behind config.use_rust_solver (default False) and REZ_USE_RUST_SOLVER=1 env var.
Acceptance Criteria
Problem
Once
rer_solverPython module exists (#5), rez needs to actually call it.Proposed Solution
Modify rez's
src/rez/resolver.py:Gate behind
config.use_rust_solver(defaultFalse) andREZ_USE_RUST_SOLVER=1env var.Acceptance Criteria
rez-envworks withREZ_USE_RUST_SOLVER=1for basic resolvesrez-env -vshows whether Rust solver was useduse_rust_solvertorezconfig.pywith defaultFalse