Python is one of the worst offenders here. I don’t think Python’s poor behaviour should excuse Lua’s.
But I can also see why Python is making breaking changes - a lot of Python is so bad it really makes sense to clean it up. I dunno if Lua is in that situation.
Anyway I think I would look to other languages like Go, Rust, Java, C++ which do a much better job. I don’t think Go or Rust have any backwards incompatibilities (at least very very few) and C++ has a small number but they’re for stuff that is truly ancient or almost completely unused. It’s totally possible if you care about it.
Several months back I was kinda pulling my hair out over the frustrating state that Apache Airflow was in, because (due to my company’s infosec, SQA, and regulatory policies) I found some delightful mutually-exclusive transitive dependencies when I tried to diverge (with version upgrades to get past CVE-marked releases) the constraints from the officially-packaged constraints.txt. Though, that’s packages, not actual lang level.
Were you around for the 2 -> 3 migration? Now THAT was a categorical shitshow.
Python does it, too. ¯\_(ツ)_/¯
Makes it real fun when one of your dependencies requires, say, Python 3.12 and another breaks on 3.9+.
Python is one of the worst offenders here. I don’t think Python’s poor behaviour should excuse Lua’s.
But I can also see why Python is making breaking changes - a lot of Python is so bad it really makes sense to clean it up. I dunno if Lua is in that situation.
Anyway I think I would look to other languages like Go, Rust, Java, C++ which do a much better job. I don’t think Go or Rust have any backwards incompatibilities (at least very very few) and C++ has a small number but they’re for stuff that is truly ancient or almost completely unused. It’s totally possible if you care about it.
Oh, most definitely.
Several months back I was kinda pulling my hair out over the frustrating state that Apache Airflow was in, because (due to my company’s infosec, SQA, and regulatory policies) I found some delightful mutually-exclusive transitive dependencies when I tried to diverge (with version upgrades to get past CVE-marked releases) the constraints from the officially-packaged constraints.txt. Though, that’s packages, not actual lang level.
Were you around for the 2 -> 3 migration? Now THAT was a categorical shitshow.