From: Jarkko Hietaniemi Date: Thu, 17 May 2007 04:25:19 +0000 (+0300) Subject: todos for perl 5.12 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=87a942b162c36e60410b29a97a6709efc34b9f98;p=p5sagit%2Fp5-mst-13.2.git todos for perl 5.12 Message-Id: <200705170125.l4H1PJNi198465@kosh.hut.fi> (plus a fix for 1 unescaped <>) p4raw-id: //depot/perl@31234 --- diff --git a/pod/perltodo.pod b/pod/perltodo.pod index 4661923..88b56b1 100644 --- a/pod/perltodo.pod +++ b/pod/perltodo.pod @@ -38,7 +38,7 @@ Write portable self destruct code for tests to stop them burning CPU in infinite loops. This needs to avoid using alarm, as some of the tests are testing alarm/sleep or timers. -=head2 POD -> HTML conversion in the core still sucks +=head2 POD -E HTML conversion in the core still sucks Which is crazy given just how simple POD purports to be, and how simple HTML can be. It's not actually I simple as it sounds, particularly with the @@ -303,7 +303,14 @@ C executable. This could be done little differently. Namely C should be built for HOST and then full C with extensions should be compiled for TARGET. This, however, might require extra trickery for %Config: we have one config -first for HOST and then another for TARGET. +first for HOST and then another for TARGET. Tools like MakeMaker will be +mightily confused. Having around two different types of executables and +libraries (HOST and TARGET) makes life interesting for Makefiles and +shell (and Perl) scripts. There is $Config{run}, normally empty, which +can be used as an execution wrapper. Also note that in some +cross-compilation/execution environments the HOST and the TARGET do +not see the same filesystem(s), the $Config{run} may need to do some +file/directory copying back and forth. =head1 Tasks that need a little C knowledge @@ -422,14 +429,18 @@ filesystem. temporarily retired in 5.8.1, and the -C has been repurposed, see L.) +Most probably the right way to do this would be this: +L. + =head2 Unicode in %ENV Currently the %ENV entries are always byte strings. +See L. =head2 Unicode and glob() Currently glob patterns and filenames returned from File::Glob::glob() -are always byte strings. +are always byte strings. See L. =head2 use less 'memory' @@ -619,10 +630,36 @@ if it is ever executed. Variant ??? calls warn, and !!! calls die.> Those would be nice to add to Perl 5. That could be done without new ops. +=head2 Virtualize operating system access + +Implement a set of "vtables" that virtualizes operating system access +(open(), mkdir(), unlink(), readdir(), getenv(), etc.) At the very +least these interfaces should take SVs as "name" arguments instead of +bare char pointers; probably the most flexible and extensible way +would be for the interfaces to accept HVs. The system needs to be +per-operating-system and per-file-system hookable/filterable +(L is good reading at this point, +in fact, all of L is.) + +A less ambitious form of this has actually already been implemented +(but only for Win32), take a look at F. While Win32 +systems go through a set of "vtables" for operating system access, +non-Win32 systems go straight for the POSIX/UNIX-style system/library +call. Similar system should be implemented for all platforms. +The existing Win32 implementation probably does not need to survive +alongside this proposed new implementation, they could be merged. + +What would this give us? One often-asked-for feature this would +enable is using Unicode for filenames (and other "names" like %ENV, +usernames, hostnames, and so forth.) But this would also allow for +things like virtual filesystems and "sandboxes" (though as long as +dynamic loading of random object code is allowed, not very safe +sandboxes since external code of course know not of Perl's vtables). + =head1 Big projects Tasks that will get your name mentioned in the description of the "Highlights -of 5.10" +of 5.12" =head2 make ithreads more robust