[ghc-steering-committee] Fwd: GHC2023
Joachim Breitner
mail at joachim-breitner.de
Thu Nov 10 09:34:11 UTC 2022
Thanks for that!
Do I also have to bump the edition if I want to get my hands on new non-breaking features (e.g. new syntax that simply wasn't legal before)?
10.11.2022 10:19:06 Arnaud Spiwack <arnaud.spiwack at tweag.io>:
> To chime in with data from other communities, in Rust there is a
> concept of Edition [1]. They are, likewise, labelled by years.
>
> In your project file (Cargo.toml), you write something like `edition = '2021'`.
>
> This fixes a set of features. It is sold and perceived as a backward
> compatibility mechanism. If I set my edition, later Rust compilers
> will not break my code. If I want to benefit from new features which
> are backward incompatible, I will need to change the edition, and risk
> breakage then.
>
> There appears to be a new edition in Rust every 3 years. Which seems
> like a reasonable pace to me.
>
>
> [1]: https://doc.rust-lang.org/edition-guide/index.html
>
>
> On Tue, 8 Nov 2022 at 12:48, Joachim Breitner <mail at joachim-breitner.de> wrote:
>>
>> Hi Tom,
>>
>> thanks for your input! If I may (inadequadly) summarize what I read is
>> that we should take into account stability and not just technical
>> stability (your code doesn’t have to change as you upgrade your code),
>> but also _perceived_ stability (there is GHC2021 and GH2023 and that’s
>> confused).
>>
>> I agree that this is imporant, and worth thinking more about.
>>
>> In particular: How do other languages treat this? In one of my
>> newsfeeds I recently read
>>
>>> Version 1.65.0 of the Rust language has been released. Improvements
>>> include generic associated types, a new let...else statement, and
>>> the ability to break from labeled blocks
>>
>> and also
>>
>>> Version 3.10.0 of the Python language has been released. There are a
>>> lot of significant changes in this release, including the much-
>>> discussed structural pattern-matching feature.
>>
>> so these (popular, non-scary) languages certainly don’t freeze their
>> language, and do extend the language repeatedly. Why are they not
>> preceived as unstable as Haskell is?
>>
>> (Here I am really talking about _perceived_ instability, not real
>> instability in the sense of _breaking_ changes – the above extensions
>> are AFAIK not breaking, and many of our Haskell extensions are not
>> breaking.)
>>
>> It is because we have the concept of a language extension in the first
>> place! And, on top of that, now the concept of the current version of
>> GHC Haskell. If we didn’t have that in the first place, and no Haskell
>> standard, it’d just be the case that GHC-9.2 happens to be the first
>> version where you can, say, derive Functor, and that’s it.
>>
>> My idea of GHC20xx is that it brings us closer to the Rust or Python
>> model: Unless you tell GHC you want something else, you get the latest
>> stable (in the sense of proven, not in the sense of unchanging) set of
>> language features.
>>
>> And if you want something else (e.g. opt-out of new extensions, or try
>> out experimental ones), you have to explicitly ask for it (e.g. pin the
>> language version with -XGHC2021, or enable -XFancyTypes). A bit like
>> using Rust nightly, just less hassle…
>>
>> So if you don’t actively do something, you get the same experience as
>> in rust or python … and at this point I wonder why this experience is
>> perceived as different as in these languages?
>>
>> (Again, I am focusing here on non-breaking, additive extensions. How to
>> handle breaking changes is yet another discussion, of course, and one
>> where peeking at Python or Rust is not always showing us the best way
>> to do it.)
>>
>> Cheers,
>> Joachim
>>
>>
>>
>>
>> --
>> Joachim Breitner
>> mail at joachim-breitner.de
>> http://www.joachim-breitner.de/
>>
>> _______________________________________________
>> ghc-steering-committee mailing list
>> ghc-steering-committee at haskell.org
>> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
More information about the ghc-steering-committee
mailing list