http://qs1969.pair.com?node_id=332117

Today, Larry Wall posted more or less a Perl 6 timeline, Apocalypse wise. I found this very interesting and thought it would be interesting to some Perl monks (at least the ones who believe they'll see Perl 6 in their lifetime).

Larry said: "Here's the chapter-by-chapter list of RFCs so you can see the kind of stuff in the later chapters. I'll comment briefly on the undone chapters."

ch01/016.bdbKeep default Perl free of constraints such as warnings and strict.
ch01/026.ccbNamed operators versus functions
ch01/028.acbPerl should stay Perl.
ch01/073.adbAll Perl core functions should return objects
ch01/141.abcThis Is The Last Major Revision
 
ch02/005.cdrMultiline Comments for Perl.
ch02/009.bfHighlander Variable Types
ch02/010.rrFilehandles should use * as a type prefix if typeglobs are eliminated.
ch02/034.aaaAngle brackets should not be used for file globbing
ch02/038.bdbStandardise Handling Of Abnormal Numbers Like Infinities And NaNs
ch02/043.bcbIntegrate BigInts (and BigRats) Support Tightly With The Basic Scalars
ch02/051.ccrAngle brackets should accept filenames and lists
ch02/071.aaaLegacy Perl $pkg'var should die
ch02/102.dcrInline Comments for Perl.
ch02/103.rrFix $pkg::$var precedence issues with parsing of ::
ch02/105.aaaRemove "In string @ must be \@" fatal error
ch02/109.rrLess line noise - let's get rid of @%
ch02/111.aaaHere Docs Terminators (Was Whitespace and Here Docs)
ch02/133.bcrAlternate Syntax for variable names
ch02/134.bccAlternative array and hash slicing
ch02/139.cfrAllow Calling Any Function With A Syntax Like s///
ch02/161.adbEverything in Perl becomes an object.
ch02/162.abbHeredoc contents
ch02/175.rrAdd list keyword to force list context (like scalar)
ch02/192.ddrUndef values ne value
ch02/196.bcbMore direct syntax for hashes
ch02/201.bcrhash slicing
ch02/212.rrMake length(@array) work
ch02/218.bccmy Dog $spot is just an assertion
ch02/222.abbInterpolation of object method calls
ch02/226.accSelective interpolation in single quotish context.
ch02/237.adchashes should interpolate in double-quoted strings
ch02/245.rrAdd new empty keyword to DWIM for clearing values
ch02/251.acrInterpolation of class method calls
ch02/252.abbInterpolation of subroutines
ch02/263.rrAdd null() keyword and fundamental data type
ch02/327.dbr\v for Vertical Tab
ch02/328.bcrSingle quotes don't interpolate \' and \\
 
ch03/024.rrData types: Semi-finite (lazy) lists
ch03/025.dbaOperators: Multiway comparisons
ch03/039.rrPerl should have a print operator
ch03/045.bbb|| and && should propagate result context to both sides
ch03/054.cdrOperators: Polymorphic comparisons
ch03/081.abbLazily evaluated list generation functions
ch03/082.abbArrays: Apply operators element-wise in a list context
ch03/084.abbReplace => (stringifying comma) with => (pair constructor)
ch03/104.ccrBacktracking
ch03/138.rrEliminate =~ operator.
ch03/143.dcrCase ignoring eq and cmp operators
ch03/170.ccrGeneralize =~ to a special "apply-to" assignment operator
ch03/283.ccctr/// in array context should return a histogram
ch03/285.acbLazy Input / Context-sensitive Input
ch03/290.bbcBetter english names for -X
ch03/320.cccAllow grouping of -X file tests and add filetest builtin
 
ch04/006.accLexical variables made default
ch04/019.baaRename the local operator
ch04/022.abcControl flow: Builtin switch statement
ch04/063.rrException handling syntax
ch04/064.bdcNew pragma 'scope' to change Perl's default scoping
ch04/083.aabMake constants look like variables
ch04/088.bbcOmnibus Structured Exception/Error Handling Mechanism
ch04/089.cdrControllable Data Typing
ch04/106.dbrYet another lexical variable proposal: lexical variables made default
ch04/113.rrBetter constants and constant folding
ch04/119.bcrObject neutral error handling via exceptions
ch04/120.bcrImplicit counter in for statements, possibly $#.
ch04/167.bcrSimplify do BLOCK Syntax
ch04/173.bccAllow multiple loop variables in foreach statements
ch04/199.abbShort-circuiting built-in functions and user-defined subroutines
ch04/209.cdrFuller integer support in Perl.
ch04/262.cdrIndex Attribute
ch04/279.cdrmy() syntax extensions and attribute declarations
ch04/297.dcrAttributes for compiler hints
ch04/309.adrAllow keywords in sub prototypes
ch04/330.accGlobal dynamic variables should remain the default
ch04/337.bccCommon attribute system to allow user-defined, extensible attributes
ch04/340.dcrwith takes a context
ch04/342.bcrPascal-like "with"
 
ch05/072.aaaVariable-length lookbehind.
ch05/093.abbRegex: Support for incremental pattern matching
ch05/110.bbbcounting matches
ch05/112.accAssignment within a regex
ch05/135.acrRequire explicit m on matches, even with ?? and // as delimiters.
ch05/144.aaaBehavior of empty regex should be simple
ch05/145.acrBrace-matching for Perl Regular Expressions
ch05/150.accExtend regex syntax to provide for return of a hash of matched subpatterns
ch05/156.aaaReplace first match function (?...?) with a flag to the match command.
ch05/164.ccrReplace =~, !~, m//, s///, and tr// with match(), subst(), and trade()
ch05/165.accAllow Varibles in tr///
ch05/166.abcAlternative lists and quoting of things
ch05/191.bdrsmart container slicing
ch05/197.cdrNumeric Value Ranges In Regular Expressions
ch05/198.adrBoolean Regexes
ch05/261.dbrPattern matching on perl values
ch05/274.accGeneralised Additions to Regexs
ch05/276.aaaLocalising Paren Counts in qr()s.
ch05/308.darBan Perl hooks into regexes
ch05/316.bcrRegex modifier for support of chunk processing and prefix matching
ch05/317.aaaAccess to optimisation information for regular expressions
ch05/331.accConsolidate the $1 and \1 notations
ch05/332.abcRegex: Make /$/ equivalent to /\z/ under the '/s' modifier
ch05/348.bccRegex assertions in plain Perl code
ch05/360.acbAllow multiply matched groups in regexes to return a listref of all matches
ch05/361.abbSimplifying split()
 
ch06/021.abcSubroutines: Replace wantarray with a generic want function
ch06/023.bccHigher order functions
ch06/057.abbSubroutine prototypes and parameters
ch06/059.bcrProposal to utilize * as the prefix to magic subroutines
ch06/075.dcrstructures and interface definitions
ch06/107.adrlvalue subs should receive the rvalue as an argument
ch06/118.rrlvalue subs: parameters, explicit assignment, and wantarray() changes
ch06/128.accSubroutines: Extend subroutine contexts to include name parameters and lazy arguments
ch06/132.acrSubroutines should be able to return an lvalue
ch06/149.adrLvalue subroutines: implicit and explicit assignment
ch06/154.bdrSimple assignment lvalue subs should be on by default
ch06/160.accFunction-call named parameters (with compiler optimizations)
ch06/168.abbBuilt-in functions should be functions
ch06/176.bbbsubroutine / generic entity documentation
ch06/194.accStandardise Function Pre- and Post-Handling
ch06/271.abcSubroutines : Pre- and post- handlers for subroutines
ch06/298.cbcMake subroutines' prototypes accessible from Perl
ch06/334.abbPerl should allow specially attributed subs to be called as C functions
ch06/344.acrElements of @_ should be read-only by default
 
ch07/181.rrFormats out of core / New format syntax
ch07/230Replace format built-in with format function

E7 is coming out within a week or so.
ch08/177A Natural Syntax Extension For Chained References
ch08/241Pseudo-hashes must die!
ch08/242.aaaNo overloading of f($arg) basing on ref($arg)

Not much here. And we already decided pseudohashes must die.
ch09/116Efficient numerics with perl
ch09/117.rrPerl syntax support for ranges
ch09/122types and structures
ch09/123Builtin: lazy
ch09/124Sort order for any hash
ch09/136Implementation of hash iterators
ch09/142Enhanced Pack/Unpack
ch09/169.rrProposed syntax for matrix element access and slicing.
ch09/202Arrays: Overview of multidimensional array RFCs (RFC 203 through RFC 207)
ch09/203Arrays: Notation for declaring and creating arrays
ch09/204Arrays: Use list reference for multidimensional array access
ch09/205Arrays: New operator ';' for creating array slices
ch09/206Arrays: @#arr for getting the dimensions of an array
ch09/207Arrays: Efficient Array Loops
ch09/225Data: Superpositions
ch09/231Data: Multi-dimensional arrays/hashes and slices
ch09/247pack/unpack C-like enhancements
ch09/266Any scalar can be a hash key
ch09/268.rrKeyed arrays
ch09/273Internal representation of Pseudo-hashes using attributes.
ch09/282Open-ended slices
ch09/341unified container theory

Nearly all this stuff is already in there.
ch10/008.cdThe AUTOLOAD subroutine should be able to decline a request
ch10/232Replace AUTOLOAD by a more flexible mechanism
ch10/324Extend AUTOLOAD functionality to AUTOGLOB

We know AUTOLOAD needs some work to be able to return a ref without actually calling a routine. And a "next method" mechanism is already in the works for A12 so that AUTOLOAD can decline to work.
ch11/062Wildcards for multiple module imports
ch11/074Proposal to rename import and unimport
ch11/078Improved Module Versioning And Searching
ch11/233Replace Exporter by a better scaling mechanism
ch11/253UNIVERSAL::require()
ch11/257UNIVERSAL::import()
ch11/289Generate module dependencies easily
ch11/291Detecting Perl Core Modules Should Be Easy

Mostly decided already. Some of it comes out in A12, such improved versioning and searching.
ch12/032.abbA method of allowing foreign objects in perl
ch12/067.abbDeep Copying, aka, cloning around.
ch12/092.abbExtensible Meta-Object Protocol
ch12/095.accObject Classes
ch12/101.bccApache-like Event and Dispatch Handlers
ch12/126.aaaEnsuring Perl's object-oriented future
ch12/137.bddOverview: Perl OO should not be fundamentally changed.
ch12/147.rrSplit Scalars and Objects/References into Two Types
ch12/152.bddReplace invocant in @_ with self() builtin
ch12/163.bddObjects: Autoaccessors for object data structures
ch12/171.rrmy Dog $spot should call a constructor implicitly
ch12/174.bddImproved parsing and flexibility of indirect object syntax
ch12/187.abbObjects : Mandatory and enhanced second argument to bless
ch12/188.accObjects : Private keys and methods
ch12/189.abbObjects : Hierarchical calls to initializers and destructors
ch12/190.accObjects : NEXT pseudoclass for method redispatch
ch12/193.accObjects : Core support for method delegation
ch12/223.bddObjects: use invocant pragma
ch12/224.bddObjects : Rationalizing ref, attribute::reftype, and builtin:blessed
ch12/244.cdrMethod calls should not suffer from the action on a distance
ch12/254.abbClass Collections: Provide the ability to overload classes
ch12/256.abbObjects : Native support for multimethods
ch12/265.abcInterface polymorphism considered lovely
ch12/277.bbbMethod calls SHOULD suffer from ambiguity by default
ch12/307.rrPRAYER - what gets said when you bless something
ch12/335.accClass Methods Introspection: what methods does this object support?
ch12/336.bbbuse strict 'objects': a new pragma for using Java-like objects in Perl

A12 is mostly written.
ch13/020.cdOverloadable && and ||
ch13/049Objects should have builtin stringifying STRING method
ch13/097prototype-based method overloading
ch13/098context-based method overloading
ch13/108Scope of Polymorphic References and Objects
ch13/115Overloadable parentheses for objects
ch13/159True Polymorphic Objects
ch13/180Object Class hooks into printf
ch13/234Data: overloading via the SECOND operand if needed
ch13/235Data: sprintf() with overloaded objects
ch13/258Distinguish packed data from printable strings

Mostly covered already, or in A12.
ch14/015.cfStronger typing through tie.
ch14/200Objects: Revamp tie to support extensibility (Massive tie changes)
ch14/243No special UPPERCASE_NAME subroutines
ch14/319Transparently integrate tie

The main decision about tie is that you can't tie a variable unless it's been declared as tie-able. Otherwise the optimizer is hamstrung. Perhaps more importantly, tie has been generalized to container typing, which we already have decided most of.
ch15/050BiDirectional Support in PERL
ch15/069Standardize input record separator (for portability)
ch15/131Internal String Storage to be Opaque
ch15/294Internally, data is stored as UTF8
ch15/295Normalisation and unicode::exact
ch15/296Getting Data Into Unicode Is Not Our Problem
ch15/300use unicode::representation and no unicode
ch15/311Line Disciplines
ch15/312Unicode Combinatorix
ch15/322Abstract Internals String Interaction

Most of this is already done right in recent Perl 5, except the parts that are done wrong...
ch16/060Safe Signals
ch16/086IPC Mailboxes for Threads and Signals

Parrot issues.
ch17/001.acImplementation of Threads in Perl
ch17/027Coroutines for Perl
ch17/031Subroutines: Co-routines
ch17/047Universal Asynchronous I/O
ch17/087Timers and Timeouts
ch17/178Lightweight Threads
ch17/185Thread Programming Model
ch17/293MT-Safe Autovariables in perl 5.005 Threading
ch17/321Common Callback API for all AIO calls.
ch17/345Putting an Event Loop in the Core

Parrot issues, mostly. If the underlying mechanism is there, it's trivial to expose the API at the language level. If it's not, well, that makes it a little harder...
ch18/004.bdtype inference
ch18/012.afvariable usage warnings
ch18/018.adImmediate subroutines
ch18/040Module Scope Control
ch18/068Eliminate the optional sub for BEGIN etc block declarations
ch18/070Allow exception-based error-reporting.
ch18/172Precompiled Perl scripts.
ch18/214Emit warnings and errors based on unoptimized code
ch18/264Provide a standard module to simplify the creation of source filters
ch18/314A parser is a many-layered thing

Much already decided, either on Perl level or Parrot level.
ch19/114Perl resource configuration

I don't mind if Perl has a -r switch, as long as it's not default.
ch20/184Perl should support an interactive mode.
ch20/292Extensions to the perl debugger

Not a language issue. I don't mind if other people work on this. (I almost never use the debugger.)
ch21/035A proposed internal base format for perl variables
ch21/046.rrUse features of portable, free compilers and libraries
ch21/061Interfaces for linking C objects into perlsubs
ch21/121linkable output mode
ch21/125Components in the Perl Core Should Have Well-Defined APIs and Behavior
ch21/210Data/Binary Dumping and Freezing
ch21/270Replace XS with the Inline module as the standard way to extend Perl.
ch21/281The Perl 6 Development Log
ch21/301Cache byte-compiled programs and modules
ch21/310Ordered bytecode
ch21/315Kick out all ops - libprt
ch21/318Handling environment setting in extension modules
ch21/323Perl's embedding API should be simple
ch21/326Symbols, symbols everywhere
ch21/338shareable bytecode
ch21/349Perl modules should be built with a Perl make program
ch21/352Merge Perl and C#, but have default Main class for scripting.

Mostly Parrot issues.
ch23/130Transaction-enabled variables for Perl6
ch23/227Extend the window to turn on taint mode
ch23/353A Sandboxing mechanism for Perl 6

We have "let" for transaction-enabled variables. Sandboxing is a rathole.
ch24/183"=for testing" - Embedded tests

Up to the qa folks.
ch25/036Structured Internal Representation of Filenames
ch25/099Standardize ALL Perl platforms on UNIX epoch
ch25/100Embed full URI support into Perl

Library issues, not language design issues.
ch26/011.cfExamples encoded with =also for|begin|end POD commands
ch26/044Bring Documentation Closer To Whatever It Documents
ch26/065Add change bar functionality to pod
ch26/079The Predefined POD Streams are perl, data, and doc
ch26/216POD should tolerate white space.
ch26/217POD needs a reorder command.
ch26/280Tweak POD's < >
ch26/286Add a "emit pod" runtime option to Perl
ch26/306User-definable POD handling
ch26/325POD and comments handling in perl
ch26/357Perl should use XML for documentation instead of POD

POD definitely needs some tweaks, some of which we've already published. What it doesn't need is to be turned into TeX or XML.
ch27/013.aaThe Copyright and Licensing Working Group
ch27/182JART - Just Another Regression Test
ch27/211The Artistic License Must Be Changed
ch27/219.rrPerl6's License Should Be a Minor Bugfix of Perl5's License
ch27/240Form a documentation working group to edit, clean, and produce
ch27/343New Perl Mascot
ch27/346Perl6's License Should be (GPL|Artistic-2.0)
ch27/354A Trademark on Perl Should be Acquired in Larry Wall's Name

Licensing has to be decided soon--probably we'll go with (GPL|Artistic-2.0), more or less. We're not changing the Perl Mascot-I own too many stuffed camels for that. Trademarks are a royal pain. Do you really always want to say "the Perl programming language" everywhere you now say "Perl"? Otherwise we lose trademark status.

Oh, sorry, make that "the Perl® programming language".

ch28/017.bdOrganization and Rationalization of Perl State Variables
ch28/030STDIN, STDOUT, STDERR, ARGV, and DATA should become scalars
ch28/033Eliminate bareword filehandles.
ch28/094.rrRename @ARGV to @ARGS
ch28/129Replace default filehandle/select with $DEFOUT, $DEFERR, $DEFIN
ch28/151Merge $!, $^E, $@ and $?
ch28/158Regular Expression Special Variables
ch28/236Change the way $SIG{__WARN__} and $SIG{__DIE__} are used
ch28/284Change $SIG{__WARN__} and $SIG{__DIE__} to magic subs
ch28/299@STACK - a modifyable caller()
ch28/305$^C should be true when compiling
ch28/347Remove long-deprecated $* (aka $MULTILINE_MATCHING)
ch28/355Leave $[ alone.

Most all of these have been accepted already.
ch29/007.abHigher resolution time values
ch29/014.abModify open() to support FileObjects and Extensibility
ch29/029unlink() should be left alone
ch29/037Positional Return Lists Considered Harmful
ch29/048Replace localtime() and gmtime() with date() and utcdate()
ch29/052.rrList context return from filesystem functions
ch29/053Built-ins: Merge and generalize index and rindex
ch29/055Compilation: Remove requirement for final true value in require-d and do-ed files
ch29/056Optional 2nd argument to pop() and shift()
ch29/058chomp() changes.
ch29/076Builtin: reduce
ch29/077Suggested isa() operator.
ch29/090Arrays: merge() and unmerge()
ch29/091Arrays: part and flatten
ch29/127Sane resolution to large function returns
ch29/146Remove socket functions from core
ch29/148Arrays: Add reshape() for multi-dimensional array reshaping
ch29/155Remove mathematic and trigonomic functions from core binary
ch29/157Delete dbmopen and dbmclose commands.
ch29/179More functions from set theory to manipulate arrays
ch29/195Retire chop().
ch29/208crypt() default salt
ch29/213rindex and index should return true/false values
ch29/215More defaulting to $_
ch29/220wait() and waitpid() should return false on failure
ch29/221system() should return useful values
ch29/229Variable interpolation on demand.
ch29/239IO: Standardization of Perl IO Functions to use Indirect Objects
ch29/246pack/unpack uncontrovercial enhancements
ch29/248enhanced groups in pack/unpack
ch29/249Use pack/unpack for marshalling
ch29/250hooks in pack/unpack
ch29/255.rrFix iteration of nested hashes
ch29/259Builtins : Make use of hashref context for garrulous builtins
ch29/267Eliminate dump() function
ch29/269.rrPerl should not abort when a required file yields a false value
ch29/272Arrays: transpose()
ch29/339caller->eval BLOCK
ch29/351Beyond the amnesic eval
ch29/358Keep dump capability.

Doubtless a great deal of the remaining design work is here. But it's reasonable to assume that most of these functions work as in Perl 5 unless we decide otherwise. Which, in many cases, we already have. Or there's already a newer, more obvious way to write the function in question.
ch30/186Standard support for opening i/o handles on scalars and arrays-of-scalars
ch30/228Add memoize into the standard library
ch30/260More modules
ch30/287Improve Perl Persistance
ch30/288First-Class CGI Support
ch30/333Add header and unheader funtions to core distribution
ch30/350Advanced I/O (AIO)

Mostly oddities.
ch31/002.cfRequest For New Pragma: Implicit
ch31/041.rrRequest For New Pragma: Implicit
ch31/042Request For New Pragma: Shell
ch31/066Shell Style Redirection
ch31/140One Should Not Get Away With Ignoring System Call Errors
ch31/153New pragma 'autoload' to load functions and modules on-demand
ch31/275New 'tristate' pragma to allow undef to take on NULL semantics
ch31/278Additions to 'use strict' to fix syntactic ambiguities
ch31/302Unrolling loops and tail recursion
ch31/303Keep use less, but make it work.
ch31/304sort algorithm to be selectable at compile time
ch31/329use syntax
ch31/356Dominant Value Expressions

Many pragma requests are bandaids on a deficient language design. It's usually better to fix the language in those cases, except where we want a certain default behavior, and use a pragma to select a different default behavior. In particular, now that we have named arguments, a lot of these options can just be applied adverbially, such as forcing sort to use a particular algorithm.
ch33/003.bfmessages.rfc - An RFC to discussing the wisdom of allowing run time error
ch33/080Exception objects and classes for builtins
ch33/085All perl generated errors should have a unique identifier
ch33/096.rrA Base Class for Exception Objects
ch33/238length(@ary) deserves a warning
ch33/313Perl 6 should support I18N and L10N
ch33/359Improvement needed in error messages (both internal errors and die function).

I could reasonably delegate the design of exception classes. And I18N will certainly be an I11l effort. I think Parrot has pretty much ignored the issue till now because all the Parrot Mongers speak English, and since everyone else retrofits I18N, why not us too? :-)

As Larry said in that mail: "I hope this all paints a rosier bike-shed, er, picture for you."

Liz

Edited by Chady -- fixed the ®

Edit by tye, replace PRE with TABLE