BackwardCompatibilityCheck icon indicating copy to clipboard operation
BackwardCompatibilityCheck copied to clipboard

Report addition of `trigger_error()` to a function's body as a BC break

Open Ocramius opened this issue 4 years ago • 4 comments

Functions that are otherwise working fine cannot have trigger_error() expressions added to them, as that:

  • breaks downstream consumers (output, loggers, test suites)
  • introduces an unwanted side-effected, which could potentially cause major issues in a production environment

Therefore, we will add a new checker that ensures that trigger_error() additions are considered BC breaks.

Ocramius avatar Dec 26 '21 02:12 Ocramius

What about E_USER_DEPRECATED? That IMO shouldn't be a BC break.

RikudouSage avatar Apr 04 '22 20:04 RikudouSage

That is pretty much the reason why this issue exists: userland deprecations in previously working code, breaking downstream consumers.

It's a dangerous and irresponsible approach perpetrated by symfony/* packages.

Ocramius avatar Apr 04 '22 21:04 Ocramius

I mean, if you don't configure your app to ignore deprecations you can't really blame anyone.

RikudouSage avatar Apr 04 '22 21:04 RikudouSage

It's not just apps: it's a whole chain of libraries, tools and thousands of hours of work, just to stay in sync with side-effects introduced very deep in your stack frames.

For instance, in this specific library, a deprecation warning will break e2e tests, because STDERR is broken by those, and output buffering will catch them.

In other systems, an unrelated error listener may be tripped: potentially not even configured at application level, but deep in a library.

In other systems, performance may be crippled.

On systems that log all errors, disk space may become an issue.

In practice: don't add RUNTIME effects where none were present, because that is a clear BC break. We have the tools, and there is no need to make these problems a runtime side-effect.

Ocramius avatar Apr 04 '22 22:04 Ocramius