compile_all test simplification and release metadata - #17
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to the merged recipe PR, in two parts.
1.
compile_alltest, simplified. The merged version compiled a single model behindonly =. This callscompile_allplainly 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,selecterror 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_alltestset 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 nonargs— 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
ExaModelsCompilerextension 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