<div dir="ltr"><br><br><div class="gmail_quote">On Tue, Apr 21, 2015 at 3:48 PM Yitzchak Gale <<a href="mailto:gale@sefer.org">gale@sefer.org</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Michael Snoyman wrote:<br>
> I may also be missing something here, but my read of Michael Sloan's<br>
> proposal would mean that code written against the GHC 7.8/7.10 (and prior)<br>
> API would continue to compile against GHC 7.12 and forward. It's true that<br>
> code using the new functionality added in 7.12 would be unable to compile<br>
> with 7.10 and earlier, but that's always the case when expanding the API<br>
> (making this backwards compatible, or in PVP terms a minor version bump)...<br>
><br>
> I may also not be addressing what you're thinking of as the "major<br>
> breakage." If so, can you clarify?<br>
<br>
You're right, "major breakage" was not the right term.<br>
<br>
What's worrying me is that since so many libraries depend on exceptions,<br>
a sudden breaking change like this would prevent new versions of<br>
almost any library from being used with 7.8. So, for example, critical<br>
security fixes could not be applied.<br>
<br>
In short, it would make 7.8 very fragile or even unusable very<br>
quickly, which would indeed be "major breakage" for those of<br>
us who will be needing to use it for the medium term.<br>
<br>
Is there some way that backwards compatibility could somehow<br>
be achieved without the requirement of a new extension like<br>
PatternSynonyms, even though that might be the prettiest way?<br>
<br>
One obvious way would be to use a new name for the new<br>
SomeException, or perhaps just a different module name,<br>
and export only a smart constructor for the new type. That<br>
way there could be a compatibility library in which the smart<br>
constructor discards the ExceptionInfo and returns the old type.<br>
That would work going way back.<br>
<br>
Or perhaps something could be done with other fancier<br>
type features already present in 7.8, in a way that would<br>
then allow us to move to Michael Sl.'s nice PatternSynonym<br>
solution in 7.14.<br>
<br>
Thanks,<br>
Yitz<br></blockquote><div><br></div><div><br></div><div>Can you give an example of a concrete problem you're expecting to run into? I'm not seeing it. End users aren't using pattern synonyms in this proposal, it's an implementation detail of Control.Exception.</div><div><br></div><div>MIchaelĀ </div></div></div>