> > The issue here is around changes that affect old features (__toString), > where the behavior changes depending on whether a parameter is defaulted or > not (also a previously existing feature) >
Which has existed for only one release. This is a small BC break and is intended. We previously had nullable types just no way to really encode it as a type. We now do. Breaking code for one single minor version is perfectly acceptable, especially given that there are other codebases that will break if we do not include the question mark.