NAME

XS::TCC - Embed, wrap & compile C code in Perl without going to disk

SYNOPSIS

# WARNING interface is bound to change...
use XS::TCC qw(tcc_inline);

tcc_inline q{
  int foo(int bar) {
    return bar * 2;
  }
};

print foo(3.1), "\n"; # prints 6.2
# more elaborate functions involving Perl types work as well

DESCRIPTION

This is a highly experimental module. Use at your own risk. Get in touch with the author(s) if in doubt.

XS::TCC allows you to embed C code into your Perl that is compiled and linked on the fly, in memory, without ever touching your disk except to read the Perl code in the first place. This amazing feat actually has very little to do with this module's code but rather with TCC (TinyCC, see tinycc.org) which allows compilation and linking in memory.

On my first-gen core i5 laptop, making two small-medium size functions available to Perl takes around 30ms including parse, wrapper code generation, typemapping, compilation, linking, and XSUB installation. Wrapping more code is bound to be relatively faster.

The output of TCC is slower than the equivalent function compiled with GCC, but both beat regular Perl by a wide margin {citation required}.

SEE ALSO

AUTHOR

Steffen Mueller <smueller@cpan.org>

With much appreciated contributions from:

Tokuhiro Matsuno

David Mertens

COPYRIGHT AND LICENSE

Copyright (C) 2013, 2014 by Steffen Mueller

XS::TCC is distributed under the GNU Lesser General Public License
(see COPYING file).