summaryrefslogtreecommitdiff
path: root/dist/ExtUtils-ParseXS
Commit message (Collapse)AuthorAgeFilesLines
* ExtUtils::ParseXS: Promote version to 3.30Steffen Mueller2015-08-3111-12/+19
| | | | To correspond to stable CPAN release.
* bump $ExtUtils::ParseXS::VERSION to 3.29Tony Cook2015-08-106-6/+6
|
* Fix INCLUDE_COMMAND $^X for Perl In SpaceEd J2015-08-101-1/+21
|
* Small typographical corrections to documentation.SHIRAKATA Kentaro2015-04-181-1/+1
| | | | Commit modifies 4 of 5 files in patch submitted by author in RT #124335.
* Remove 'use lib' left over from refactoring -- five years ago!James E Keenan2015-03-3010-12/+10
| | | | | | Per report by kentnl++ in RT #124151. Increment $VERSION across dist/ExtUtils-ParseXS/lib. Add perldelta entry.
* Document API for XS LC_NUMERIC locale manipulationKarl Williamson2015-03-191-19/+26
| | | | | XS writers may need to manipulate the LC_NUMERIC locale. Some macros are available to do this. This documents them and the issues.
* document + improve ancient optimization in ParseXSDaniel Dragan2014-12-162-3/+17
| | | | | | | From commit 8990e30710 "perl 5.0 alpha 6". The DESTROY XSUB with T_PTROBJ as INPUT arg was refusing to obey my custom typemap for T_PTROBJ, but all other XSUBs followed the custom T_PTROBJ override. Extend this optimization to other rarely used typemap types and document this behavior.
* improve ParseXS RETVAL code genDaniel Dragan2014-11-241-10/+52
| | | | | | | | | | | | | | | | | | | | | | | | | This patch avoids using ST(0) repeatedly in the OUTPUT section for RETVAL. ST() include a read of global PL_stack_base. This read must be done between every function call per C lang. XSRETURN also contains a PL_stack_base read. sv_2mortal returns the incoming SV, the retval was previously ignored and ST was used again. This patch reduced the number of ST references to exactly 1, per RETVAL. The PL_stack_base reference in XSRETURN will be optimized into the PL_stack_base reference in ST(0). Using the retval of sv_2mortal allows the SV* to stay in a cheaper volatile register. In a sequence of "RETVALSV = newSViv(RETVAL); RETVALSV = sv_2mortal(RETVALSV); ST(0) = RETVALSV; XSRETURN(1);" RETVALSV never had to be saved around a function call. Also ST(0) in a multi eval macro with different function calls in it, will cause more PL_stack_base reads, so badly written user supplied typemaps get optimized since a C auto that never had & done on it is guarenteed to not change between function calls. To produce cleaner C code, indenting cleanup is done, and if RETVAL is a SV *, RETVALSV isn't created. Also if no additional boilerplate lines like sv_2mortal are added, RETVALSV isn't created. See [perl #123278] for details on machine code reductions that this patch caused and also see http://www.nntp.perl.org/group/perl.perl5.porters/2014/11/msg222342.html
* fix builds with ExtUtils::ParseXSDavid Mitchell2014-11-211-1/+2
| | | | | | A recent change to ExtUtils::ParseXS broke builds: add PERL_UNUSED_VAR(file) only when the 'file' var is present.
* Increase other ExtUtils mods’ version to 3.27Father Chrysostomos2014-11-214-4/+4
|
* Increase $ExtUtils::ParseXS::VERSION to 3.27Father Chrysostomos2014-11-211-1/+1
|
* ExtUtils::ParseXS: Suppress unused ‘file’ warningFather Chrysostomos2014-11-211-0/+1
| | | | | Since newXS_deffile was introduced, we don’t always use the file variable.
* add filename handling to xs handshakeDaniel Dragan2014-11-132-11/+20
| | | | | | | | | | | | | | | | | | | | | - this improves the error message on ABI incompatibility, per [perl #123136] - reduce the number of gv_fetchfile calls in newXS over registering many XSUBs - "v" was not stripped from PERL_API_VERSION_STRING since string "vX.XX.X\0", a typical version number is 8 bytes long, and aligned to 4/8 by most compilers in an image. A double digit maint release is extremely unlikely. - newXS_deffile saves on machine code in bootstrap functions by not passing arg filename - move newXS to where the rest of the newXS*()s live - move the "no address" panic closer to the start to get it out of the way sooner flow wise (it nothing to do with var gv or cv) - move CvANON_on to not check var name twice - change die message to use %p, more efficient on 32 ptr/64 IV platforms see ML post "about commit "util.c: fix comiler warnings"" - vars cv/xs_spp (stack pointer pointer)/xs_interp exist for inspection by a C debugger in an unoptimized build
* add xs_handshake APIDaniel Dragan2014-11-074-25/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This API elevates the amount of ABI compatibility protection between XS modules and the interp. It also makes each boot XSUB smaller in machine code by removing function calls and factoring out code into the new Perl_xs_handshake and Perl_xs_epilog functions. sv.c : - revise padlist duping code to reduce code bloat/asserts on DEBUGGING ext/DynaLoader/dlutils.c : - disable version checking so interp startup is faster, ABI mismatches are impossible because DynaLoader is never available as a shared library ext/XS-APItest/XSUB-redefined-macros.xs : - "" means dont check the version, so switch to " " to make the test in xsub_h.t pass, see ML thread "XS_APIVERSION_BOOTCHECK and XS_VERSION is CPP defined but "", mow what?" ext/re/re.xs : - disable API version checking until #123007 is resolved ParseXS/Utilities.pm : 109-standard_XS_defs.t : - remove context from S_croak_xs_usage similar to core commit cb077ed296 . CvGV doesn't need a context until 5.21.4 and commit ae77754ae2 and by then core's croak_xs_uage API has been long available and this backport doesn't need to account for newer perls - fix test where lack of having PERL_IMPLICIT_CONTEXT caused it to fail
* [perl #122985] perlxs: PPCODE doesn't allow for CLEANUPTony Cook2014-10-216-8/+8
|
* perlxs: Add text about dealing with locales, etcKarl Williamson2014-08-241-0/+92
| | | | | | | This pod has been totally silent about monkey wrenches that could be thrown by XS code doing things that can affect perl. Add a few cautions, including some detailed information about one area where we have been bitten: locales.
* ExtUtils::ParseXS: doc typo fixSteffen Mueller2014-06-1610-11/+11
| | | | Includes version bump.
* Fix remaining too-long verbatim lines in perlxstut.podKarl Williamson2014-05-071-29/+31
|
* Bring a few lines in perlxstut.pod under 80 colskafka2014-05-071-19/+21
|
* EU::ParseXS: Code cleanupSteffen Mueller2014-03-0514-168/+226
| | | | | | General refactoring to make the code (marginally) easier to follow and more consistent. This should not result in a change in behaviour. Includes version bump to 3.24.
* [perl #121223] explain PERL_NO_GET_CONTEXT a littleTony Cook2014-02-172-3/+20
| | | | and tell the reader where to find the details.
* add #define PERL_NO_GET_CONTEXT to ParseXS's podsDaniel Dragan2014-02-172-2/+8
| | | | | Not using PERL_NO_GET_CONTEXT is for legacy or unmaintained pre-ithreads code. New code should define it.
* ExtUtils::ParseXS: Fix tests for native android buildsBrian Fraser2014-01-263-0/+16
|
* [perl #120408] fix dist/ExtUtils-ParseXS/t/002-more.tFrançois Perrad2013-10-291-1/+1
| | | | | | the plan is fragile 29 = 2 + 2 + 25 Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
* ExtUtils::ParseXS: bump version of related modulesDavid Mitchell2013-09-159-9/+9
| | | | | | 9b2d7314c3d60 bumped $VERSION in ParseXS.pm from 3.22 to 3.23, but left the other .pm files at .22. This stops ExtUtils::ParseXS from loading, so bump all the other modules in this distribution too.
* Increase $ExtUtils::ParseXS::VERSION to 3.23Father Chrysostomos2013-09-141-1/+1
| | | | | There has been another change (e15ca23a9) since the last CPAN release. Would that cmp_version.t could catch this!
* Allow semi-colon on TYPEMAP: line to work without it on the closing delim.Matthew Horsfall2013-09-123-2/+15
| | | | | | | | | | This means: TYPEMAP: <<FOO; Something T_IV FOO will now work.
* Update ExtUtils-ParseXS to CPAN version 3.22Chris 'BinGOs' Williams2013-08-2911-10/+14
| | | | | | | | [DELTA] 3.22 - Thu Aug 29 19:30:00 CET 2013 - Fix parallel testing crashes. - Explicitly require new-enough Exporter.
* Use SSize_t for arraysFather Chrysostomos2013-08-251-2/+2
| | | | | | | | | | Make the array interface 64-bit safe by using SSize_t instead of I32 for array indices. This is based on a patch by Chip Salzenberg. This completes what the previous commit began when it changed av_extend.
* Trim second block (nolinenumbers) to avert crashes on Win32.James E Keenan2013-08-191-39/+1
| | | | | | | | In second block of tests, eliminate all tests except those needed to prove that ParseXS can write a .c file without line numbers. We will treat this as sufficient because the tests we are deleting are causing crashes on Windows. For: RT #119231
* Avert crashes when testing in parallel.James E Keenan2013-08-172-101/+83
| | | | | | | | | | | | | Both t/001-basic.t and what was t/004-nolinenumbers.t were trying to write to a 't/XSTest.c' file. When run in parallel, this was causing problems when TEST_JOBS >= 1 (2 on some boxes, 4 on dromedary). Since all that t/004-nolinenumbers.t was ever trying to do was to run process_file() without line numbers -- a case not exercised prior to my 2009-11 refactoring/test additions -- the simplest way to avoid these problems is to stuff the tests from t/004 into t/001 and delete t/001. For: RT #119231
* ExtUtils-ParseXS is now version 3.21Steve Hay2013-08-121-0/+6
|
* fix several problems in the MY_CXT example in perlxs.podTony Cook2013-08-121-11/+14
| | | | | | | | | | | | | | | - duplicate declaration of name for newMouse - missing OUTPUT clauses - use of a member of the context object that doesn't exist in get_mouse_name() - incorrect type assigned to RETVAL in get_mouse_name - inconsistent indentation - B<> to mark a heading instead of =headN
* ExtUtils::ParseXS: Version consistencySteffen Mueller2013-08-091-1/+1
|
* Remove semicolon from inline TYPEMAP in perlxstut example.Nathan Trapuzzano2013-07-301-1/+1
|
* ParseXS: generate deterministically ordered outputKarl Williamson2013-07-151-2/+4
| | | | | | The generated XS file output was varying between builds because of hash randomisation. This sorts the output to make it the same for the same inputs. This facilitates eyeballing diffs of two workspaces.
* Small stylistic improvement; add one POD formatting character.James E Keenan2013-07-011-4/+4
|
* Give little more examples to interpolated typemap variablesHojung Youn2013-07-011-1/+2
| | | | | | Added an example for $type Perl variable interpolated by typemap. and adjusted an example of $ntype Perl variable of typemap to illustrate its effect.
* Document and clean up -s option to xsubppSteffen Mueller2013-06-252-13/+23
| | | | | | | | | At the same time, discourage its use. It's an obscure option that, most of the time, does the opposite of what people actually need. If nothing else, it should be a feature of XS instead of xsubpp. But it exists, so documenting it with a warning is the right thing to do.
* Stop "sv_2mortal(&PL_sv_yes)" and "(void)sv_newmortal()" in ParseXSDaniel Dragan2013-06-255-9/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | This problem was brought up in #115796. Both of those lines of code that ParseXS put out when dealing with T_BOOL were unnecessary, and caused a some inefficiencies (extra calls). Since typemaps can have complicated evaluation and include Perl code, see commit 9712754a3e, it is best to eval the typemap entry first, then regexp it to see what it looks like, not regexp the unevaled entry possibly containing Perl. In case a typemap entry is maintaining state inside ParseXS (venturing into the undocumented and unsupported), (I've never seen it done) don't eval it twice if it can be avoided. Someone might want to change the typemap entry to multiple eval in the future, but don't introduce it now if it can be avoided. Using T_BOOL by name to see an immortal is a bad idea, since any XS module can reuse the typemap entry, so best to regexp for something that looks like it would return an immortal, "= &PL_sv_* ;" or "= boolSV(". In the future someone might want to introduce a macro that does nothing, except gives a signal to ParseXS that an expression returns an immortal or an already mortaled SV, to suppress the sv_2mortal call. The tests in 001-basic.t might break in the future with changes to ParseXS or the Perl API, but I assume they will be fixed at that point in time. Note: This patch was amended by the committer to apply cleanly to a newer version of ExtUtils::ParseXS and to include all necessary test changes.
* EU::ParseXS: Test cleanupSteffen Mueller2013-06-2519-45/+12
| | | | | Lots of dead code and some inflexibilities wrt. running tests from / or t/.
* EU::ParseXS: Move several constants out of the runtime objectSteffen Mueller2013-06-252-30/+33
|
* EU::ParseXS: Cosmetics; more explicitness in *_handlerSteffen Mueller2013-06-251-32/+26
| | | | | Basically, using named lexical beats $_ by a long shot since they don't magically propagate into functions called.
* EU::ParseXS: Use OO version of ExtUtils::ParseXS in testSteffen Mueller2013-06-251-0/+3
| | | | | Sort of. Breaking encapsulation, but that's better than not even having a blessed object at all.
* EU::ParseXS: Simplify output typemap code generation (targetable)Steffen Mueller2013-06-251-20/+16
|
* EU::ParseXS: Cosmetics; better variable namingSteffen Mueller2013-06-251-7/+7
|
* EU::ParseXS: Fix targetable size detectionSteffen Mueller2013-06-252-9/+195
| | | | | Adds new / vastly improved tests for 'targetable'. Also improves targetable documentation.
* EU::ParseXS: Drop dup'd code: make_targetable moves to EU::TypemapsSteffen Mueller2013-06-254-222/+3
| | | | | | | | | | The make_targetable function in ExtUtils::ParseXS::Utilities now lives in ExtUtils::Typemaps::OutputMap as method 'targetable' since the code was quite duplicated before. Makes very minor adjustments to 'targetable'. Removes the flawed make_targetable tests. Improved tests in lieu of the old ones will be added asap.
* EU::ParseXS: Update changelogSteffen Mueller2013-06-251-0/+5
|
* EU::ParseXS: Attempt to canonicalize C++ types in tidy_typeSteffen Mueller2013-06-256-85/+61
| | | | | Includes moving tidy_type to ExtUtils::Typemaps where it seems to belong. It's a pretty poor canonicalizer, but better than nothing!