[Haskell-cafe] Re: Building DLLs

Andrew Coppin andrewcoppin at btinternet.com
Fri Sep 26 17:20:59 EDT 2008


Simon Marlow wrote:
> Andrew Coppin wrote:
>
>> (1) is not of huge interest to me, but it's pleasing to know that 
>> it's possible. (I don't actually know how DLLs work, but presumably 
>> if I were to dig around in System.Win32 I could also call normal DLLs 
>> from Haskell too if I desire...?)
>
> Sure, that's possible.

Though non-portable.

Of course, system-specific things being system-specific is kind of 
beyond Haskell's ability to fix. ;-)

>> (2) is something I'd like to see - and I aplaud you for seeking to 
>> make this a portable thing! (As well it should be.) One or other of 
>> the developer wiki pages lists this as "things we'll definitely do 
>> for 6.10"; can you confirm or refute that?
>
> It's one of several things we quite get done in time for 6.10.1, I'll 
> edit that page.

Aww... :-(

Oh well, I'm sure we'll get it eventually. Up to date documentation is 
always nice though! (I realise this isn't always a busy development 
team's top priority - especially as release dates approach, etc.)

>> Also, I read somewhere that you are/were looking at making the RTS 
>> into a DLL. What's the status with that?
>
> That's part of the same effort.  Once Haskell packages can go into 
> DLLs/shared libraries, the RTS can too (indeed, it probably has to).

Would that mean you can change between RTS versions just by supplying a 
command switch? (Presumably a small portion of the RTS still gets 
statically linked in so it knows to load a DLL from somewhere?) Or does 
the RTS version you want to use affect the rest of the compilation 
process? (I'm thinking of switching between threaded/nonthreaded RTS, 
stuff like that.)

I presume the plan is to make shared libraries *optional*? As in, you 
can still build statically-linked executables if you specifically wanted 
to for some strange reason?

(Also, I presume you still need a *.hi file to compile any code against 
a library, no matter what the linkage is, and then cross-module 
optimisation will still happen. The versioning problem looks... 
interesting.)

>> Given that I know virtually nothing about how such low-level things 
>> work, and I have no clue how GHC works internally, is there anything 
>> useful I can do to help you guys with this stuff? I mean, other than 
>> complaining that it's not done yet... ;-)
>
> Help with testing and reporting bugs is always welcome!  Ee'll 
> announce something when it's ready to test.

Heh, OK. Well I gather Windows testers are rare round here. I'll try 
compiling things if you want... ;-)

Actually, you have a beta for 6.10 already, right?



More information about the Haskell-Cafe mailing list