-Merging
- oneperl (THIS pointer)
-
Multi-threading
$AUTOLOAD. Hmm.
without USE_THREADS, change extern variable for dTHR
consistent semantics for exit/die in threads
SvREFCNT_dec(curstack) in threadstart() in Thread.xs
+ better support for externally created threads
Thread::Pool
more Configure support
-
-Miscellaneous
- rename and alter ISA.pm
- magic_setisa should be made to update %FIELDS
+ spot-check globals like statcache and global GVs for thread-safety
Compiler
auto-produce executable
fix comppadlist (names in comppad_name can have fake SvCUR
from where newASSIGNOP steals the field)
+Namespace cleanup
+ symbol-space: "pl_" prefix for all global vars
+ "Perl_" prefix for all functions
+ CPP-space: restrict what we export from headers
+ stop malloc()/free() pollution unless asked
+ header-space: move into CORE/perl/
+ API-space: begin list of things that constitute public api
+
+MULTIPLICITY support
+ complete work on safe recursive interpreters, C<Perl->new()>
+
+Configure
+ installation layout changes to avoid overwriting old versions
+
+Reliable Signals
+ alternate runops() for signal despatch
+ figure out how to die() in delayed sighandler
+ add tests for Thread::Signal
+
+Win32 stuff
+ automate maintenance of most PERL_OBJECT code
+ get PERL_OBJECT building under gcc
+ rename new headers to be consistent with the rest
+ sort out the spawnvp() mess
+ work out DLL versioning
+ put perlobject in $ARCHNAME so it can coexist with rest
+ get PERL_OBJECT building on non-win32?
+ style-check
+
+Miscellaneous
+ rename and alter ISA.pm
+ magic_setisa should be made to update %FIELDS [???]
+ be generous in accepting foreign line terminations
+ make filenames 8.3 friendly, where feasible
+ upgrade to newer versions of all independently maintained modules
+ add new modules (Data-Dumper, Storable?)
+ test it with large parts of CPAN
+
Documentation
- lots
+ comprehensive perldelta.pod
+ describe new age patterns
+ update perl{guts,call,embed,xs} with additions, changes to API
+ document Win32 choices
+ rework INSTALL to reflect changes in installation structure
+ spot-check all new modules for completeness
CONDOP* range = (CONDOP*) flip->op_first;
OP* left = range->op_first;
OP* right = left->op_sibling;
- LISTOP* list;
+ LISTOP* listop;
range->op_flags &= ~OPf_KIDS;
range->op_first = Nullop;
- list = (LISTOP*)newLISTOP(OP_LIST, 0, left, right);
- list->op_first->op_next = range->op_true;
+ listop = (LISTOP*)newLISTOP(OP_LIST, 0, left, right);
+ listop->op_first->op_next = range->op_true;
left->op_next = range->op_false;
- right->op_next = (OP*)list;
- list->op_next = list->op_first;
+ right->op_next = (OP*)listop;
+ listop->op_next = listop->op_first;
op_free(expr);
- expr = (OP*)(list);
+ expr = (OP*)(listop);
null(expr);
iterflags |= OPf_STACKED;
}
#ifndef __PATCHLEVEL_H_INCLUDED__
#define PATCHLEVEL 4
-#define SUBVERSION 68
+#define SUBVERSION 69
/*
local_patches -- list of locally applied less-than-subversion patches.
BEGIN {$| = 1; print "1..24\n"; }
END {print "not ok 1\n" unless $loaded;}
+use Config;
use CGI (':standard','keywords');
$loaded = 1;
print "ok 1\n";
test(21,join(' ',keywords()) eq 'mary had a little lamb','CGI::keywords');
test(22,join(' ',param('keywords')) eq 'mary had a little lamb','CGI::keywords');
-CGI::_reset_globals;
-$test_string = 'game=soccer&game=baseball&weather=nice';
-$ENV{REQUEST_METHOD}='POST';
-$ENV{CONTENT_LENGTH}=length($test_string);
-$ENV{QUERY_STRING}='big_balls=basketball&small_balls=golf';
-if (open(CHILD,"|-")) { # cparent
- print CHILD $test_string;
- close CHILD;
- exit 0;
+if (!$Config{d_fork} or $^O eq 'MSWin32' or $^O eq 'VMS') {
+ for (23,24) { print "ok $_ # Skipped: fork n/a\n" }
+}
+else {
+ CGI::_reset_globals;
+ $test_string = 'game=soccer&game=baseball&weather=nice';
+ $ENV{REQUEST_METHOD}='POST';
+ $ENV{CONTENT_LENGTH}=length($test_string);
+ $ENV{QUERY_STRING}='big_balls=basketball&small_balls=golf';
+ if (open(CHILD,"|-")) { # cparent
+ print CHILD $test_string;
+ close CHILD;
+ exit 0;
+ }
+ # at this point, we're in a new (child) process
+ test(23,param('weather') eq 'nice',"CGI::param() from POST");
+ test(24,url_param('big_balls') eq 'basketball',"CGI::url_param()");
}
-# at this point, we're in a new (child) process
-test(23,param('weather') eq 'nice',"CGI::param() from POST");
-test(24,url_param('big_balls') eq 'basketball',"CGI::url_param()");
BEGIN {$| = 1; print "1..31\n"; }
END {print "not ok 1\n" unless $loaded;}
+use Config;
use CGI ();
$loaded = 1;
print "ok 1\n";
test(27,$q=new CGI({'foo'=>'bar','bar'=>'froz'}),"CGI::new() redux 2");
test(28,$q->param('bar') eq 'froz',"CGI::param() redux 2");
-$q->_reset_globals;
-$test_string = 'game=soccer&game=baseball&weather=nice';
-$ENV{REQUEST_METHOD}='POST';
-$ENV{CONTENT_LENGTH}=length($test_string);
-$ENV{QUERY_STRING}='big_balls=basketball&small_balls=golf';
-if (open(CHILD,"|-")) { # cparent
- print CHILD $test_string;
- close CHILD;
- exit 0;
+if (!$Config{d_fork} or $^O eq 'MSWin32' or $^O eq 'VMS') {
+ for (29..31) { print "ok $_ # Skipped: fork n/a\n" }
+}
+else {
+ $q->_reset_globals;
+ $test_string = 'game=soccer&game=baseball&weather=nice';
+ $ENV{REQUEST_METHOD}='POST';
+ $ENV{CONTENT_LENGTH}=length($test_string);
+ $ENV{QUERY_STRING}='big_balls=basketball&small_balls=golf';
+ if (open(CHILD,"|-")) { # cparent
+ print CHILD $test_string;
+ close CHILD;
+ exit 0;
+ }
+ # at this point, we're in a new (child) process
+ test(29,$q=new CGI,"CGI::new() from POST");
+ test(30,$q->param('weather') eq 'nice',"CGI::param() from POST");
+ test(31,$q->url_param('big_balls') eq 'basketball',"CGI::url_param()");
}
-# at this point, we're in a new (child) process
-test(29,$q=new CGI,"CGI::new() from POST");
-test(30,$q->param('weather') eq 'nice',"CGI::param() from POST");
-test(31,$q->url_param('big_balls') eq 'basketball',"CGI::url_param()");
STATIC SV *
new_constant(char *s, STRLEN len, char *key, SV *sv, SV *pv, char *type)
{
- HV *table = perl_get_hv("\10", FALSE); /* ^H */
- dTHR;
dSP;
+ HV *table = perl_get_hv("\10", FALSE); /* ^H */
BINOP myop;
SV *res;
bool oldcatch = CATCH_GET;
# versioned installation can be obtained by setting INST_TOP above to a
# path that includes an arbitrary version string.
#
-INST_VER = \5.00468
+INST_VER = \5.00469
#
# uncomment to enable threads-capabilities
* This symbol is the filename expanded version of the BIN symbol, for
* programs that do not want to deal with that at run-time.
*/
-#define BIN "c:\\perl\\5.00468\\bin\\MSWin32-x86" /**/
-#define BIN_EXP "c:\\perl\\5.00468\\bin\\MSWin32-x86" /**/
+#define BIN "c:\\perl\\5.00469\\bin\\MSWin32-x86" /**/
+#define BIN_EXP "c:\\perl\\5.00469\\bin\\MSWin32-x86" /**/
/* CPPSTDIN:
* This symbol contains the first part of the string which will invoke
* This symbol contains the ~name expanded version of ARCHLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define ARCHLIB "c:\\perl\\5.00468\\lib\\MSWin32-x86" /**/
+#define ARCHLIB "c:\\perl\\5.00469\\lib\\MSWin32-x86" /**/
/*#define ARCHLIB_EXP "" /**/
/* CAT2:
* This symbol contains the ~name expanded version of PRIVLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define PRIVLIB "c:\\perl\\5.00468\\lib" /**/
-#define PRIVLIB_EXP (win32_get_privlib("5.00468")) /**/
+#define PRIVLIB "c:\\perl\\5.00469\\lib" /**/
+#define PRIVLIB_EXP (win32_get_privlib("5.00469")) /**/
/* SIG_NAME:
* This symbol contains a list of signal names in order of
* This symbol contains the ~name expanded version of SITEARCH, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITEARCH "c:\\perl\\site\\5.00468\\lib\\MSWin32-x86" /**/
+#define SITEARCH "c:\\perl\\site\\5.00469\\lib\\MSWin32-x86" /**/
/*#define SITEARCH_EXP "" /**/
/* SITELIB:
* This symbol contains the ~name expanded version of SITELIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITELIB "c:\\perl\\site\\5.00468\\lib" /**/
-#define SITELIB_EXP (win32_get_sitelib("5.00468")) /**/
+#define SITELIB "c:\\perl\\site\\5.00469\\lib" /**/
+#define SITELIB_EXP (win32_get_sitelib("5.00469")) /**/
/* DLSYM_NEEDS_UNDERSCORE:
* This symbol, if defined, indicates that we need to prepend an
* This symbol is the filename expanded version of the BIN symbol, for
* programs that do not want to deal with that at run-time.
*/
-#define BIN "c:\\perl\\5.00468\\bin\\MSWin32-x86" /**/
-#define BIN_EXP "c:\\perl\\5.00468\\bin\\MSWin32-x86" /**/
+#define BIN "c:\\perl\\5.00469\\bin\\MSWin32-x86" /**/
+#define BIN_EXP "c:\\perl\\5.00469\\bin\\MSWin32-x86" /**/
/* CPPSTDIN:
* This symbol contains the first part of the string which will invoke
* This symbol contains the ~name expanded version of ARCHLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define ARCHLIB "c:\\perl\\5.00468\\lib\\MSWin32-x86" /**/
+#define ARCHLIB "c:\\perl\\5.00469\\lib\\MSWin32-x86" /**/
/*#define ARCHLIB_EXP "" /**/
/* CAT2:
* This symbol contains the ~name expanded version of PRIVLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define PRIVLIB "c:\\perl\\5.00468\\lib" /**/
-#define PRIVLIB_EXP (win32_get_privlib("5.00468")) /**/
+#define PRIVLIB "c:\\perl\\5.00469\\lib" /**/
+#define PRIVLIB_EXP (win32_get_privlib("5.00469")) /**/
/* SIG_NAME:
* This symbol contains a list of signal names in order of
* This symbol contains the ~name expanded version of SITEARCH, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITEARCH "c:\\perl\\site\\5.00468\\lib\\MSWin32-x86" /**/
+#define SITEARCH "c:\\perl\\site\\5.00469\\lib\\MSWin32-x86" /**/
/*#define SITEARCH_EXP "" /**/
/* SITELIB:
* This symbol contains the ~name expanded version of SITELIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITELIB "c:\\perl\\site\\5.00468\\lib" /**/
-#define SITELIB_EXP (win32_get_sitelib("5.00468")) /**/
+#define SITELIB "c:\\perl\\site\\5.00469\\lib" /**/
+#define SITELIB_EXP (win32_get_sitelib("5.00469")) /**/
/* DLSYM_NEEDS_UNDERSCORE:
* This symbol, if defined, indicates that we need to prepend an
* This symbol is the filename expanded version of the BIN symbol, for
* programs that do not want to deal with that at run-time.
*/
-#define BIN "c:\\perl\\5.00468\\bin\\MSWin32-x86" /**/
-#define BIN_EXP "c:\\perl\\5.00468\\bin\\MSWin32-x86" /**/
+#define BIN "c:\\perl\\5.00469\\bin\\MSWin32-x86" /**/
+#define BIN_EXP "c:\\perl\\5.00469\\bin\\MSWin32-x86" /**/
/* CPPSTDIN:
* This symbol contains the first part of the string which will invoke
* This symbol contains the ~name expanded version of ARCHLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define ARCHLIB "c:\\perl\\5.00468\\lib\\MSWin32-x86" /**/
+#define ARCHLIB "c:\\perl\\5.00469\\lib\\MSWin32-x86" /**/
/*#define ARCHLIB_EXP "" /**/
/* CAT2:
* This symbol contains the ~name expanded version of PRIVLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define PRIVLIB "c:\\perl\\5.00468\\lib" /**/
-#define PRIVLIB_EXP (win32_get_privlib("5.00468")) /**/
+#define PRIVLIB "c:\\perl\\5.00469\\lib" /**/
+#define PRIVLIB_EXP (win32_get_privlib("5.00469")) /**/
/* SIG_NAME:
* This symbol contains a list of signal names in order of
* This symbol contains the ~name expanded version of SITEARCH, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITEARCH "c:\\perl\\site\\5.00468\\lib\\MSWin32-x86" /**/
+#define SITEARCH "c:\\perl\\site\\5.00469\\lib\\MSWin32-x86" /**/
/*#define SITEARCH_EXP "" /**/
/* SITELIB:
* This symbol contains the ~name expanded version of SITELIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITELIB "c:\\perl\\site\\5.00468\\lib" /**/
-#define SITELIB_EXP (win32_get_sitelib("5.00468")) /**/
+#define SITELIB "c:\\perl\\site\\5.00469\\lib" /**/
+#define SITELIB_EXP (win32_get_sitelib("5.00469")) /**/
/* DLSYM_NEEDS_UNDERSCORE:
* This symbol, if defined, indicates that we need to prepend an
# versioned installation can be obtained by setting INST_TOP above to a
# path that includes an arbitrary version string.
#
-INST_VER *= \5.00468
+INST_VER *= \5.00469
#
# uncomment to enable threads-capabilities