• FizzyOrange@programming.dev
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    4 months ago

    I agree, too little regard for backwards compatibility. They also removed distutils which meant I had to fix a load of code that used it. It was bad code that shouldn’t have used it even when written, but still… seems like they didn’t learn their lesson from Python 2.

    It’s not like it would be difficult to avoid these issues either. Everyone else just makes you declare your “target version” and then the runtime keeps things compatible with that version - Android via SDK target version, Rust with its editions, hell even CMake got this right. CMake!!

    • ExtremeDullard@lemmy.sdf.org
      link
      fedilink
      arrow-up
      2
      ·
      4 months ago

      Oh yeah, I forgot about the distutils thing. Yeah, I had to fix that too. But at least it wasn’t hours of wading through and retesting old code.

      • FizzyOrange@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        4 months ago

        In fairness for the invalid escape sequence thing static linters (Pylint, Pyright, etc.) should be already telling you about it.

        • ExtremeDullard@lemmy.sdf.org
          link
          fedilink
          arrow-up
          2
          ·
          edit-2
          4 months ago

          Yes of course. If I run pyflakes or mypy on our code, it’s a complete shitshow. But that’s not the point.

          The point is, for better or worse, however imperfect our code is, it run cleanly and predictably in older Python interpreters. When I have to correct legacy stuff that is known to work well, I compromise hundreds of hours of formal and informal testing.

          Imperfect code that has been running flawlessly for a long time and has proven its reliability is better than more perfect code that hasn’t been tested as much.

          In fact, in certain industries like the aero industry, it doesn’t matter if you find slightly bad code after the system has been certified: it’s frozen and you leave it the hell alone unless it’s critical. Fortunately we’re not exactly in that situation, but we do have customers who require - and pay for - configuration control, and those Python issues kind of make everything more difficult needlessly for us. Lucky for us, our Python packages are mostly support code, so it’s not too critical. But we do have to be careful and thorough.