In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/318bf70858c09319b660d27e01f5808b011181d3?hp=b7a0f54ced0ebd7e1706b3c27338d5e5ef39ab7d>
- Log ----------------------------------------------------------------- commit 318bf70858c09319b660d27e01f5808b011181d3 Author: Nicholas Clark <[email protected]> Date: Sun May 10 16:40:37 2009 +0100 Replacing dump.c's use of SVs as temporaries is TODO. M pod/perltodo.pod commit 0befdfba7e496a43f86e2109879b571806ccf83e Author: Nicholas Clark <[email protected]> Date: Sun May 10 16:31:11 2009 +0100 Making ExtUtils::ParseXS use strict; is TODO. M pod/perltodo.pod ----------------------------------------------------------------------- Summary of changes: pod/perltodo.pod | 33 +++++++++++++++++++++++++++++++++ 1 files changed, 33 insertions(+), 0 deletions(-) diff --git a/pod/perltodo.pod b/pod/perltodo.pod index 0a75e70..b01522a 100644 --- a/pod/perltodo.pod +++ b/pod/perltodo.pod @@ -94,6 +94,18 @@ is needed to improve the cross-linking. The addition of C<Pod::Simple> and its related modules may make this task easier to complete. +=head2 Make ExtUtils::ParseXS use strict; + +F<lib/ExtUtils/ParseXS.pm> contains this line + + # use strict; # One of these days... + +Simply uncomment it, and fix all the resulting issues :-) + +The more practical approach, to break the task down into manageable chunks, is +to work your way though the code from bottom to top, or if necessary adding +extra C<{ ... }> blocks, and turning on strict within them. + =head2 Parallel testing (This probably impacts much more than the core: also the Test::Harness @@ -589,6 +601,27 @@ These tasks would need C knowledge, and roughly the level of knowledge of the perl API that comes from writing modules that use XS to interface to C. +=head2 Remove the use of SVs as temporaries in dump.c + +F<dump.c> contains debugging routines to dump out the contains of perl data +structures, such as C<SV>s, C<AV>s and C<HV>s. Currently, the dumping code +B<uses> C<SV>s for its temporary buffers, which was a logical initial +implementation choice, as they provide ready made memory handling. + +However, they also lead to a lot of confusion when it happens that what you're +trying to debug is seen by the code in F<dump.c>, correctly or incorrectly, as +a temporary scalar it can use for a temporary buffer. It's also not possible +to dump scalars before the interpreter is properly set up, such as during +ithreads cloning. It would be good to progressively replace the use of scalars +as string accumulation buffers with something much simpler, directly allocated +by C<malloc>. The F<dump.c> code is (or should be) only producing 7 bit +US-ASCII, so output character sets are not an issue. + +Producing and proving an internal simple buffer allocation would make it easier +to re-write the internals of the PerlIO subsystem to avoid using C<SV>s for +B<its> buffers, use of which can cause problems similar to those of F<dump.c>, +at similar times. + =head2 safely supporting POSIX SA_SIGINFO Some years ago Jarkko supplied patches to provide support for the POSIX -- Perl5 Master Repository
