HOpenGL and --enable-threaded-rts

Wolfgang Thaller wolfgang.thaller@gmx.net
Wed, 19 Jun 2002 10:29:52 +0200


On Mittwoch, Juni 19, 2002, at 01:43 , Andrew J Bromage wrote:

> I don't mean to detract from the fine work which the HOpenGL people
> have achieved, but I think that binding to the C implementation of GLUT
> was, in retrospect, a mistake.

The problem here is with OpenGL, not with GLUT. OpenGL requires some 
thread-local state to be set correctly in order to operate. Surely you 
wouldn't suggest reimplementing OpenGL (plus all OpenGL video drivers 
for every platform/OS/graphics card combination out there) in Haskell?

> Binding to foreign language-specific
> frameworks in general is a mistake, IMO.

I agree that it is difficult, and it can cause headaches. But in order 
to write "real-world" applications in Haskell, there is no way around 
it. In order to write GUI applications, I need a binding to Win32 (a 
"C-specific" framework) for Windows, to Carbon (C-specific) or Cocoa 
(Objective-C or Java) for MacOS X, and to some toolkit for X11 (Gtk, for 
example). Most of those use callbacks of some sort.
It cannot be a "mistake" because it is the _only_ option for achieving a 
certain goal (writing "native" GUI applications for any platform in 
Haskell).

> Today it's only threads which
> you may be able to hack around, but tomorrow, your called-back function
> will want to throw an exception, or something even hairier will turn up
> and you'll be back where you started.

Exceptions just require a little more marshaling, I think. As for the 
even hairier things, I don't think "they" are going to add many more 
crazy things to the C language family, so C-specific frameworks 
shouldn't hold too many surprises in store for us...

> Sorry for the pessimism, but this is bitter experience talking.

Sorry for the optimism, that's just my determination to use OpenGL from 
Haskell talking :-)


Cheers,
Wolfgang