RFC 121 (v1) linkable output mode

[email protected] (Perl6 RFC Librarian)
Newsgroups perl.perl6.announce,perl.perl6.internals
Message-ID <[email protected]>
This and other RFCs are available on the web at
  http://dev.perl.org/rfc/

=head1 TITLE

linkable output mode

=head1 VERSION

  Maintainer: David Nicol <[email protected]>
  Date: 17 Aug 2000
  Version: 1
  Mailing List: [email protected]
  Number: 121

=head1 ABSTRACT


Perl5 offers a clunky interface for those who
wish to call perl subroutines from within C programs.
Herein is suggested a vastly simplified application
programmer's interface:  a C< -o > command line switch identical
to that used in C compilers to produce a linkable object file.


=head1 DESCRIPTION

Two command line switches, -o and -oh, are added to perl6's invocation syntax.

Perl invoked with the -o switch does not run its program, but rather
pukes out an "object file" same way gcc would if given a file full of
C code.

Perl invoked with the -oh switch does not run its program, but rather
pukes out a "header file" suitable for inclusion into a C program,
containing the correct linkage definitions for the object file created
by the -o switch.

The resulting object file must be linked with the perl library to work.

The point is, the perl internals are effectively hidden from the programmer
who wishes to use a feature available in perl from within a C program.

Much is left unspecified.

=head1 IMPLEMENTATION

Given a nonprototyped subroutine, C<perl6 -o> will
generate suitable wrapper
code for all subroutines in the input file, as described in the L<perlcall>
and L<perlembed> perldoc pages, and then pass this code (via a temporary file)
to the same C compiler that was used to build perl.

Given a perl6 subroutine with a fully described prototype, which amounts
to a C struct structure, that structure (with its names if any) can
be used as the parameter types of the resulting function call. A restricted
return type described in terms of basic C data types can function as a
C function return type.

Perl functions that are already using restricted parameter lists
and restricted return types are effectively doing their own type conversions,
except between SV{STRING} and char*, but allowing C access to the SV{STRING}
data type and functions can't be anything but good.


=head1 REFERENCES

my imagination

perldoc perlembed

perldoc perlcall
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.