Gekko versions overview
At the moment, there are a number of Gekko versions available, and this page will attempt to clarify the differences.
To sum up:
- If you are a new user, you are advised to choose the latest 3.1.x version from this page.
- If you have already built systems in an older Gekko 2.x or 2.x.x version and do not want to migrate just yet, choose the 2.4 version from this page.
The Gekko 3.1.x development versions are fully compatible with 3.0. Care is taken not to break anything in 3.1.x, so these versions are in a sense “stable” development versions, but if you are very risk-averse, you may stick to 3.0. (Any “risky” development of 3.0 will take place in a future 3.3.x series).
If you are an existing user of a Gekko 2.x or 2.x.x version, you cannot jump directly to 3.0 or 3.1.x without translating your command files to the 3.0 syntax (cf. the TRANSLATE command). It is advised to migrate, but if you are unable to, you should use Gekko 2.4, which is fully compatible with all prior 2.x or 2.x.x versions. (The versions in the 2.5.x series contain some experiemental components related to modelling).
Versions with an even even number after the first period are so-called stable versions (for instance 2.4 or 3.0), whereas development versions have en uneven number after the first period (for instance, 3.1.1). Because of many syntax changes in the preceeding years, there is currently a syntax and functionality freeze regarding 3.0, so that users can use 3.0/3.1.x without worrying that their code would need migration/translation anytime soon. Any “risky” changes to the Gekko source code, or any syntax adjustments, will take place in a future 3.3.x series that is not even on the drawing board yet.
Care is taken regarding the 3.1.x versions in order to keep these stable and fully backwards compatible with Gekko 3.0. Therefore, in the 3.1.x series, it is avoided to change core parts of the Gekko source code, but new components may be implemented, and other improvements will be introduced as well, for instance improved error messages, improved graphical interface, etc. All in all, the 3.1.x versions will get some health checkups, but no heavy surgery.
The 3.1.x series will probably implement new timeseries frequencies, and possibly new variable types, too. In spite of this, the databank format will stay compatible with the 3.0 version, more details on this page. More info about future versions: see also the roadmap, and the material from the steering committe meetings.
Difference between 3.0 and 3.1.x
Why these two versions? Since there is a current syntax and functionality freeze regarding 3.0, the further development could have taken place in the form of patches to 3.0. But this would have entailed a large number of “patches”, for instance regarding the introduction of higher frequency timeseries. That is not really a “patch”, but rather a new capability, and even though care is taken not to break anything when introducing capabilities like higher frequencies, there is still a risk. Therefore, the official 3.0 is risk-free, whereas the 3.1.x series entails some minor risk of some new capabilities breaking an existing module. Care is taken that existing syntax and functionality in 3.0 still work in the 3.1.x series, and the 3.1.x will also benefit from polishing of things like error messages, graphical interface, etc. Therefore, 3.1.x will continue to mature, including the removal of glitches/annoyances, whereas 3.0 will be frozen in time. With one exception, however: outright bugs in 3.0 that are deemed serious enough will be fixed (in both the 3.0 and 3.1.x versions simultaneously).