1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193
|
INTRODUCTION:
Inline.pm - Write Perl subroutines in other programming languages.
Inline lets you write Perl subroutines in other programming languages
like C, C++, Java, Python, Tcl and even Assembly. You don't need to
compile anything. All the details are handled transparently so you
can just run your Perl script like normal.
Example:
use Inline::Files;
use Inline C;
print JAxH('Inline'), "\n";
__C__
SV* JAxH(char* x) {
return newSVpvf ("Just Another %s Hacker",x);
}
When run, this complete program prints:
Just Another Inline Hacker
The one line version is:
perl -le 'use Inline C=>q{SV*JAxH(char*x){return newSVpvf("Just Another %s Hacker",x);}};print JAxH+Inline'
-------------------------------------------------------------------------------
FEATURES:
Inline version 0.44 is a semi-major release:
+ This version is intended to be backwards compatible with 0.43.
+ Fixed many bugs reported since 0.43
+ Sped up parsing of C with 'USING => ParseRegExp'
+ Added BUILD_NOISY and BUILD_TIMERS options
+ Use File::Spec for all path operations. First step in porting to all
platforms.
+ Always call ILSM->validate()
+ Allow C++ modules to be written with Inline
+ New improved Inline::MakeMaker
Inline version 0.43 is a minor release:
+ Added XSMODE for using Inline directly with XS
+ Now works with *all* Perl release versions over 5.005 (5.005_02, etc)
+ Removed old deprecated funstionality
+ Works on Mac OS X
+ Added support for ILSMs who don't want to invoke a build
+ Added script's working directory to the #include path for C
+ Tighter integration between Inline::C and Inline::CPP
+ Bug fixes reported on the mailing list.
Inline version 0.42 is a minor release:
+ Applied a couple patches. Python and Tcl now install properly.
Inline version 0.41 is a minor release:
+ Added the AUTOWRAP feature for C
- Inline can now create wrappers from C function *declarations* alone.
+ Made Inline::MakeMaker work correctly in nested Makefile.PL trees.
+ Fixed bug preventing other Inline::* modules from installing in some cases.
+ Fixed platform dependent CRLF issues.
Inline version 0.40 is a major upgrade. It includes:
+ Inline::MakeMaker
+ Rock solid support for writing CPAN extension modules
+ Short file names.
+ No more _Inline/lib/auto/Foo_C_3cee729d1d942c6792ca5a741dc21879/Foo_C_3cee729d1d942c6792ca5a741dc21879.so
+ Now it's _Inline/lib/auto/Foo/Foo.so
+ Support for creating binary distributions.
+ Can even do it without shipping C source code.
+ Support for Damian Conway's Inline::Files
+ No more __END__ markers.
+ Safe new config and caching format.
+ Similar to Data::Denter format
+ New Inline-FAQ.pod.
Inline version 0.34 fixes 2 minor bugs:
+ Makefile.PL got confused on $Config::Config{cc} with full pathnames or flags
+ Makefile.PL/Makefile dependency caused a problem in one rare case.
Inline version 0.33 is a minor upgrade with the following changes:
+ Support for Inline::Struct and Inline::Filters
+ Added ENABLE and DISABLE configuration modifiers.
+ C installation is optional
+ Test harness reworked. Faster testing.
+ Fixed all reported (and some unreported) bugs.
+ Documentation enhancements.
Inline version 0.32 is a minor upgrade with the following changes:
+ Addition of UNTAINT, SAFEMODE, GLOBAL_LOAD, MAKE, and LDDLFLAGS
configuration options.
+ Fixed all reported (and some unreported) bugs.
+ Documentation enhancements.
Inline version 0.31 is a minor upgrade with the following changes:
+ "use Inline C;" is now a synonym for "use Inline C => DATA;"
+ Default build/install directory changed from "blib_I/" to ".Inline/"
+ Build/Install directory structure simplified.
+ Short install paths.
+ Build areas in ".Inline/build/" subdirectory.
+ Added 'CC', 'CCFLAGS', 'LD', and 'LDFLAGS' config options to C.
+ More recipes in Cookbook.
Inline version 0.30 is a major upgrade from previous verions. It includes:
+ Integrated support for typemap files in C.
+ All the recognized types now come *only* from typemaps.
+ The default types come from the default typemap installed with core Perl.
+ Typemaps are used to modify the Parse::RecDescent grammar for parsing C.
+ This means you can easily use your existing typemaps.
+ Language support completely separated from base Inline code.
+ Beta supoort for C (Inline::C, included)
+ Alpha support for C++ (Inline::CPP, available separately)
+ Alpha support for Python (Inline::Python, available separately)
+ Support for 'embedding' Perl in C with my new programming language, CPR.
(Inline::CPR, available separately) This one may warp your mind :^)
+ Simple API for adding your own language support.
+ Write your own Inline::Foo
+ Write your own implementation of Inline::C, or just modify
Inline::C::grammar.
+ Support for interpreted languages in addition to compiled ones.
+ Autodetection of new Inline language modules.
+ Much easier and more powerful configuration syntax.
+ More XS and MakeMaker features exposed for configuration (for C and C++).
+ Flexible new syntax for specifying source code.
+ Use DATA section for AutoLoader, Inline, and POD simultaneously.
+ Support for using Inline 'with' other modules.
+ "use Inline with 'Event';" lets Event.pm pass config info to Inline.pm.
+ Event.pm 0.80 has built in support for Inline.pm 0.30 and higher.
+ Write Event callbacks in C with extreme ease.
+ More documentation
+ perldoc Inline
+ perldoc Inline-FAQ
+ perldoc Inline-API
+ perldoc Inline::C
+ perldoc Inline::C-Cookbook
+ Better error messages and easier debugging.
+ Mailing list: inline@perl.org
Other features of Inline.pm include:
= Automatically compiles your source code and caches the shared object.
= Automatically DynaLoads the shared object and binds it to Perl.
= Recompiles only when the C code changes.
= Changing the Perl code will not cause a recompile of the C code.
= Support for writing extension modules, suitable for distributing to the CPAN.
= Support for generating and binding Inline subs at run time. <bind()>
= Works on all Unix and MS Windows configurations.
-------------------------------------------------------------------------------
INSTALLATION:
This module requires the Digest::MD5 and Parse::RecDescent modules. It also
requires the appropriate C compiler. (Where appropriate means the one referred
to in your Config.pm)
To install Inline do this:
perl Makefile.PL
make
make test
make install
On ActivePerl for MSWin32, use nmake instead of make. Or just use:
ppm install Inline
For convenience, Inline::C is packaged with Inline, and will be automatically
installed as well.
-------------------------------------------------------------------------------
INFORMATION:
= For more information on Inline, see 'perldoc Inline' and 'perldoc Inline-FAQ'
= For information about Inline::, see 'perldoc Inline::C' and
'perldoc Inline::C-Cookbook'
= For information on writing your own Inline extension see 'perldoc Inline-API'
= For information about the Perl5 internal C API, see 'perldoc perlapi' or
try http://www.perldoc.com/perl5.6/pod/perlapi.html
= The Fall 2000 edition of The Perl Journal has an article about Inline
The Inline.pm mailing list is inline@perl.org. Send email to
inline-subscribe@perl.org to subscribe.
Please send questions and comments to "Brian Ingerson" <INGY@cpan.org>
Copyright (c) 2001, 2002, Brian Ingerson. All Rights Reserved.
|