There are many other features to FPC/Lazarus has that Delphi hasn't. Should these functionalities be removed solely because of that ?
In the (distant) past I would have said no, but several crucial changes in FPC appeared in Delphi later, but of course some of them slightly incompatible.
- exit(x)
- pointermath functionality. (always on in FPC mode)
- (default)formatsettings
- In newer versions they are experimenting with non COM interfaces.
- ptrint/ptruint
These were all part of FPC 2.0 in 2005.
However, much what remains is mostly ego driven syntax (syntax only, barely a real feature in sight), implemented to make a mark on the project, or a cramped attempt at being "different", rather than to make things possible that weren't before. Style and taste, not function
With maybe the exception of generics syntax (while deliberately different from the rest of the world, I somewhat believe that that had at least some parser benefits, but one could discuss of ease of implementation should always be the single deciding factor)
Compatibility is hard work and unsexy. Own syntax is something you can point to later. But that is a boon for the developer only, not the user.
afaik the whole idea behind FPC is to offer Delphi compatibility for those that can't life without or wish to support both.
Opinions vary. Many of the more Delphi oriented persuasion see a lot of the FPC syntax offering as a mere teenage rebellion against conforming to convention/compatibility. It is so much easier to have delusions of grandeur than do gritty work to marginally improve compatibility.
In any of my new projects i avoid Delphi compatibility like a plague as for me that would mean going backwards.
Words like "backward"/"forward" in language/dialect discussions are key signs of bias.
Note that before 2005-2007 I was a hardcore believer in FPC only syntax, but with FPC 2.0 more and more Delphi packages became available, and the practice of the own syntax turned me against it. It is needlessly divisive (the pascal community is small enough already), and the gains are token only. If at all.
If you want to stay Delphi compatible then you already have to make that choice right from the start of your project and avoid FPC/lazarus specific extensions/features. I would like to emphasize on the word choice there, as it is yours to make.
If you don't like a new for loop extension (given that it would be supported, which i think it won't), then simple don't use it to stay Delphi compatible.
Yes, just like Babel. Everybody his own dialect, and towers never get finished.