Doing some research on the above and found this in the KB;
3. R-code Version ChangeA recompile will always be required when moving to a different Major OpenEdge release as the r-code version always changes between major versions. Between Minor OpenEdge releases, forward-compatibility is guaranteed for r-code, but not backwards-compatibility. Code compiled in a lower minor release will run in a higher minor release; the other way around is not guaranteed.Between Minor versions, the r-code version number may remain the same, but using new ABL features added in a later minor release will break compatibility with earlier minor versions.
Is this correct? Backwards compatibility is not guaranteed between minor RCODE versions?
I have experienced this.
I accidentally compiled in 11.3 and some of the r-code would not run on 11.2.
Backwards compatibility means the newer minor release can run r-code compiled under the older minor release.
This does work for the most part, although class-based ABL code in libraries supplied with OpenEdge can cause hiccups. And I think there may have been some data-server related bugs that required breaking compatibiltiy to fix bigger issues, but my memory may be failing there. Never did do much with that particular bit of tech.
Compiling in a newer release and running on an older one implies forward compatibiltiy.
That is not always guaranteed, as the newer code can use AVM-level features that the old release simply did not have yet. And there may be more or less obvious issues as a result. Sometimes it outright errors (which IMHO is the better outcome), sometimes parts of the code may just be skipped and general weirdness ensues instead (knowledgebase.progress.com/.../P175091 was a good example of that).