Open eerolinna opened 4 years ago
I agree with your solution.
I had an idea for one approach we can use if we need to include a model under stan
namespace that has to use language features of a new version
{
"name": "some_model",
"model_implementations": {
"stan": {
"model_code": "models/stan/some_model.stan",
"min_version": 3.1
}
},
"other_stuff": "..."
}
So we specify a minimal version of Stan that is needed to run this model implementation
It might be preferrable to usually use
{
"name": "some_model",
"model_implementations": {
"stan3": {
"model_code": "models/stan/some_model.stan"
}
},
"other_stuff": "..."
}
but I could see the first approach being an useful option to have in some cases
I agree that it is useful to have this feature. I just add for clarification, there is not yet stan3
modeling language. stanc3
is just v3 of the compiler, and initially will support stan2
language definition. Stan 2 compiler has some bugs, so that it allows some invalid syntax, but stanc3
implements the language definition better. Currently there haven't been immediate plans for breaking backward compatibility. stanc3
will eventually allow easier addition of new features to the language, which will then eventually break the forward compatibility. I hope we can have just one set of Stan models.
Good clarification. Having one set of Stan models feels feasable to me.
From what I understand the
stan3
modelling language might not be exactly the same as with current stan.pymc3
andpymc4
also have different modeling languages.Currently the plan is to have each
stan
model undermodels/stan
and pymc models undermodels/pymc
. How could we support having models in the posterior database for bothstan2
andstan3
or forpymc3
andpymc4
?One approach would be reserve
models/stan
forstan2
andmodels/pymc
forpymc3
and add models of newer versions undermodels/stan3
andmodels/pymc4
. This approach doesn't feel satisfactory for me, but at the moment I don't have any better ideas either.