home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _91264d4b6a797ee47cc44a4d94a6b454 < prev    next >
Text File  |  2000-03-23  |  44KB  |  961 lines

  1. <HTML>
  2. <HEAD>
  3. <TITLE>perltodo - Perl TO-DO List</TITLE>
  4. <LINK REL="stylesheet" HREF="../../Active.css" TYPE="text/css">
  5. <LINK REV="made" HREF="mailto:">
  6. </HEAD>
  7.  
  8. <BODY>
  9. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  10. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  11. <STRONG><P CLASS=block> perltodo - Perl TO-DO List</P></STRONG>
  12. </TD></TR>
  13. </TABLE>
  14.  
  15. <A NAME="__index__"></A>
  16. <!-- INDEX BEGIN -->
  17.  
  18. <UL>
  19.  
  20.     <LI><A HREF="#name">NAME</A></LI>
  21.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  22.     <LI><A HREF="#infrastructure">Infrastructure</A></LI>
  23.     <UL>
  24.  
  25.         <LI><A HREF="#mailing list archives">Mailing list archives</A></LI>
  26.         <LI><A HREF="#bug tracking system">Bug tracking system</A></LI>
  27.         <LI><A HREF="#regression tests">Regression Tests</A></LI>
  28.     </UL>
  29.  
  30.     <LI><A HREF="#configure">Configure</A></LI>
  31.     <UL>
  32.  
  33.         <LI><A HREF="#install html">Install HTML</A></LI>
  34.     </UL>
  35.  
  36.     <LI><A HREF="#perl language">Perl Language</A></LI>
  37.     <UL>
  38.  
  39.         <LI><A HREF="#our ($var)">our ($var)</A></LI>
  40.         <LI><A HREF="#64bit perl">64-bit Perl</A></LI>
  41.         <LI><A HREF="#prototypes">Prototypes</A></LI>
  42.     </UL>
  43.  
  44.     <LI><A HREF="#perl internals">Perl Internals</A></LI>
  45.     <UL>
  46.  
  47.         <LI><A HREF="#magic_setisa">magic_setisa</A></LI>
  48.         <LI><A HREF="#garbage collection">Garbage Collection</A></LI>
  49.         <LI><A HREF="#reliable signals">Reliable signals</A></LI>
  50.         <LI><A HREF="#interpolated regex performance bugs">Interpolated regex performance bugs</A></LI>
  51.         <LI><A HREF="#memory leaks from failed eval/regcomp">Memory leaks from failed eval/regcomp</A></LI>
  52.         <LI><A HREF="#make xs easier to use">Make XS easier to use</A></LI>
  53.         <LI><A HREF="#make embedded perl easier to use">Make embedded Perl easier to use</A></LI>
  54.         <LI><A HREF="#namespace cleanup">Namespace cleanup</A></LI>
  55.         <LI><A HREF="#multiplicity">MULTIPLICITY</A></LI>
  56.         <LI><A HREF="#macperl">MacPerl</A></LI>
  57.     </UL>
  58.  
  59.     <LI><A HREF="#documentation">Documentation</A></LI>
  60.     <UL>
  61.  
  62.         <LI><A HREF="#a clear division into tutorial and reference">A clear division into tutorial and reference</A></LI>
  63.         <LI><A HREF="#remove the artificial distinction between operators and functions">Remove the artificial distinction between operators and functions</A></LI>
  64.         <LI><A HREF="#more tutorials">More tutorials</A></LI>
  65.         <LI><A HREF="#include a search tool">Include a search tool</A></LI>
  66.         <LI><A HREF="#include a locate tool">Include a locate tool</A></LI>
  67.         <LI><A HREF="#separate function manpages by default">Separate function manpages by default</A></LI>
  68.         <LI><A HREF="#users can't find the manpages">Users can't find the manpages</A></LI>
  69.         <LI><A HREF="#install all documentation">Install ALL Documentation</A></LI>
  70.         <LI><A HREF="#outstanding issues to be documented">Outstanding issues to be documented</A></LI>
  71.         <LI><A HREF="#adapt www.linuxhq.com for perl">Adapt www.linuxhq.com for Perl</A></LI>
  72.         <LI><A HREF="#replace man with a perl program">Replace man with a perl program</A></LI>
  73.         <LI><A HREF="#unicode tutorial">Unicode tutorial</A></LI>
  74.     </UL>
  75.  
  76.     <LI><A HREF="#modules">Modules</A></LI>
  77.     <UL>
  78.  
  79.         <LI><A HREF="#update the posix extension to conform with the posix 1003.1 edition 2">Update the POSIX extension to conform with the POSIX 1003.1 Edition 2</A></LI>
  80.         <LI><A HREF="#module versions">Module versions</A></LI>
  81.         <LI><A HREF="#new modules">New modules</A></LI>
  82.         <LI><A HREF="#profiler">Profiler</A></LI>
  83.         <LI><A HREF="#tie modules">Tie Modules</A></LI>
  84.         <LI><A HREF="#procedural options">Procedural options</A></LI>
  85.         <LI><A HREF="#rpc">RPC</A></LI>
  86.         <LI><A HREF="#y2k localtime/gmtime">y2k localtime/gmtime</A></LI>
  87.         <LI><A HREF="#export file::find variables">Export File::Find variables</A></LI>
  88.         <LI><A HREF="#ioctl">Ioctl</A></LI>
  89.         <LI><A HREF="#debugger attach/detach">Debugger attach/detach</A></LI>
  90.         <LI><A HREF="#regular expression debugger">Regular Expression debugger</A></LI>
  91.         <LI><A HREF="#alternative re syntax">Alternative RE Syntax</A></LI>
  92.         <LI><A HREF="#bundled modules">Bundled modules</A></LI>
  93.         <LI><A HREF="#expect">Expect</A></LI>
  94.         <LI><A HREF="#gui::native">GUI::Native</A></LI>
  95.         <LI><A HREF="#update semibroken auxiliary tools; h2ph, a2p, etc.">Update semibroken auxiliary tools; h2ph, a2p, etc.</A></LI>
  96.         <LI><A HREF="#pod converters">POD Converters</A></LI>
  97.         <LI><A HREF="#pod2html">pod2html</A></LI>
  98.         <LI><A HREF="#podchecker">Podchecker</A></LI>
  99.     </UL>
  100.  
  101.     <LI><A HREF="#tom's wishes">Tom's Wishes</A></LI>
  102.     <UL>
  103.  
  104.         <LI><A HREF="#webperl">Webperl</A></LI>
  105.         <LI><A HREF="#mobile agents">Mobile agents</A></LI>
  106.         <LI><A HREF="#posix on nonposix">POSIX on non-POSIX</A></LI>
  107.         <LI><A HREF="#portable installations">Portable installations</A></LI>
  108.     </UL>
  109.  
  110.     <LI><A HREF="#win32 stuff">Win32 Stuff</A></LI>
  111.     <UL>
  112.  
  113.         <LI><A HREF="#rename new headers to be consistent with the rest">Rename new headers to be consistent with the rest</A></LI>
  114.         <LI><A HREF="#sort out the spawnvp() mess">Sort out the <CODE>spawnvp()</CODE> mess</A></LI>
  115.         <LI><A HREF="#work out dll versioning">Work out DLL versioning</A></LI>
  116.         <LI><A HREF="#stylecheck">Style-check</A></LI>
  117.     </UL>
  118.  
  119.     <LI><A HREF="#would be nice to have">Would be nice to have</A></LI>
  120.     <LI><A HREF="#possible pragmas">Possible pragmas</A></LI>
  121.     <UL>
  122.  
  123.         <LI><A HREF="#'less'">'less'</A></LI>
  124.     </UL>
  125.  
  126.     <LI><A HREF="#optimizations">Optimizations</A></LI>
  127.     <UL>
  128.  
  129.         <LI><A HREF="#constant function cache">constant function cache</A></LI>
  130.         <LI><A HREF="#foreach(reverse...)"><CODE>foreach(reverse...)</CODE></A></LI>
  131.         <LI><A HREF="#cache eval tree">Cache eval tree</A></LI>
  132.         <LI><A HREF="#rcatmaybe">rcatmaybe</A></LI>
  133.         <LI><A HREF="#shrink opcode tables">Shrink opcode tables</A></LI>
  134.         <LI><A HREF="#cache hash value">Cache hash value</A></LI>
  135.         <LI><A HREF="#optimize away @_ where possible">Optimize away @_ where possible</A></LI>
  136.         <LI><A HREF="#optimize sort by { $a <=> $b }">Optimize sort by { $a <=> $b }</A></LI>
  137.         <LI><A HREF="#rewrite regexp parser for better integrated optimization">Rewrite regexp parser for better integrated optimization</A></LI>
  138.     </UL>
  139.  
  140.     <LI><A HREF="#vague possibilities">Vague possibilities</A></LI>
  141.     <LI><A HREF="#to do or not to do">To Do Or Not To Do</A></LI>
  142.     <UL>
  143.  
  144.         <LI><A HREF="#making my() work on package variables">Making <A HREF="../../lib/Pod/perlfunc.html#item_my"><CODE>my()</CODE></A> work on ``package'' variables</A></LI>
  145.         <LI><A HREF="#or testing defined not truth">``or'' testing defined not truth</A></LI>
  146.         <LI><A HREF="#dynamic lexicals">``dynamic'' lexicals</A></LI>
  147.         <LI><A HREF="#classbased, rather than packagebased lexicals">``class''-based, rather than package-based ``lexicals''</A></LI>
  148.     </UL>
  149.  
  150.     <LI><A HREF="#threading">Threading</A></LI>
  151.     <UL>
  152.  
  153.         <LI><A HREF="#modules">Modules</A></LI>
  154.         <LI><A HREF="#testing">Testing</A></LI>
  155.         <LI><A HREF="#$autoload">$AUTOLOAD</A></LI>
  156.         <LI><A HREF="#exit/die">exit/die</A></LI>
  157.         <LI><A HREF="#external threads">External threads</A></LI>
  158.         <LI><A HREF="#thread::pool">Thread::Pool</A></LI>
  159.         <LI><A HREF="#threadsafety">thread-safety</A></LI>
  160.         <LI><A HREF="#perthread gvs">Per-thread GVs</A></LI>
  161.     </UL>
  162.  
  163.     <LI><A HREF="#compiler">Compiler</A></LI>
  164.     <UL>
  165.  
  166.         <LI><A HREF="#optimization">Optimization</A></LI>
  167.         <LI><A HREF="#byteperl">Byteperl</A></LI>
  168.         <LI><A HREF="#precompiled modules">Precompiled modules</A></LI>
  169.         <LI><A HREF="#executables">Executables</A></LI>
  170.         <LI><A HREF="#typed lexicals">Typed lexicals</A></LI>
  171.         <LI><A HREF="#win32">Win32</A></LI>
  172.         <LI><A HREF="#end blocks">END blocks</A></LI>
  173.         <LI><A HREF="#_autoload">_AUTOLOAD</A></LI>
  174.         <LI><A HREF="#comppadlist">comppadlist</A></LI>
  175.         <LI><A HREF="#cached compilation">Cached compilation</A></LI>
  176.     </UL>
  177.  
  178.     <LI><A HREF="#recently finished tasks">Recently Finished Tasks</A></LI>
  179.     <UL>
  180.  
  181.         <LI><A HREF="#figure a way out of $^(capital letter)">Figure a way out of $^(capital letter)</A></LI>
  182.         <LI><A HREF="#filenames">Filenames</A></LI>
  183.         <LI><A HREF="#foreign lines">Foreign lines</A></LI>
  184.         <LI><A HREF="#namespace cleanup">Namespace cleanup</A></LI>
  185.         <LI><A HREF="#isa.pm">ISA.pm</A></LI>
  186.         <LI><A HREF="#gettimeofday">gettimeofday</A></LI>
  187.         <LI><A HREF="#autocroak">autocroak?</A></LI>
  188.     </UL>
  189.  
  190. </UL>
  191. <!-- INDEX END -->
  192.  
  193. <HR>
  194. <P>
  195. <H1><A NAME="name">NAME</A></H1>
  196. <P>perltodo - Perl TO-DO List</P>
  197. <P>
  198. <HR>
  199. <H1><A NAME="description">DESCRIPTION</A></H1>
  200. <P>This is a list of wishes for Perl.  It is maintained by Nathan
  201. Torkington for the Perl porters.  Send updates to
  202. <EM><A HREF="mailto:perl5-porters@perl.org">perl5-porters@perl.org</A></EM>.  If you want to work on any of these
  203. projects, be sure to check the perl5-porters archives for past ideas,
  204. flames, and propaganda.  This will save you time and also prevent you
  205. from implementing something that Larry has already vetoed.  One set
  206. of archives may be found at:</P>
  207. <PRE>
  208.     <A HREF="http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/">http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/</A></PRE>
  209. <P>
  210. <HR>
  211. <H1><A NAME="infrastructure">Infrastructure</A></H1>
  212. <P>
  213. <H2><A NAME="mailing list archives">Mailing list archives</A></H2>
  214. <P>Chaim suggests contacting egroup and asking them to archive the other
  215. perl.org mailing lists.  Probably not advocacy, but definitely
  216. perl6-porters, etc.</P>
  217. <P>
  218. <H2><A NAME="bug tracking system">Bug tracking system</A></H2>
  219. <P>Richard Foley <EM><A HREF="mailto:richard@perl.org">richard@perl.org</A></EM> is writing one.  We looked at
  220. several, like gnats and the Debian system, but at the time we
  221. investigated them, none met our needs.  Since then, Jitterbug has
  222. matured, and may be worth reinvestigation.</P>
  223. <P>The system we've developed is the recipient of perlbug mail, and any
  224. followups it generates from perl5-porters.  New bugs are entered
  225. into a mysql database, and sent on to
  226. perl5-porters with the subject line rewritten to include a ``ticket
  227. number'' (unique ID for the new bug).  If the incoming message already
  228. had a ticket number in the subject line, then the message is logged
  229. against that bug.  There is a separate email interface (not forwarding
  230. to p5p) that permits porters to claim, categorize, and close tickets.</P>
  231. <P>There is also a web interface to the system at <A HREF="http://bugs.perl.org.">http://bugs.perl.org.</A></P>
  232. <P>The current delay in implementation is caused by perl.org lockups.
  233. One suspect is the mail handling system, possibly going into loops.</P>
  234. <P>We still desperately need a bugmaster, someone who will look at
  235. every new ``bug'' and kill those that we already know about, those
  236. that are not bugs at all, etc.</P>
  237. <P>
  238. <H2><A NAME="regression tests">Regression Tests</A></H2>
  239. <P>The test suite for Perl serves two needs: ensuring features work, and
  240. ensuring old bugs have not been reintroduced.  Both need work.</P>
  241. <P>Brent LaVelle (<A HREF="mailto:lavelle@metronet.com">lavelle@metronet.com</A>) has stepped forward to work on
  242. performance tests and improving the size of the test suite.</P>
  243. <DL>
  244. <DT><STRONG><A NAME="item_Coverage">Coverage</A></STRONG><BR>
  245. <DD>
  246. Do the tests that come with Perl exercise every line (or every block,
  247. or ...)  of the Perl interpreter, and if not then how can we make them
  248. do so?
  249. <P></P>
  250. <DT><STRONG><A NAME="item_Regression">Regression</A></STRONG><BR>
  251. <DD>
  252. No bug fixes should be made without a corresponding testsuite addition.
  253. This needs a dedicated enforcer, as the current pumpking is either too
  254. lazy or too stupid or both and lets enforcement wander all over the
  255. map.  :-)
  256. <P></P>
  257. <DT><STRONG><A NAME="item___DIE__">__DIE__</A></STRONG><BR>
  258. <DD>
  259. Tests that fail need to be of a form that can be readily mailed
  260. to perlbug and diagnosed with minimal back-and-forth's to determine
  261. which test failed, due to what cause, etc.
  262. <P></P>
  263. <DT><STRONG><A NAME="item_suidperl">suidperl</A></STRONG><BR>
  264. <DD>
  265. We need regression/sanity tests for suidperl
  266. <P></P>
  267. <DT><STRONG><A NAME="item_The_25%25_slowdown_from_perl4_to_perl5">The 25% slowdown from perl4 to perl5</A></STRONG><BR>
  268. <DD>
  269. This value may or may not be accurate, but it certainly is
  270. eye-catching.  For some things perl5 is faster than perl4, but often
  271. the reliability and extensability have come at a cost of speed.  The
  272. benchmark suite that Gisle released earlier has been hailed as both a
  273. fantastic solution and as a source of entirely meaningless figures.
  274. Do we need to test ``real applications''?  Can you do so?  Anyone have
  275. machines to dedicate to the task?  Identify the things that have grown
  276. slower, and see if there's a way to make them faster.
  277. <P></P></DL>
  278. <P>
  279. <HR>
  280. <H1><A NAME="configure">Configure</A></H1>
  281. <P>Andy Dougherty <CODE>maintain(ed|s)</CODE> a list of ``todo'' items for the configure
  282. that comes with Perl.  See Porting/pumpkin.pod in the latest
  283. source release.</P>
  284. <P>
  285. <H2><A NAME="install html">Install HTML</A></H2>
  286. <P>Have ``make install'' give you the option to install HTML as well.  This
  287. would be part of Configure.  Andy Wardley (certified Perl studmuffin)
  288. will look into the current problems of HTML installation--is
  289. 'installhtml' preventing this from happening cleanly, or is pod2html
  290. the problem?  If the latter, Brad Appleton's pod work may fix the
  291. problem for free.</P>
  292. <P>
  293. <HR>
  294. <H1><A NAME="perl language">Perl Language</A></H1>
  295. <P>
  296. <H2><A NAME="our ($var)">our ($var)</A></H2>
  297. <P>Declare global variables (lexically or otherwise).</P>
  298. <P>
  299. <H2><A NAME="64bit perl">64-bit Perl</A></H2>
  300. <P>Verify complete 64 bit support so that the value of sysseek, or <CODE>-s</CODE>, or
  301. stat(), or tell can fit into a perl number without losing precision.
  302. Work with the perl-64bit mailing list on perl.org.</P>
  303. <P>
  304. <H2><A NAME="prototypes">Prototypes</A></H2>
  305. <DL>
  306. <DT><STRONG><A NAME="item_Named_prototypes">Named prototypes</A></STRONG><BR>
  307. <DD>
  308. Add proper named prototypes that actually work usefully.
  309. <P></P>
  310. <DT><STRONG><A NAME="item_Indirect_objects">Indirect objects</A></STRONG><BR>
  311. <DD>
  312. Fix prototype bug that forgets indirect objects.
  313. <P></P>
  314. <DT><STRONG><A NAME="item_Method_calls">Method calls</A></STRONG><BR>
  315. <DD>
  316. Prototypes for method calls.
  317. <P></P>
  318. <DT><STRONG><A NAME="item_Context">Context</A></STRONG><BR>
  319. <DD>
  320. Return context prototype declarations.
  321. <P></P>
  322. <DT><STRONG><A NAME="item_Scoped_subs">Scoped subs</A></STRONG><BR>
  323. <DD>
  324. lexically-scoped subs, e.g. my sub
  325. <P></P></DL>
  326. <P>
  327. <HR>
  328. <H1><A NAME="perl internals">Perl Internals</A></H1>
  329. <P>
  330. <H2><A NAME="magic_setisa">magic_setisa</A></H2>
  331. <P><CODE>magic_setisa</CODE> should be made to update %FIELDS [???]</P>
  332. <P>
  333. <H2><A NAME="garbage collection">Garbage Collection</A></H2>
  334. <P>There was talk of a mark-and-sweep garbage collector at TPC2, but the
  335. (to users) unpredictable nature of its behaviour put some off.
  336. Sarathy, I believe, did the work.  Here's what he has to say:</P>
  337. <P>Yeah, I hope to implement it someday too.  The points that were
  338. raised in TPC2 were all to do with calling <CODE>DESTROY()</CODE> methods, but
  339. I think we can accomodate that by extending <A HREF="../../lib/Pod/perlfunc.html#item_bless"><CODE>bless()</CODE></A> to stash
  340. extra information for objects so we track their lifetime accurately
  341. for those that want their <CODE>DESTROY()</CODE> to be predictable (this will be
  342. a speed hit, naturally, and will therefore be optional, naturally. :)</P>
  343. <P>[N.B. Don't even ask me about this now!  When I have the time to
  344. write a cogent summary, I'll post it.]</P>
  345. <P>
  346. <H2><A NAME="reliable signals">Reliable signals</A></H2>
  347. <P>Sarathy and Dan Sugalski are working on this.  Chip posted a patch
  348. earlier, but it was not accepted into 5.005.  The issue is tricky,
  349. because it has the potential to greatly slow down the core.</P>
  350. <P>There are at least three things to consider:</P>
  351. <DL>
  352. <DT><STRONG><A NAME="item_runops">Alternate <CODE>runops()</CODE> for signal despatch</A></STRONG><BR>
  353. <DD>
  354. Sarathy and Dan are discussed this on perl5-porters.
  355. <P></P>
  356. <DT><STRONG><A NAME="item_die">Figure out how to <CODE>die()</CODE> in delayed sighandler</A></STRONG><BR>
  357. <DD>
  358. <DT><STRONG><A NAME="item_Add_tests_for_Thread%3A%3ASignal">Add tests for Thread::Signal</A></STRONG><BR>
  359. <DD>
  360. <DT><STRONG><A NAME="item_Automatic_tests_against_CPAN">Automatic tests against CPAN</A></STRONG><BR>
  361. <DD>
  362. Is there some way to automatically build all/most of CPAN with
  363. the new Perl and check that the modules there pass all the tests?
  364. <P></P></DL>
  365. <P>
  366. <H2><A NAME="interpolated regex performance bugs">Interpolated regex performance bugs</A></H2>
  367. <PRE>
  368.   while (<>) {
  369.     $found = 0;
  370.     foreach $pat (@patterns) {
  371.       $found++ if /$pat/o;
  372.     }
  373.     print if $found;
  374.   }</PRE>
  375. <P>The qr// syntax added in 5.005 has solved this problem, but
  376. it needs more thorough documentation.</P>
  377. <P>
  378. <H2><A NAME="memory leaks from failed eval/regcomp">Memory leaks from failed eval/regcomp</A></H2>
  379. <P>The only known memory leaks in Perl are in failed code or regexp
  380. compilation.  Fix this.  Hugo Van Der Sanden will attempt this but
  381. won't have tuits until January 1999.</P>
  382. <P>
  383. <H2><A NAME="make xs easier to use">Make XS easier to use</A></H2>
  384. <P>There was interest in SWIG from porters, but nothing has happened
  385. lately.</P>
  386. <P>
  387. <H2><A NAME="make embedded perl easier to use">Make embedded Perl easier to use</A></H2>
  388. <P>This is probably difficult for the same reasons that ``XS For Dummies''
  389. will be difficult.</P>
  390. <P>
  391. <H2><A NAME="namespace cleanup">Namespace cleanup</A></H2>
  392. <PRE>
  393.     CPP-space:    restrict CPP symbols exported from headers
  394.     header-space: move into CORE/perl/
  395.     API-space:    begin list of things that constitute public api
  396.     env-space:    Configure should use PERL_CONFIG instead of CONFIG etc.</PRE>
  397. <P>
  398. <H2><A NAME="multiplicity">MULTIPLICITY</A></H2>
  399. <P>Complete work on safe recursive interpreters <CODE>Perl->new()</CODE>.
  400. Sarathy says that a reference implementation exists.</P>
  401. <P>
  402. <H2><A NAME="macperl">MacPerl</A></H2>
  403. <P>Chris Nandor and Matthias Neeracher are working on better integrating
  404. MacPerl into the Perl distribution.</P>
  405. <P>
  406. <HR>
  407. <H1><A NAME="documentation">Documentation</A></H1>
  408. <P>There's a lot of documentation that comes with Perl.  The quantity of
  409. documentation makes it difficult for users to know which section of
  410. which manpage to read in order to solve their problem.  Tom
  411. Christiansen has done much of the documentation work in the past.</P>
  412. <P>
  413. <H2><A NAME="a clear division into tutorial and reference">A clear division into tutorial and reference</A></H2>
  414. <P>Some manpages (e.g., perltoot and perlreftut) clearly set out to
  415. educate the reader about a subject.  Other manpages (e.g., perlsub)
  416. are references for which there is no tutorial, or are references with
  417. a slight tutorial bent.  If things are either tutorial or reference,
  418. then the reader knows which manpage to read to learn about a subject,
  419. and which manpage to read to learn all about an aspect of that
  420. subject.  Part of the solution to this is:</P>
  421. <P>
  422. <H2><A NAME="remove the artificial distinction between operators and functions">Remove the artificial distinction between operators and functions</A></H2>
  423. <P>History shows us that users, and often porters, aren't clear on the
  424. operator-function distinction.  The present split in reference
  425. material between perlfunc and perlop hinders user navigation.  Given
  426. that perlfunc is by far the larger of the two, move operator reference
  427. into perlfunc.</P>
  428. <P>
  429. <H2><A NAME="more tutorials">More tutorials</A></H2>
  430. <P>More documents of a tutorial nature could help.  Here are some
  431. candidates:</P>
  432. <DL>
  433. <DT><STRONG><A NAME="item_Regular_expressions">Regular expressions</A></STRONG><BR>
  434. <DD>
  435. Robin Berjon (<A HREF="mailto:r.berjon@ltconsulting.net">r.berjon@ltconsulting.net</A>) has volunteered.
  436. <P></P>
  437. <DT><STRONG><A NAME="item_I%2FO">I/O</A></STRONG><BR>
  438. <DD>
  439. Mark-Jason Dominus (<A HREF="mailto:mjd@plover.com">mjd@plover.com</A>) has an outline for perliotut.
  440. <P></P>
  441. <DT><STRONG><A NAME="item_pack%2Funpack">pack/unpack</A></STRONG><BR>
  442. <DD>
  443. This is badly needed.  There has been some discussion on the
  444. subject on perl5-porters.
  445. <P></P>
  446. <DT><STRONG><A NAME="item_Debugging">Debugging</A></STRONG><BR>
  447. <DD>
  448. Ronald Kimball (<A HREF="mailto:rjk@linguist.dartmouth.edu">rjk@linguist.dartmouth.edu</A>) has volunteered.
  449. <P></P></DL>
  450. <P>
  451. <H2><A NAME="include a search tool">Include a search tool</A></H2>
  452. <P>perldoc should be able to 'grep' fulltext indices of installed POD
  453. files.  This would let people say:</P>
  454. <PRE>
  455.   perldoc -find printing numbers with commas</PRE>
  456. <P>and get back the perlfaq entry on 'commify'.</P>
  457. <P>This solution, however, requires documentation to contain the keywords
  458. the user is searching for.  Even when the users know what they're
  459. looking for, often they can't spell it.</P>
  460. <P>
  461. <H2><A NAME="include a locate tool">Include a locate tool</A></H2>
  462. <P>perldoc should be able to help people find the manpages on a
  463. particular high-level subject:</P>
  464. <PRE>
  465.   perldoc -find web</PRE>
  466. <P>would tell them manpages, web pages, and books with material on web
  467. programming.  Similarly <CODE>perldoc -find databases</CODE>, <CODE>perldoc -find
  468. references</CODE> and so on.</P>
  469. <P>We need something in the vicinity of:</P>
  470. <PRE>
  471.   % perl -help random stuff
  472.   No documentation for perl function `random stuff' found
  473.   The following entry in <A HREF="../../lib/Pod/perlfunc.html">perlfunc</A>.pod matches /random/a:
  474.     =item rand EXPR</PRE>
  475. <PRE>
  476.     =item rand</PRE>
  477. <PRE>
  478.     Returns a random fractional number greater than or equal to C<0> and less
  479.     than the value of EXPR.  (EXPR should be positive.)  If EXPR is
  480.     omitted, the value C<1> is used.  Automatically calls C<srand()> unless
  481.     C<srand()> has already been called.  See also C<srand()>.</PRE>
  482. <PRE>
  483.     (Note: If your rand function consistently returns numbers that are too
  484.     large or too small, then your version of Perl was probably compiled
  485.     with the wrong number of RANDBITS.)
  486.   The following pod pages seem to have /stuff/a:
  487.     <A HREF="../../lib/Pod/perlfunc.html">perlfunc</A>.pod        (7 hits)
  488.     <A HREF="../../lib/Pod/perlfaq7.html">perlfaq7</A>.pod        (6 hits)
  489.     <A HREF="../../lib/Pod/perlmod.html">perlmod</A>.pod         (4 hits)
  490.     <A HREF="../../lib/Pod/perlsyn.html">perlsyn</A>.pod         (3 hits)
  491.     <A HREF="../../lib/Pod/perlfaq8.html">perlfaq8</A>.pod        (2 hits)
  492.     <A HREF="../../lib/Pod/perlipc.html">perlipc</A>.pod         (2 hits)
  493.     <A HREF="../../lib/Pod/perl5004delta.html">perl5004delta</A>.pod   (1 hit)
  494.     <A HREF="../../lib/Pod/perl5005delta.html">perl5005delta</A>.pod   (1 hit)
  495.     <A HREF="../../lib/Pod/perlcall.html">perlcall</A>.pod        (1 hit)
  496.     <A HREF="../../lib/Pod/perldelta.html">perldelta</A>.pod       (1 hit)
  497.     <A HREF="../../lib/Pod/perlfaq3.html">perlfaq3</A>.pod        (1 hit)
  498.     <A HREF="../../lib/Pod/perlfaq5.html">perlfaq5</A>.pod        (1 hit)
  499.     <A HREF="../../lib/Pod/perlhist.html">perlhist</A>.pod        (1 hit)
  500.     <A HREF="../../lib/Pod/perlref.html">perlref</A>.pod         (1 hit)
  501.     <A HREF="../../lib/Pod/perltoc.html">perltoc</A>.pod         (1 hit)
  502.     <A HREF="../../lib/Pod/perltrap.html">perltrap</A>.pod        (1 hit)
  503.   Proceed to open <A HREF="../../lib/Pod/perlfunc.html">perlfunc</A>.pod? [y] n
  504.   Do you want to speak perl interactively? [y] n
  505.   Should I dial 911? [y] n
  506.   Do you need psychiatric help? [y] y
  507.   <PELIZA> Hi, what bothers you today?
  508.            A Python programmer in the next cubby is driving me nuts!
  509.   <PELIZA> Hmm, thats fixable.  Just [rest censored]</PRE>
  510. <P>
  511. <H2><A NAME="separate function manpages by default">Separate function manpages by default</A></H2>
  512. <P>Perl should install 'manpages' for every function/operator into the
  513. 3pl or 3p manual section.  By default.  The splitman program in the
  514. Perl source distribution does the work of turning big perlfunc into
  515. little 3p pages.</P>
  516. <P>
  517. <H2><A NAME="users can't find the manpages">Users can't find the manpages</A></H2>
  518. <P>Make <CODE>perldoc</CODE> tell users what they need to add to their .login or
  519. .cshrc to set their MANPATH correctly.</P>
  520. <P>
  521. <H2><A NAME="install all documentation">Install ALL Documentation</A></H2>
  522. <P>Make the standard documentation kit include the VMS, OS/2, Win32,
  523. Threads, etc information.  installperl and pod/Makefile should know
  524. enough to copy README.foo to perlfoo.pod before building everything,
  525. when appropriate.</P>
  526. <P>
  527. <H2><A NAME="outstanding issues to be documented">Outstanding issues to be documented</A></H2>
  528. <P>Tom has a list of 5.005_5* features or changes that require
  529. documentation.</P>
  530. <P>Create one document that coherently explains the delta between the
  531. last camel release and the current release.  perldelta was supposed
  532. to be that, but no longer.  The things in perldelta never seemed to
  533. get placed in the right places in the real manpages, either.  This
  534. needs work.</P>
  535. <P>
  536. <H2><A NAME="adapt www.linuxhq.com for perl">Adapt www.linuxhq.com for Perl</A></H2>
  537. <P>This should help glorify documentation and get more people involved in
  538. perl development.</P>
  539. <P>
  540. <H2><A NAME="replace man with a perl program">Replace man with a perl program</A></H2>
  541. <P>Can we reimplement man in Perl?  Tom has a start.  I believe some of
  542. the Linux systems distribute a manalike.  Alternatively, build on
  543. perldoc to remove the unfeatures like ``is slow'' and ``has no apropos''.</P>
  544. <P>
  545. <H2><A NAME="unicode tutorial">Unicode tutorial</A></H2>
  546. <P>We could use more work on helping people understand Perl's new
  547. Unicode support that Larry has created.</P>
  548. <P>
  549. <HR>
  550. <H1><A NAME="modules">Modules</A></H1>
  551. <P>
  552. <H2><A NAME="update the posix extension to conform with the posix 1003.1 edition 2">Update the POSIX extension to conform with the POSIX 1003.1 Edition 2</A></H2>
  553. <P>The current state of the POSIX extension is as of Edition 1, 1991,
  554. whereas the Edition 2 came out in 1996.  ISO/IEC 9945:1-1996(E),
  555. ANSI/IEEE Std 1003.1, 1996 Edition. ISBN 1-55937-573-6.  The updates
  556. were legion: threads, IPC, and real time extensions.</P>
  557. <P>
  558. <H2><A NAME="module versions">Module versions</A></H2>
  559. <P>Automate the checking of versions in the standard distribution so
  560. it's easy for a pumpking to check whether CPAN has a newer version
  561. that we should be including?</P>
  562. <P>
  563. <H2><A NAME="new modules">New modules</A></H2>
  564. <P>Which modules should be added to the standard distribution?  This ties
  565. in with the SDK discussed on the perl-sdk list at perl.org.</P>
  566. <P>
  567. <H2><A NAME="profiler">Profiler</A></H2>
  568. <P>Make the profiler (Devel::DProf) part of the standard release, and
  569. document it well.</P>
  570. <P>
  571. <H2><A NAME="tie modules">Tie Modules</A></H2>
  572. <DL>
  573. <DT><STRONG><A NAME="item_VecArray">VecArray</A></STRONG><BR>
  574. <DD>
  575. Implement array using vec().  Nathan Torkington has working code to
  576. do this.
  577. <P></P>
  578. <DT><STRONG><A NAME="item_SubstrArray">SubstrArray</A></STRONG><BR>
  579. <DD>
  580. Implement array using <A HREF="../../lib/Pod/perlfunc.html#item_substr"><CODE>substr()</CODE></A>
  581. <P></P>
  582. <DT><STRONG><A NAME="item_VirtualArray">VirtualArray</A></STRONG><BR>
  583. <DD>
  584. Implement array using a file
  585. <P></P>
  586. <DT><STRONG><A NAME="item_ShiftSplice">ShiftSplice</A></STRONG><BR>
  587. <DD>
  588. Defines shift et al in terms of splice method
  589. <P></P></DL>
  590. <P>
  591. <H2><A NAME="procedural options">Procedural options</A></H2>
  592. <P>Support procedural interfaces for the common cases of Perl's
  593. gratuitously OOO modules.  Tom objects to ``use IO::File'' reading many
  594. thousands of lines of code.</P>
  595. <P>
  596. <H2><A NAME="rpc">RPC</A></H2>
  597. <P>Write a module for transparent, portable remote procedure calls.  (Not
  598. core).  This touches on the CORBA and ILU work.</P>
  599. <P>
  600. <H2><A NAME="y2k localtime/gmtime">y2k localtime/gmtime</A></H2>
  601. <P>Write a module, Y2k::Catch, which overloads localtime and gmtime's
  602. returned year value and catches ``bad'' attempts to use it.</P>
  603. <P>
  604. <H2><A NAME="export file::find variables">Export File::Find variables</A></H2>
  605. <P>Make File::Find export <CODE>$name</CODE> etc manually, at least if asked to.</P>
  606. <P>
  607. <H2><A NAME="ioctl">Ioctl</A></H2>
  608. <P>Finish a proper Ioctl module.</P>
  609. <P>
  610. <H2><A NAME="debugger attach/detach">Debugger attach/detach</A></H2>
  611. <P>Permit a user to debug an already-running program.</P>
  612. <P>
  613. <H2><A NAME="regular expression debugger">Regular Expression debugger</A></H2>
  614. <P>Create a visual profiler/debugger tool that stepped you through the
  615. execution of a regular expression point by point.  Ilya has a module
  616. to color-code and display regular expression parses and executions.
  617. There's something at <A HREF="http://tkworld.org/">http://tkworld.org/</A> that might be a good start,
  618. it's a Tk/Tcl RE wizard, that builds regexen of many flavours.</P>
  619. <P>
  620. <H2><A NAME="alternative re syntax">Alternative RE Syntax</A></H2>
  621. <P>Make an alternative regular expression syntax that is accessed through
  622. a module.  For instance,</P>
  623. <PRE>
  624.   use RE;
  625.   $re = start_of_line()
  626.       ->literal("1998/10/08")
  627.       ->optional( whitespace() )
  628.       ->literal("[")
  629.       ->remember( many( or( "-", digit() ) ) );</PRE>
  630. <PRE>
  631.   if (/$re/) {
  632.     print "time is $1\n";
  633.   }</PRE>
  634. <P>Newbies to regular expressions typically only use a subset of the full
  635. language.  Perhaps you wouldn't have to implement the full feature set.</P>
  636. <P>
  637. <H2><A NAME="bundled modules">Bundled modules</A></H2>
  638. <P>Nicholas Clark (<A HREF="mailto:nick@flirble.org">nick@flirble.org</A>) had a patch for storing modules in
  639. zipped format.  This needs exploring and concluding.</P>
  640. <P>
  641. <H2><A NAME="expect">Expect</A></H2>
  642. <P>Adopt IO::Tty, make it as portable as Don Libes' ``expect'' (can we link
  643. against expect code?), and perfect a Perl version of expect.  IO::Tty
  644. and expect could then be distributed as part of the core distribution,
  645. replacing Comm.pl and other hacks.</P>
  646. <P>
  647. <H2><A NAME="gui::native">GUI::Native</A></H2>
  648. <P>A simple-to-use interface to native graphical abilities would
  649. be welcomed.  Oh, Perl's access Tk is nice enough, and reasonably
  650. portable, but it's not particularly as fast as one would like.
  651. Simple access to the mouse's cut buffer or mouse-presses shouldn't
  652. required loading a few terabytes of Tk code.</P>
  653. <P>
  654. <H2><A NAME="update semibroken auxiliary tools; h2ph, a2p, etc.">Update semibroken auxiliary tools; h2ph, a2p, etc.</A></H2>
  655. <P>Kurt Starsinic is working on h2ph.  mjd has fixed bugs in a2p in the
  656. past.  a2p apparently doesn't work on nawk and gawk extensions.
  657. Graham Barr has an Include module that does h2ph work at runtime.</P>
  658. <P>
  659. <H2><A NAME="pod converters">POD Converters</A></H2>
  660. <P>Brad's PodParser code needs to become part of the core, and the Pod::*
  661. and pod2* programs rewritten to use this standard parser.  Currently
  662. the converters take different options, some behave in different
  663. fashions, and some are more picky than others in terms of the POD
  664. files they accept.</P>
  665. <P>
  666. <H2><A NAME="pod2html">pod2html</A></H2>
  667. <P>A short-term fix: pod2html generates absolute HTML links.  Make it
  668. generate relative links.</P>
  669. <P>
  670. <H2><A NAME="podchecker">Podchecker</A></H2>
  671. <P>Something like lint for Pod would be good.  Something that catches
  672. common errors as well as gross ones.  Brad Appleton is putting
  673. together something as part of his PodParser work.</P>
  674. <P>
  675. <HR>
  676. <H1><A NAME="tom's wishes">Tom's Wishes</A></H1>
  677. <P>
  678. <H2><A NAME="webperl">Webperl</A></H2>
  679. <P>Design a webperl environment that's as tightly integrated and as
  680. easy-to-use as Perl's current command-line environment.</P>
  681. <P>
  682. <H2><A NAME="mobile agents">Mobile agents</A></H2>
  683. <P>More work on a safe and secure execution environment for mobile
  684. agents would be neat; the Safe.pm module is a start, but there's a
  685. still a lot to be done in that area.  Adopt Penguin?</P>
  686. <P>
  687. <H2><A NAME="posix on nonposix">POSIX on non-POSIX</A></H2>
  688. <P>Standard programming constructs for non-POSIX systems would help a
  689. lot of programmers stuck on primitive, legacy systems.  For example,
  690. Microsoft still hasn't made a usable POSIX interface on their clunky
  691. systems, which means that standard operations such as <A HREF="../../lib/Pod/perlfunc.html#item_alarm"><CODE>alarm()</CODE></A> and
  692. fork(), both critical for sophisticated client-server programming,
  693. must both be kludged around.</P>
  694. <P>I'm unsure whether Tom means to emulate alarm( )and fork(), or merely
  695. to provide a document like perlport.pod to say which features are
  696. portable and which are not.</P>
  697. <P>
  698. <H2><A NAME="portable installations">Portable installations</A></H2>
  699. <P>Figure out a portable semi-gelled installation, that is, one without
  700. full paths.  Larry has said that he's thinking about this.  Ilya
  701. pointed out that <CODE>perllib_mangle()</CODE> is good for this.</P>
  702. <P>
  703. <HR>
  704. <H1><A NAME="win32 stuff">Win32 Stuff</A></H1>
  705. <P>
  706. <H2><A NAME="rename new headers to be consistent with the rest">Rename new headers to be consistent with the rest</A></H2>
  707. <P>
  708. <H2><A NAME="sort out the spawnvp() mess">Sort out the <CODE>spawnvp()</CODE> mess</A></H2>
  709. <P>
  710. <H2><A NAME="work out dll versioning">Work out DLL versioning</A></H2>
  711. <P>
  712. <H2><A NAME="stylecheck">Style-check</A></H2>
  713. <P>
  714. <HR>
  715. <H1><A NAME="would be nice to have">Would be nice to have</A></H1>
  716. <DL>
  717. <DT><STRONG><A NAME="item_pack_%22%28stuff%29%2A%22"><CODE>pack "(stuff)*"</CODE></A></STRONG><BR>
  718. <DD>
  719. <DT><STRONG><A NAME="item_Contiguous_bitfields_in_pack%2Funpack">Contiguous bitfields in pack/unpack</A></STRONG><BR>
  720. <DD>
  721. <DT><STRONG><A NAME="item_lexperl">lexperl</A></STRONG><BR>
  722. <DD>
  723. <DT><STRONG><A NAME="item_Bundled_perl_preprocessor">Bundled perl preprocessor</A></STRONG><BR>
  724. <DD>
  725. <DT><STRONG><A NAME="item_Use_posix_calls_internally_where_possible">Use posix calls internally where possible</A></STRONG><BR>
  726. <DD>
  727. <DT><STRONG><A NAME="item_format">format BOTTOM</A></STRONG><BR>
  728. <DD>
  729. <DT><STRONG><A NAME="item_%2Di_rename_file_only_when_successfully_changed">-i rename file only when successfully changed</A></STRONG><BR>
  730. <DD>
  731. <DT><STRONG><A NAME="item_All_ARGV_input_should_act_like_%3C%3E">All ARGV input should act like <></A></STRONG><BR>
  732. <DD>
  733. <DT><STRONG><A NAME="item_report_HANDLE_%5Bformats%5D%2E">report HANDLE [formats].</A></STRONG><BR>
  734. <DD>
  735. <DT><STRONG><A NAME="item_support_in_perlmain_to_rerun_debugger">support in perlmain to rerun debugger</A></STRONG><BR>
  736. <DD>
  737. <DT><STRONG><A NAME="item_lvalue_functions">lvalue functions</A></STRONG><BR>
  738. <DD>
  739. Tuomas Lukka, on behalf of the PDL project, greatly desires this and
  740. Ilya has a patch for it (probably against an older version of Perl).
  741. Tuomas points out that what PDL really wants is lvalue <EM>methods</EM>,
  742. not just subs.
  743. <P></P></DL>
  744. <P>
  745. <HR>
  746. <H1><A NAME="possible pragmas">Possible pragmas</A></H1>
  747. <P>
  748. <H2><A NAME="'less'">'less'</A></H2>
  749. <P>(use less memory, CPU)</P>
  750. <P>
  751. <HR>
  752. <H1><A NAME="optimizations">Optimizations</A></H1>
  753. <P>
  754. <H2><A NAME="constant function cache">constant function cache</A></H2>
  755. <P>
  756. <H2><A NAME="foreach(reverse...)"><CODE>foreach(reverse...)</CODE></A></H2>
  757. <P>
  758. <H2><A NAME="cache eval tree">Cache eval tree</A></H2>
  759. <P>Unless lexical outer scope used (mark in &compiling?).</P>
  760. <P>
  761. <H2><A NAME="rcatmaybe">rcatmaybe</A></H2>
  762. <P>
  763. <H2><A NAME="shrink opcode tables">Shrink opcode tables</A></H2>
  764. <P>Via multiple implementations selected in peep.</P>
  765. <P>
  766. <H2><A NAME="cache hash value">Cache hash value</A></H2>
  767. <P>Not a win, according to Guido.</P>
  768. <P>
  769. <H2><A NAME="optimize away @_ where possible">Optimize away @_ where possible</A></H2>
  770. <P>
  771. <H2><A NAME="optimize sort by { $a <=> $b }">Optimize sort by { $a <=> $b }</A></H2>
  772. <P>Greg Bacon added several more sort optimizations.  These have
  773. made it into 5.005_55, thanks to Hans Mulder.</P>
  774. <P>
  775. <H2><A NAME="rewrite regexp parser for better integrated optimization">Rewrite regexp parser for better integrated optimization</A></H2>
  776. <P>The regexp parser was rewritten for 5.005.  Ilya's the regexp guru.</P>
  777. <P>
  778. <HR>
  779. <H1><A NAME="vague possibilities">Vague possibilities</A></H1>
  780. <DL>
  781. <DT><STRONG><A NAME="item_ref_function_in_list_context">ref function in list context</A></STRONG><BR>
  782. <DD>
  783. This seems impossible to do without substantially breaking code.
  784. <P></P>
  785. <DT><STRONG><A NAME="item_make_tr%2F%2F%2F_return_histogram_in_list_context%">make tr/// return histogram in list context?</A></STRONG><BR>
  786. <DD>
  787. <DT><STRONG><A NAME="item_Loop_control_on_do%7B%7D_et_al">Loop control on do{} et al</A></STRONG><BR>
  788. <DD>
  789. <DT><STRONG><A NAME="item_Explicit_switch_statements">Explicit switch statements</A></STRONG><BR>
  790. <DD>
  791. Nobody has yet managed to come up with a switch syntax that would
  792. allow for mixed hash, constant, regexp checks.  Submit implementation
  793. with syntax, please.
  794. <P></P>
  795. <DT><STRONG><A NAME="item_compile_to_real_threaded_code">compile to real threaded code</A></STRONG><BR>
  796. <DD>
  797. <DT><STRONG><A NAME="item_structured_types">structured types</A></STRONG><BR>
  798. <DD>
  799. <DT><STRONG><A NAME="item_Modifiable_%241_et_al">Modifiable $1 et al</A></STRONG><BR>
  800. <DD>
  801. The intent is for this to be a means of editing the matched portions of
  802. the target string.
  803. <P></P></DL>
  804. <P>
  805. <HR>
  806. <H1><A NAME="to do or not to do">To Do Or Not To Do</A></H1>
  807. <P>These are things that have been discussed in the past and roundly
  808. criticized for being of questionable value.</P>
  809. <P>
  810. <H2><A NAME="making my() work on package variables">Making <A HREF="../../lib/Pod/perlfunc.html#item_my"><CODE>my()</CODE></A> work on ``package'' variables</A></H2>
  811. <P>Being able to say my($Foo::Bar), something that sounds ludicrous and
  812. the 5.6 pumpking has mocked.</P>
  813. <P>
  814. <H2><A NAME="or testing defined not truth">``or'' testing defined not truth</A></H2>
  815. <P>We tell people that <CODE>||</CODE> can be used to give a default value to a
  816. variable:</P>
  817. <PRE>
  818.     $children = shift || 5;             # default is 5 children</PRE>
  819. <P>which is almost (but not):</P>
  820. <PRE>
  821.     $children = shift;
  822.     $children = 5 unless $children;</PRE>
  823. <P>but if the first argument was given and is ``0'', then it will be
  824. considered false by <CODE>||</CODE> and <CODE>5</CODE> used instead.  Really we want
  825. an <CODE>||</CODE>-like operator that behaves like:</P>
  826. <PRE>
  827.     $children = shift;
  828.     $children = 5 unless defined $children;</PRE>
  829. <P>Namely, a <CODE>||</CODE> that tests defined-ness rather than truth.  One was
  830. discussed, and a patch submitted, but the objections were many.  While
  831. there were objections, many still feel the need.  At least it was
  832. decided that <CODE>??</CODE> is the best name for the operator.</P>
  833. <P>
  834. <H2><A NAME="dynamic lexicals">``dynamic'' lexicals</A></H2>
  835. <PRE>
  836.   my $x;
  837.   sub foo {
  838.     local $x;
  839.   }</PRE>
  840. <P>Localizing, as Tim Bunce points out, is a separate concept from
  841. whether the variable is global or lexical.  Chip Salzenberg had
  842. an implementation once, but Larry thought it had potential to
  843. confuse.</P>
  844. <P>
  845. <H2><A NAME="classbased, rather than packagebased lexicals">``class''-based, rather than package-based ``lexicals''</A></H2>
  846. <P>This is like what the Alias module provides, but the variables would
  847. be lexicals reserved by perl at compile-time, which really are indices
  848. pointing into the pseudo-hash object visible inside every method so
  849. declared.</P>
  850. <P>
  851. <HR>
  852. <H1><A NAME="threading">Threading</A></H1>
  853. <P>
  854. <H2><A NAME="modules">Modules</A></H2>
  855. <P>Which of the standard modules are thread-safe?  Which CPAN modules?
  856. How easy is it to fix those non-safe modules?</P>
  857. <P>
  858. <H2><A NAME="testing">Testing</A></H2>
  859. <P>Threading is still experimental.  Every reproducible bug identifies
  860. something else for us to fix.  Find and submit more of these problems.</P>
  861. <P>
  862. <H2><A NAME="$autoload">$AUTOLOAD</A></H2>
  863. <P>
  864. <H2><A NAME="exit/die">exit/die</A></H2>
  865. <P>Consistent semantics for exit/die in threads.</P>
  866. <P>
  867. <H2><A NAME="external threads">External threads</A></H2>
  868. <P>Better support for externally created threads.</P>
  869. <P>
  870. <H2><A NAME="thread::pool">Thread::Pool</A></H2>
  871. <P>
  872. <H2><A NAME="threadsafety">thread-safety</A></H2>
  873. <P>Spot-check globals like statcache and global GVs for thread-safety.
  874. ``<STRONG>Part done</STRONG>'', says Sarathy.</P>
  875. <P>
  876. <H2><A NAME="perthread gvs">Per-thread GVs</A></H2>
  877. <P>According to Sarathy, this would make @_ be the same in threaded
  878. and non-threaded, as well as helping solve problems like filehandles
  879. (the same filehandle currently cannot be used in two threads).</P>
  880. <P>
  881. <HR>
  882. <H1><A NAME="compiler">Compiler</A></H1>
  883. <P>
  884. <H2><A NAME="optimization">Optimization</A></H2>
  885. <P>The compiler's back-end code-generators for creating bytecode or
  886. compilable C code could use optimization work.</P>
  887. <P>
  888. <H2><A NAME="byteperl">Byteperl</A></H2>
  889. <P>Figure out how and where byteperl will be built for the various
  890. platforms.</P>
  891. <P>
  892. <H2><A NAME="precompiled modules">Precompiled modules</A></H2>
  893. <P>Save byte-compiled modules on disk.</P>
  894. <P>
  895. <H2><A NAME="executables">Executables</A></H2>
  896. <P>Auto-produce executable.</P>
  897. <P>
  898. <H2><A NAME="typed lexicals">Typed lexicals</A></H2>
  899. <P>Typed lexicals should affect B::CC::load_pad.</P>
  900. <P>
  901. <H2><A NAME="win32">Win32</A></H2>
  902. <P>Workarounds to help Win32 dynamic loading.</P>
  903. <P>
  904. <H2><A NAME="end blocks">END blocks</A></H2>
  905. <P>END blocks need saving in compiled output, now that CHECK blocks
  906. are available.</P>
  907. <P>
  908. <H2><A NAME="_autoload">_AUTOLOAD</A></H2>
  909. <P>_AUTOLOAD prodding.</P>
  910. <P>
  911. <H2><A NAME="comppadlist">comppadlist</A></H2>
  912. <P>Fix comppadlist (names in comppad_name can have fake SvCUR
  913. from where newASSIGNOP steals the field).</P>
  914. <P>
  915. <H2><A NAME="cached compilation">Cached compilation</A></H2>
  916. <P>Can we install modules as bytecode?</P>
  917. <P>
  918. <HR>
  919. <H1><A NAME="recently finished tasks">Recently Finished Tasks</A></H1>
  920. <P>
  921. <H2><A NAME="figure a way out of $^(capital letter)">Figure a way out of $^(capital letter)</A></H2>
  922. <P>Figure out a clean way to extend $^(capital letter) beyond
  923. the 26 alphabets.  (${^WORD} maybe?)</P>
  924. <P>Mark-Jason Dominus sent a patch which went into 5.005_56.</P>
  925. <P>
  926. <H2><A NAME="filenames">Filenames</A></H2>
  927. <P>Keep filenames in the distribution and in the standard module set
  928. be 8.3 friendly where feasible.  Good luck changing the standard
  929. modules, though.</P>
  930. <P>
  931. <H2><A NAME="foreign lines">Foreign lines</A></H2>
  932. <P>Perl should be more generous in accepting foreign line terminations.
  933. Mostly <STRONG>done</STRONG> in 5.005.</P>
  934. <P>
  935. <H2><A NAME="namespace cleanup">Namespace cleanup</A></H2>
  936. <PRE>
  937.     symbol-space: "pl_" prefix for all global vars
  938.                   "Perl_" prefix for all functions</PRE>
  939. <PRE>
  940.     CPP-space:    stop malloc()/free() pollution unless asked</PRE>
  941. <P>
  942. <H2><A NAME="isa.pm">ISA.pm</A></H2>
  943. <P>Rename and alter ISA.pm.  <STRONG>Done</STRONG>.  It is now base.pm.</P>
  944. <P>
  945. <H2><A NAME="gettimeofday">gettimeofday</A></H2>
  946. <P>See Time::HiRes.</P>
  947. <P>
  948. <H2><A NAME="autocroak">autocroak?</A></H2>
  949. <P>This is the Fatal.pm module, so any builtin that that does
  950. not return success automatically die()s.  If you're feeling brave, tie
  951. this in with the unified exceptions scheme.</P>
  952. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  953. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  954. <STRONG><P CLASS=block> perltodo - Perl TO-DO List</P></STRONG>
  955. </TD></TR>
  956. </TABLE>
  957.  
  958. </BODY>
  959.  
  960. </HTML>
  961.