Skip to content

compile_all test simplification and release metadata - #17

Merged
sshin23 merged 3 commits into
mainfrom
nabla/recipes
Aug 14, 2026
Merged

compile_all test simplification and release metadata#17
sshin23 merged 3 commits into
mainfrom
nabla/recipes

Conversation

@sshin23

@sshin23 sshin23 commented Aug 14, 2026

Copy link
Copy Markdown
Member

Follow-up to the merged recipe PR, in two parts.

1. compile_all test, simplified. The merged version compiled a single model behind only =. This calls compile_all plainly with its defaults, then checks that a model taken out of the resulting library is the model it should be — dimensions, starting point, objective and gradient against the in-Julia model, read back at a size the library was not compiled for. The earlier scaffolding (derived-list coverage, per-model instantiation loop, select error paths) is dropped: it tested the assembly rather than the artifact, and the selection contract is gated on the ExaModelsCompiler side.

Cost, measured: the merged single-model version ran its compile_all testset in 2m52s on the runner. This one compiles the whole default set, so it is more; CI reports the number.

2. Release metadata. Version, authors and [compat].

[compat] deliberately omits ExaModels and ExaModelsCompiler. The recipe API is in no registered ExaModels version — the registry newest is v0.11.2, which has no nargs — and ExaModelsCompiler is not registered at all. A bound written now would name versions that do not exist.

This package is therefore not registrable yet, and the blocker is upstream. A registered package may not declare an unregistered weakdep, so the ExaModelsCompiler extension blocks registration on its own until that package is registered. The release order is forced: ExaModels release carrying the recipe API → ExaModelsCompiler registered → these.

🤖 Generated with Claude Code

compile_all is expensive, so the test is now the plain thing: call it with its
defaults, then check that a model taken out of the resulting library is the
model it should be -- dimensions, starting point, objective and gradient
against the in-Julia model, read back at a size the library was not compiled
for.

Drops the earlier scaffolding around it: the derived-list coverage check, the
per-model instantiation loop and the select error paths.  Those tested the
assembly rather than the artifact, and the selection contract is gated on the
ExaModelsCompiler side.

Measured cost of the previous version, which compiled a single model: the
compile_all testset ran 23 tests in 2m52s on the runner.  Compiling the default
set is more than that; CI reports the number.
Recipes and the two new extensions are additive on a pre-1.0 package, so a
minor bump.

Adds the missing Random bound; [compat] covered only JuMP and julia, and
AutoMerge requires an entry for every dependency.

ExaModels and ExaModelsCompiler are deliberately left out for the same reason
as in LuksanVlcekBenchmark: neither has a registered version carrying this
API.
The default path is an @-name, which installs onto the CNLPModels search path
and errors when CNLPMODELS_PATH is unset:

  ArgumentError: `@lv` names a library to install on the CNLPModels search
  path — but CNLPMODELS_PATH is not set.

Setting it to a temporary directory keeps the call the plain default one while
not writing into the user's depot.  The error is a good one — it names the
variable and offers the alternative spelling — and it fired in 29.6s, so no
compilation happened; the cost of the default set is still unmeasured.
@sshin23
sshin23 merged commit 149d2d1 into main Aug 14, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant