Closed ronaldtse closed 3 years ago
I see one possible problem that I would like to clarify. I have one particular usecase in mind and hope to propose some solution with that usecase. Let's suppose we have 3 version sets for all repositories (so they are independently versioned only on the PATCH level). Let's say:
v2.1 (current one, after we become version independent) v2.2 (adds reversibility support, which adds a few new keywords to the DSL) v3.0 (changes the DSL in an incompatible way).
Now, let's suppose someone Gemfile contains gem "interscript", "~>2.1.0"
. Now we have some options:
version "2.2"
, which is understood by interscript 2.1 Now, interscript-js doesn't have this kind of inter-dependency. But I see a possibility, that the compiler changes the compiled output while interscript-js preserves the API compatibility (just not the private API), which shouldn't warrant a major version change.
Those are the issues I'm concerned about with the independent release system. If we at least keep the MAJOR.MINOR in sync then we will be able to proactively stop situation like this in the future from happening. But perhaps I'm missing something. We could also use some internal numbers, but those internal numbers won't really translate to Gem versions. If the assumption of MAJOR.MINOR being synchronized is too much, then I would be glad to know about some other way we should approach and formalize the versioning system.
question: should map writers be concerned about the minimal API version?
Yes. The Interscript API version should be kept separate from the software versions.
Interscript maps are not "backwards compatible": maps that use a new version cannot be used with old runtimes.
For interscript-maps, we can have an additional number prefixed by the runtime minor version. e.g. interscript-maps '2.1.X' supports interscript versions '2.1' and above.
The use cases we need to support:
Without a dependency on the Ruby runtime.
The syntax of maps should be decoupled from the version of the Ruby runtime (i.e. new runtime features should not break old maps, new maps using new features should not be loaded with old runtime versions).