On Tue, Apr 21, 2015 at 12:05 PM Yitzchak Gale <gale@sefer.org> wrote:
Michael Snoyman wrote:
> Sorry to confuse this thread with a second Michael.
>
> 1) there's a very good use case that's currently excluded by the
> API, and (2) Michael Sloan figured out some great ways to minimize the
> breakage. You could even argue that this proposal has *no* API breakage.

Perhaps I missed it, but wouldn't this create major breakage
across hackage for 7.8 and before?

We will certainly be using 7.8 for years to come, at least for
older versions of our products that we must continue to
support. In fact, we are only now able to reduce
our use of 7.6 to a fairly low (but non-zero) level.

This cycle will likely be even longer than usual for the
7.10 upgrade due to the inclusion of the FTP breaking
changes which make upgrading much more difficult.

I certainly hope that most of the ecosystem will continue
to support GHC versions going back at least one or two
major versions, as it always has in the past.

All that said, I am in favor of this change - it is a great
design. But I would strongly oppose doing it immediately
unless there is some plan to allow continued support
of recent pre-7.10 GHC versions in the ecosystem.

Thanks,
Yitz ("you can call me Michael")

I may also be missing something here, but my read of Michael Sloan's proposal would mean that code written against the GHC 7.8/7.10 (and prior) API would continue to compile against GHC 7.12 and forward. It's true that code using the new functionality added in 7.12 would be unable to compile with 7.10 and earlier, but that's always the case when expanding the API (making this backwards compatible, or in PVP terms a minor version bump).

The only catch here is that the proposal simulates the old API by using pattern synonyms. That means that the data types have in fact changed. But I'm so far unable to come up with an example that compiles with 7.8/7.10 but not with this new API (with the caveat that I'm no expert in pattern synonyms and therefore I may be misunderstanding something).

I may also not be addressing what you're thinking of as the "major breakage." If so, can you clarify?

Michael