Hi Chapel Developers --

I want to float an idea that's been proposed for quite some time, but 
which I've only started to prototype tonight.  The motivation is that you 
are a user or developer writing a wrapper for some external library, so 
you create a Chapel module, Foo, that wraps its externed routines.

However, at present, for a user to make use of such a module, they'd also 
need to list the .h, .c, .o, .a files on the 'chpl' command-line in order 
for the compiler to know what headers to include and what to link against. 
This puts an unfortunate burden on the user.

So, the proposal is to permit library developers to specify these 
dependences within the module itself.  This could be done using new 
syntax/keywords (in which case, we'd need a proposal), or by extending the 
'use' keyword to take string literals that would be treated similarly to 
how they would be if listed on the command-line.

I've partially prototyped this capability tonight by adding support for 
'use'-ing .h, .c, and .o files from within a module (available in a very 
rough draft form on my use-other-stuff branch for anyone that wants to 
take a look).  I've used the 'use' keyword for this purpose for now, both 
for simplicity and because it didn't require any parser changes (!).

Pieces that are missing, and required for the capability to be useful, I 
think, are some combination of:

        1) support for expanding shell variables in such strings
and/or
        2) support for specifying "-I", "-L", "-l" variants of such
           strings
and/or
        3) support for specifying ".a" and/or ".so" files in such strings


Before going much further, I wanted to check in and get commentary, 
though:

Q: Do you like the general idea?

If so...

Q: Do you prefer overloading 'use' or some other syntax?  (must propose an
    alternative, if that's your choice)

Q: Which of the three "and/or" options above are you in favor of? (choose
    0-3, though 0 is problematic without a counterproposal, I think)

If not...

Q: Why not?


Thanks,
-Brad


------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Chapel-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-developers

Reply via email to