[ANNOUNCE] Glasgow Haskell Compiler 9.0.1-alpha1 released

Cheng Shao cheng.shao at tweag.io
Tue Sep 29 14:25:34 UTC 2020


> that I know we have musl (x86_64, aarch64) based ghcs in production.

These ghc bindists (at least the one produced on gitlab ci) have
dynamically linked ghc executables iirc. Last time I tried to turn off
DYNAMIC_GHC_PROGRAM when building ghc on alpine, the produced ghc will
panic on TH code. That's on the 8.8 branch though.

On Tue, Sep 29, 2020 at 4:21 PM Moritz Angermann
<moritz.angermann at gmail.com> wrote:
>
> This sent me down an interesting path.  You are right that dlopen on returns NULL with musl on x86_64, and dlerror will subsequently produce "Dynamic loading not supported" if asked to compile with -static.  I think GHC has code to fallback to archives in the case where loading shared objects fails, but I can't find the code right now.  It still means you'd need to have static sqlite (in this case) and other libraries around.
>
> I'm still a bit puzzled, and I think I'm missing something.  It remains, that I know we have musl (x86_64, aarch64) based ghcs in production.  I wonder if there is something we got right by accident, that makes this work smoothly for us.  Warrants more investigation.
>
> Cheers,
>  Moritz
>
> On Tue, Sep 29, 2020 at 7:45 PM Moritz Angermann <moritz.angermann at gmail.com> wrote:
>>
>> Happy to give this a try later today. Been using fully static musl builds (including cross compilation) for x86_64 for a while now; and did not (yet?) run into that SQLite issue. But did have it use shared objects in iserv.
>>
>> On Tue, 29 Sep 2020 at 7:18 PM, Cheng Shao <cheng.shao at tweag.io> wrote:
>>>
>>> Hi Moritz,
>>>
>>>
>>>
>>> > However dlopen with musl on x86 seems fine.
>>>
>>>
>>>
>>> Here's a dlopen example that segfaults if linked with -static:
>>>
>>>
>>>
>>> #include <stdio.h>
>>>
>>> #include <dlfcn.h>
>>>
>>>
>>>
>>> int main() {
>>>
>>>   void *h = dlopen("/usr/lib/libsqlite3.so", RTLD_NOW);
>>>
>>>   char *f = dlsym(h, "sqlite3_version");
>>>
>>>   printf("%s\n", f);
>>>
>>>   return 0;
>>>
>>> }
>>>
>>>
>>>
>>> On Tue, Sep 29, 2020 at 1:04 PM Moritz Angermann
>>>
>>> <moritz.angermann at gmail.com> wrote:
>>>
>>> >
>>>
>>> > No. Not necessarily. We can perfectly fine load archives and the pre-linked ghci objects. However dlopen with musl on x86 seems fine. On arm it’s not implemented, and just throws an error message. There is a -dynamic flag in HEAD, which disables GHC even trying to load dynamic libraries and always assuming there is no dynamic linking facility, even if configure reports the existence of dlopen...
>>>
>>> >
>>>
>>> > On Tue, 29 Sep 2020 at 6:54 PM, Cheng Shao <cheng.shao at tweag.io> wrote:
>>>
>>> >>
>>>
>>> >> Hi Ben,
>>>
>>> >>
>>>
>>> >>
>>>
>>> >>
>>>
>>> >> > We will likely transition the Alpine binary distribution to be fully
>>>
>>> >>
>>>
>>> >>    statically-linked, providing a convenient, distribution-independent
>>>
>>> >>
>>>
>>> >>    packaging option for Linux users.
>>>
>>> >>
>>>
>>> >>
>>>
>>> >>
>>>
>>> >> iirc for statically linked executables, musl doesn't even support
>>>
>>> >>
>>>
>>> >> dlopen, so wouldn't this mean such a bindist would fail for all
>>>
>>> >>
>>>
>>> >> LoadDLL ghci commands?
>>>
>>> >>
>>>
>>> >>
>>>
>>> >>
>>>
>>> >> Cheers,
>>>
>>> >>
>>>
>>> >> Cheng
>>>
>>> >>
>>>
>>> >>
>>>
>>> >>
>>>
>>> >> On Mon, Sep 28, 2020 at 9:15 PM Ben Gamari <ben at well-typed.com> wrote:
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> > Hello all,
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> > The GHC team is very pleased to announce the availability of the first
>>>
>>> >>
>>>
>>> >> > alpha release in the GHC 9.0 series. Source and binary distributions are
>>>
>>> >>
>>>
>>> >> > available at the usual place:
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> >     https://downloads.haskell.org/ghc/9.0.1-alpha1/
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> > This first alpha comes quite a bit later than expected. However, we have
>>>
>>> >>
>>>
>>> >> > done a significant amount of testing on this pre-release and therefore
>>>
>>> >>
>>>
>>> >> > hope to be able to move forward quickly with a release candidate next
>>>
>>> >>
>>>
>>> >> > week and with a final release in mid-October.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> > GHC 9.0.1 will bring a number of new features:
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> >  * A first cut of the new LinearTypes language extension [1], allowing
>>>
>>> >>
>>>
>>> >> >    use of linear function syntax and linear record fields.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> >  * A new bignum library (ghc-bignum), allowing GHC to be more easily
>>>
>>> >>
>>>
>>> >> >    used with integer libraries other than GMP.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> >  * Improvements in code generation, resulting in considerable
>>>
>>> >>
>>>
>>> >> >    performance improvements in some programs.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> >  * Improvements in pattern-match checking, allowing more precise
>>>
>>> >>
>>>
>>> >> >    detection of redundant cases and reduced compilation time.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> >  * Implementation of the "simplified subsumption" proposal [2]
>>>
>>> >>
>>>
>>> >> >    simplifying the type system and paving the way for QuickLook
>>>
>>> >>
>>>
>>> >> >    impredicativity in GHC 9.2.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> >  * Implementation of the QualifiedDo extension [3], allowing more
>>>
>>> >>
>>>
>>> >> >    convenient overloading of `do` syntax.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> >  * Improvements in compilation time.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> > And many more. See the release notes [4] for a full accounting of the
>>>
>>> >>
>>>
>>> >> > changes in this release.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> > Do note that there are a few things that we expect will change before
>>>
>>> >>
>>>
>>> >> > the final release:
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> >  * We expect to sort out a notarization workflow for Apple Darwin,
>>>
>>> >>
>>>
>>> >> >    allowing our binary distributions to be used on macOS Catalina
>>>
>>> >>
>>>
>>> >> >    without hassle.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> >    Until this has been sorted out Catalina users can exempt the
>>>
>>> >>
>>>
>>> >> >    current macOS binary distribution from the notarization requirement
>>>
>>> >>
>>>
>>> >> >    themselves by running `xattr -cr .` on the unpacked tree before
>>>
>>> >>
>>>
>>> >> >    running `make install`.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> >  * We will likely transition the Alpine binary distribution to be fully
>>>
>>> >>
>>>
>>> >> >    statically-linked, providing a convenient, distribution-independent
>>>
>>> >>
>>>
>>> >> >    packaging option for Linux users.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> >  * We will be merging a robust solution for #17760 which will introduce
>>>
>>> >>
>>>
>>> >> >    a new primitive, `keepAlive#`, to the `base` library, subsuming
>>>
>>> >>
>>>
>>> >> >    most uses of `touch#`.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> > As always, do test this release and open tickets for whatever issues you
>>>
>>> >>
>>>
>>> >> > encounter. To help with this, we will be publishing a blog post
>>>
>>> >>
>>>
>>> >> > describing use of our new `head.hackage` infrastructure to ease testing
>>>
>>> >>
>>>
>>> >> > of larger projects with Hackage dependencies later this week.
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> > Cheers,
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> > - Ben
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> >
>>>
>>> >>
>>>
>>> >> > [1] https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0111-linear-types.rst
>>>
>>> >>
>>>
>>> >> > [2] https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0287-simplify-subsumption.rst
>>>
>>> >>
>>>
>>> >> > [3] https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0216-qualified-do.rst
>>>
>>> >>
>>>
>>> >> > [4] https://downloads.haskell.org/ghc/9.0.1-alpha1/docs/html/users_guide/9.0.1-notes.html
>>>
>>> >>
>>>
>>> >> > _______________________________________________
>>>
>>> >>
>>>
>>> >> > ghc-devs mailing list
>>>
>>> >>
>>>
>>> >> > ghc-devs at haskell.org
>>>
>>> >>
>>>
>>> >> > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>>>
>>> >>
>>>
>>> >> _______________________________________________
>>>
>>> >>
>>>
>>> >> ghc-devs mailing list
>>>
>>> >>
>>>
>>> >> ghc-devs at haskell.org
>>>
>>> >>
>>>
>>> >> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>>>
>>> >>
>>>


More information about the ghc-devs mailing list