Kostas Michalopoulos wrote 12 lines
On 7/22/26 6:02 PM, Ondrej Pokorny via lazarus wrote:
>
https://en.wikipedia.org/wiki/Forward_compatibility
>
> I am not going to discuss what you understand under backward/forward
> compatibility. It's not relevant.
The forward compatibility aspect is indeed irrelevant. This matches
with the Wikipedia link you provided:
"Forward compatibility or upward compatibility is a design
characteristic that allows a system to accept input intended for a
later version of itself."
That's exactly what I broke. Lazarus 2.0.x is not able to to accept input intended for Lazarus 5.0 (later version of itself). So?Lazarus 2.0.x is not forward compatible with Lazarus 5.0 anymore.
The general rule for forward compatibility in Lazarus is one newer stable version. That means that a particular Lazarus should be able to open and work with files from the stable version right behind it (4.8 -> 5.0). But usually this forward compatibility spans over more versions.
Show quoted text 5 lines
In my original mail i focused on the backwards compatibility aspect
(specifically new versions of the Lazarus LPI format being compatible
with older version of Lazarus) which is not irrelevant as the LPI
change breaks one aspect of backwards compatibility ("interoperability
with an older legacy system" as Wikipedia puts it).
There is no "interoperability" between different Lazarus versions, Lazarus programs do not talk to or interact with each other - this statement applies more on telecommunications, API and other protocols.
You should rather read the "In software" chapter:
https://en.wikipedia.org/wiki/Backward_compatibility#In_software
/In compilers, backward compatibility may refer to the ability of a compiler for a newer version of the language to accept source code of programs or data that worked under the previous version./
/A data format is said to be backward compatible when a newer version of the program can open it without errors just like its predecessor./
Lazarus 5.0 reads all older LPI formats correctly - it is backward compatible.
Lazarus 2.0.x doesn't read LPI from 5.0 - Lazarus 2.0.x is not forward compatible with Lazarus 5.0.
*Backward compatibility is not about being able to save files in a legacy format.* That is the "Legacy mode":
https://en.wikipedia.org/wiki/Legacy_mode
And that is exactly what we have in Lazarus for the LPI format (we call it "Compatibility mode").
/In computing, legacy mode is a state in which a computer system, component, or application software behaves in a way that is different from its standard operation in order to support older software, data, or expected behavior. It differs from backward compatibility in that an item in legacy mode will often sacrifice newer features or performance [...]/
The "Legacy mode" in Lazarus 5.0 allows you to write LPI for Lazarus 2.2-4.8. In 5.0 I removed "Legacy mode" support for Lazarus 2.0.x and older. *I did not brake backward compatibility.*
I even made the "Legacy mode" default.
Show quoted text 5 lines
Also FWIW i'm not trying to argue against the change or anything like
that, i'm only pointing out that this isn't being "crazy about
backwards compatibility", which was what triggered my response. It was
meant to be taken as a comment in a "this is far from crazy, you can
be much crazier than that" sort of manner :-).
...
Ondrej
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20260722/31c7f805/attachment-0001.htm>