[Haskell-cafe] Poll & plea: State of GUI & graphics libraries in Haskell

Conal Elliott conal
Wed Oct 2 22:28:55 UTC 2013


Interesting. How are the aesthetics? Can you point me to screen shots?

It'd be a lot of work, but one cool project would be to create *beautiful*
GUI elements using OpenGL programmable shaders. Given the speed of GPUs, we
could afford to put a lot into visual details.

A complementary project is designing a semantically precise and elegant
("denotative"/"genuinely functional" to use Peter Landin's terms) GUI DSEL
that would be simpler and more powerful than the conventional OO-inspired
libraries we have so much trouble getting to work in Haskell. I've thought
about this sort of thing on and off for a very long time and would be happy
to be involved if others are interested also.

Together, these two efforts would yield an approach to GUIs that is
beautiful inside and out.

-- Conal


On Wed, Oct 2, 2013 at 1:21 PM, Paul Liu <ninegua at gmail.com> wrote:

> No. GLFW does not give you any UI elements, just basic windowing and
> input handling.
>
> Euterpea has a UI layer on top of GLFW that provides text boxes and
> sliders, etc, entirely written in Haskell.
>
> On Wed, Oct 2, 2013 at 8:40 AM, Conal Elliott <conal at conal.net> wrote:
> > Hi Paul. Is there a way to use GLFW with GUI elements other than OpenGL
> > display windows, e.g., text boxes and sliders?  -- Conal
> >
> >
> > On Tue, Oct 1, 2013 at 11:23 PM, Paul Liu <ninegua at gmail.com> wrote:
> >>
> >> Thanks. I've just built GHC HEAD on Mac OS X Lion, and tested by
> >> installing libraries with --enable-shared and loading a GLFW program
> >> into GHCi. Using ghci -fno-ghci-sandbox, everything works great
> >> including closing and restarting GL window multiple times. Can't wait
> >> for the  official release of GHC 7.8!
> >>
> >> On Tue, Oct 1, 2013 at 12:09 PM, Carter Schonwald
> >> <carter.schonwald at gmail.com> wrote:
> >> > thats the linker bug.
> >> >
> >> > the glfw stuff has been tested on ghc HEAD / 7.7 by folks on
> >> > #haskell-game
> >> > in recent memory. GHCI + foreign libs should work fine now (modulo
> >> > thread
> >> > local storage related thing).
> >> >
> >> > the historical element doesn't matter any more.
> >> >
> >> > To the best of my knowledge, all such issues should be gone. Anyone
> who
> >> > cares about making sure GHCI+ gui libs play nice, PLEASE test with
> HEAD.
> >> >
> >> > the better this issue is properly tested (which i believe it has
> been),
> >> > the
> >> > more we can actually prevent it from happening. This requires people
> to
> >> > test
> >> > with HEAD GHCi now, rather than doing archaeology.
> >> >
> >> > anyone who cares, please play with GHCI in HEAD. If your lib doesn't
> >> > work
> >> > with ghci, please report a bug. It would be a new bug because it wont'
> >> > be
> >> > the previous reasons it hasnt' worked.
> >> >
> >> >
> >> > tl;dr to the best of my knowledge this issue is resolved in HEAD. Test
> >> > HEAD.
> >> > Help us make sure it stays resolved by testing HEAD.
> >> >
> >> > thanks
> >> > -Carter
> >> >
> >> >
> >> >
> >> >
> >> > On Tue, Oct 1, 2013 at 1:20 PM, Paul Liu <ninegua at gmail.com> wrote:
> >> >>
> >> >> I reported a problem with statically linked GLFW library on Mac OS X
> >> >> Lion in this thread:
> >> >>
> >> >>
> http://www.haskell.org/pipermail/haskell-cafe/2012-January/097355.html
> >> >>
> >> >> I do not know why this is broken on Mac OS X Lion, but not on Linux
> or
> >> >> Windows. There was an EnableGUI hack for GHC 7.2 (and previous
> >> >> versions) and OS X version before Lion, but it no longer works. So
> I'm
> >> >> not sure if it is OS X Lion, or GLFW, or GHC, or a combination of
> them
> >> >> that caused this problem.
> >> >>
> >> >> Regards,
> >> >> Paul Liu
> >> >>
> >> >> On Tue, Oct 1, 2013 at 7:04 AM, Carter Schonwald
> >> >> <carter.schonwald at gmail.com> wrote:
> >> >> > Hey simon, the two issues that have recurrently bit ghci
> interaction
> >> >> > with
> >> >> > foreign GUI libs are
> >> >> > 1) the ghci linker.  This is fixed in head by now having ghci use
> the
> >> >> > system
> >> >> > linker
> >> >> > 2) some GUI libs require thread local state, and ghci has a flag
> for
> >> >> > that
> >> >> > 3)  I'm not aware of anyone reporting newly broken libs wrt GUI
> >> >> > bindings
> >> >> > when 7.6 rolled out.  The only fix that's relevant to 7.8 is the
> >> >> > dylinker
> >> >> > bit, but that would have been a problem historically too.
> >> >> >
> >> >> > I believe a number of folks in #haskell-game have recently tested
> >> >> > point
> >> >> > one.
> >> >> > (Though I should ask to double check)
> >> >> >
> >> >> > At the very least, I'm not aware of hearing of such a 7.6 specific
> >> >> > ghci
> >> >> > breakage before.
> >> >> >
> >> >> >
> >> >> > On Tuesday, October 1, 2013, Simon Peyton-Jones wrote:
> >> >> >>
> >> >> >> Dear GHC devs
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> See below (in red).  I do not know the details of this, but it
> >> >> >> sounds
> >> >> >> like
> >> >> >> a pretty serious problem, and it used to work.  Is whatever-it-is
> >> >> >> confirmed
> >> >> >> fixed in 7.8?  Do we have a test that?ll trip if it breaks again?
> >> >> >> (I?m
> >> >> >> guessing that the latter might be hard.)
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> Thanks
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> Simon
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> -----Original Message-----
> >> >> >> From: Haskell-Cafe [mailto:haskell-cafe-bounces at haskell.org] On
> >> >> >> Behalf
> >> >> >> Of
> >> >> >> Paul Liu
> >> >> >> Sent: 30 September 2013 07:18
> >> >> >> To: Conal Elliott
> >> >> >> Cc: Haskell Cafe
> >> >> >> Subject: Re: [Haskell-cafe] Poll & plea: State of GUI & graphics
> >> >> >> libraries
> >> >> >> in Haskell
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> Hi Conal,
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> I wasn't able to make it to last Saturday's FARM track, but I
> think
> >> >> >>
> >> >> >> there was a good chance that Paul would have demonstrated his
> >> >> >> Euterpea
> >> >> >>
> >> >> >> music library, which includes a GUI interface (called MUI) written
> >> >> >> on
> >> >> >>
> >> >> >> top of GLFW. I wrote its initial implementation (around 2009?)
> with
> >> >> >> a
> >> >> >>
> >> >> >> monadic interface that let you wire together UI components with
> >> >> >>
> >> >> >> signals (I believe Dan later wrote an arrow interface, but I could
> >> >> >> be
> >> >> >>
> >> >> >> wrong). It was actually inspired by the ideas behind your Phooey
> UI
> >> >> >>
> >> >> >> library. It should be very easy to extract this part out as a
> >> >> >>
> >> >> >> standalone package if there is enough interest.
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> The only issue with it (and all other UI libraries) is that it
> >> >> >> doesn't
> >> >> >>
> >> >> >> play nicely in GHCi. It used to work pretty well with GHC 7.2 and
> >> >> >> 7.4
> >> >> >>
> >> >> >> on almost all platforms (Mac needs an extra hack), but GHC 7.6
> broke
> >> >> >>
> >> >> >> Mac (and perhaps Windows too). GHC 7.8 supposedly should fix this
> >> >> >>
> >> >> >> problem.
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> BTW, as also the author of the GLFW library on HackageDB, I've
> done
> >> >> >>
> >> >> >> barely minimal to keep this Haskell binding afloat. I'm actually
> >> >> >>
> >> >> >> leaning towards GLFW-b library, which is better maintained, and
> >> >> >>
> >> >> >> provides similar binding for GLFW C library but with a saner
> >> >> >> interface
> >> >> >>
> >> >> >> (no dependency on the OpenGL library, for example). If you don't
> >> >> >> need
> >> >> >>
> >> >> >> the two extra things that GLFW does (choice of either dynamic or
> >> >> >>
> >> >> >> static linking to GLFW C, and an embedded bitmap font), I suggest
> >> >> >> you
> >> >> >>
> >> >> >> try out GLFW-b if you are only looking for a think graphics layer
> >> >> >> with
> >> >> >>
> >> >> >> input+window+OpenGL.
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> The only thing keeping GLFW-b from becoming a good foundation for
> a
> >> >> >>
> >> >> >> pure Haskell UI lib is IMHO the lack of a light-weight,
> >> >> >>
> >> >> >> cross-platform, and full-featured font rendering solution. I
> believe
> >> >> >>
> >> >> >> many other libraries (including Diagram) are having the same
> >> >> >> problem.
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> On Thu, Sep 26, 2013 at 8:32 PM, Conal Elliott <conal at conal.net>
> >> >> >> wrote:
> >> >> >>
> >> >> >> > I'm polling to see whether there are will and expertise to
> reboot
> >> >> >> > graphics
> >> >> >>
> >> >> >> > and GUIs work in Haskell. I miss working on functional graphics
> >> >> >> > and
> >> >> >> > GUIs
> >> >> >> > in
> >> >> >>
> >> >> >> > Haskell, as I've been blocked for several years (eight?) due to
> >> >> >> > the
> >> >> >> > absence
> >> >> >>
> >> >> >> > of low-level foundation libraries having the following
> properties:
> >> >> >>
> >> >> >> >
> >> >> >>
> >> >> >> > * cross-platform,
> >> >> >>
> >> >> >> > * easily buildable,
> >> >> >>
> >> >> >> > * GHCi-friendly, and
> >> >> >>
> >> >> >> > * OpenGL-compatible.
> >> >> >>
> >> >> >> >
> >> >> >>
> >> >> >> > The last several times I tried Gtk2hs, I was unable to compile
> it
> >> >> >> > on
> >> >> >> > my
> >> >> >> > Mac.
> >> >> >>
> >> >> >> > Years ago when I was able to compile, the GUIs looked and
> >> >> >> > interacted
> >> >> >> > like a
> >> >> >>
> >> >> >> > Linux app, which made them awkward and upleasant to use.
> wxHaskell
> >> >> >> > (whose
> >> >> >>
> >> >> >> > API and visual appearance I prefered) has for years been
> >> >> >> > incompatible
> >> >> >> > with
> >> >> >>
> >> >> >> > GHCi, in that the second time I open a top-level window, the
> host
> >> >> >> > process
> >> >> >>
> >> >> >> > (GHCi) dies abruptly. Since my GUI & graphics programs are often
> >> >> >> > one-liners,
> >> >> >>
> >> >> >> > and I tend to experiment a lot, using a full compilation greatly
> >> >> >> > thwarts
> >> >> >> > my
> >> >> >>
> >> >> >> > flow. For many years, I've thought that the situation would
> >> >> >> > eventually
> >> >> >>
> >> >> >> > improve, since I'm far from the only person who wants GUIs or
> >> >> >> > graphics
> >> >> >> > from
> >> >> >>
> >> >> >> > Haskell.
> >> >> >>
> >> >> >> >
> >> >> >>
> >> >> >> > About three years ago, I built a modern replacement of my old
> Pan
> >> >> >> > and
> >> >> >>
> >> >> >> > V
> >> >> >
> >> >> >
> >> >> > _______________________________________________
> >> >> > ghc-devs mailing list
> >> >> > ghc-devs at haskell.org
> >> >> > http://www.haskell.org/mailman/listinfo/ghc-devs
> >> >> >
> >> >>
> >> >>
> >> >>
> >> >> --
> >> >> Regards,
> >> >> Paul Liu
> >> >
> >> >
> >>
> >>
> >>
> >> --
> >> Regards,
> >> Paul Liu
> >> _______________________________________________
> >> ghc-devs mailing list
> >> ghc-devs at haskell.org
> >> http://www.haskell.org/mailman/listinfo/ghc-devs
> >
> >
>
>
>
> --
> Regards,
> Paul Liu
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20131002/42dcaed6/attachment.htm>



More information about the Haskell-Cafe mailing list