[m-rev.] for review: implement pragma foreign_export

Julien Fischer juliensf at csse.unimelb.edu.au
Wed Jul 19 15:54:08 AEST 2006


On Wed, 19 Jul 2006, Ian MacLarty wrote:

> On Wed, Jul 19, 2006 at 02:09:28PM +1000, Julien Fischer wrote:
>>>> doc/reference_manual.texi:
>>>> 	Add a new section to the foreign language interface chapter
>>>> 	documenting the new pragma.
>>>>
>>>> 	Update the descriptions of the language specific bindings to include
>>>> 	the new pragma.
>>>>
>>>> tests/hard_coded/Mmakefile:
>>>> tests/hard_coded/pragma_foreign_export.{m,exp}:
>>>> 	Make sure that we can parse the new syntax and run a simple program
>>>> 	that uses exported procedures.
>>>>
>>>
>>> Are you planning to replace all uses of ":- pragma export" in the
>>> compiler (such as in browser/declarative_debugger.m) with the new pragma
>>> in a subsequent diff?
>>>
>>
>> Not immediately.
>
> But it seems that your diff has replaced ":- pragma export" with
> ":- pragma foreign_export" in error messages.  Will I get an error about
> a ":- pragma foreign_export" now if I have an error in a ":- pragma
> export"?

Yes.

> If so, then that's a bug.

It's not a very important bug ... it's the same bug that reports errors in
foreign_proc pragmas when there is a bug in a pragma c_code declaration.  If
you feel strongly about it I can fix it but I don't think that it's worth
it.

> I propose you fix that bug by
> disallowing ":- pragma export" as soon as the new compiler has been
> installed on our Mercury machines.

We won't be doing that for backwards compatibility reasons.  Support for
pragma export will be removed along with support for pragma c_code,
pragma c_header_code etc.

>>>> Index: doc/reference_manual.texi
>>>> ===================================================================
>>>> RCS file: /home/mercury1/repository/mercury/doc/reference_manual.texi,v
>>>> retrieving revision 1.357
>>>> diff -u -r1.357 reference_manual.texi
>>>> --- doc/reference_manual.texi	5 Jul 2006 08:45:37 -0000	1.357
>>>> +++ doc/reference_manual.texi	12 Jul 2006 08:05:27 -0000
>>>> @@ -6071,6 +6071,9 @@
>>>> 				       or function as a call to code
>>>> 				       written in a different
>>>> 				       programming language.
>>>> +* Calling Mercury from foreign code::  How to call a Mercury predicate
>>>> +                                       or funciton from a different
>>>> +                                       programming language.
>>>> * Using foreign types from Mercury::   How to use a type defined in
>>>> 				       a different programming language
>>>> 				       in Mercury code.
>>>> @@ -6388,6 +6391,41 @@
>>>>
>>>> @c
>>>> -----------------------------------------------------------------------
>>>>
>>>> + at node Calling Mercury from foreign code
>>>> + at section Calling Mercury from foreign code
>>>> +
>>>> +Mercury procedures may be exported so that they can be called by code
>>>> written
>>>> +in a foreign language.
>>>> +
>>>
>>> I think you need to clarify that the foreign code that calls the Mercury
>>> code must in turn have been called from Mercury code, or alternatively
>>> the user needs to take steps to initialize the Mercury runtime before
>>> calling the exported procedure.
>>
>> Yes, but I'm not going to do that as a part of this diff.  Currently
>> the only documentation we can point a user to for doing that is the
>> code in samples.  I'm planning to write a new section for the user's
>> guide on initialising the runtime as part of the standalone libraries
>> change - I'll update this section then.
>>
>
> I still think it at least say that calling exported Mercury procedures
> from foreign code that's not called from Mercury code originally is not
> yet supported.  Reading the doc I'd expect to be able to call the
> exported proc from my C program, but that won't work at the moment.

Yes it will.  See samples/c_interface/simpler_c_calls_mercury.

Julien.
--------------------------------------------------------------------------
mercury-reviews mailing list
post:  mercury-reviews at csse.unimelb.edu.au
administrative address: owner-mercury-reviews at csse.unimelb.edu.au
unsubscribe: Address: mercury-reviews-request at csse.unimelb.edu.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at csse.unimelb.edu.au Message: subscribe
--------------------------------------------------------------------------



More information about the reviews mailing list