|
|
|
|
|
|
Adam Turoff |
|
ActiveState |
|
|
|
January 31, 2001 |
|
|
|
LinuxWorld NY 2001 |
|
|
|
|
Background |
|
Summary of Perl5 |
|
State of Perl5 |
|
Goals for Perl6 |
|
Perl6 Status Update |
|
|
|
|
|
|
First public release: Dec 18, 1987 |
|
Maintained by Larry Wall |
|
Perl5 released Dec 19, 1994 |
|
Currently maintained by perl5-porters |
|
Perl 5.6.x: Gurusamy Sarathy
(ActiveState) |
|
Perl 5.7.x: Jarkko Hietaniemi |
|
|
|
|
|
Widely adopted by sysadmins |
|
Well suited for CGI programming |
|
Extensible: |
|
Databases
(ingperl, oraperl, sybperl) |
|
Graphical Applications (tkperl) |
|
Code Forking, Maintenance issues |
|
|
|
|
|
|
|
Perl’s Goals |
|
Easy things should be easy |
|
Hard things should be possible |
|
TMTOWTDI |
|
Complexity of the solution should match the
complexity of the problem |
|
Use what you know |
|
|
|
|
|
|
|
|
Perl as a Postmodern Language |
|
“It’s all good” |
|
Support many paradigms |
|
Functional |
|
Object-Oriented |
|
Procedural |
|
Whatever gets the job done […] |
|
|
|
|
|
|
|
|
Solve the problems of Perl4: |
|
Prevent code forks |
|
Extend Perl with Perl (modules) |
|
Use existing C libraries (h2xs) |
|
Native code interfaces (xsub) |
|
Allow Object Oriented Programming |
|
Larry as release manager |
|
Maintainers: perl5-porters@perl.org |
|
|
|
|
|
|
|
|
Extend beyond Perl4: |
|
CPAN |
|
Thousands of open-source Perl modules |
|
Platforms |
|
Most UNIX variants |
|
Win32 |
|
MacOS, BeOS, Amiga |
|
[…] |
|
|
|
|
|
|
|
Perl5 Issues: |
|
New implementation |
|
Backward compatiblity to Perl1 |
|
New features (Objects, etc.) |
|
Clean up some warts (foo() vs. &foo()) |
|
Keep some warts for compatibility (filehandles) |
|
|
|
|
|
|
|
CPAN: Perl Extensions |
|
DBI: Database Interface |
|
Tk: Cross-Platform GUI toolkit |
|
Win32: Windows Integration |
|
XML: Extensible Markup Language |
|
Mason: Web Application Development |
|
thousands more, and no code forks… |
|
|
|
|
|
|
|
New work: Perl Compiler (experimental) |
|
Perl to C |
|
Perl to Java |
|
Perl to Perl |
|
Perl to Bytecode |
|
Code Analysis |
|
|
|
|
|
|
|
New Technology since 1994 |
|
XML |
|
XSL, XSLT |
|
LDAP |
|
WebDAV |
|
Jabber, Napster, SOAP, P2P |
|
etc. |
|
|
|
|
|
|
|
Problems with Perl |
|
Rate of technology adoption |
|
Java, Python, Ruby, C#, etc. |
|
Module dependencies (DLL Hell) |
|
Complex source code |
|
Community growth |
|
|
|
|
|
|
|
1) Last chance to fix the warts |
|
Code Translation: Perl Compiler |
|
Keep easy things easy (user-defined hashes,
optional typing, etc.) |
|
Replace Filehandles, Formats, etc. (Text::Autoformat) |
|
Larger community ownership |
|
|
|
|
|
|
|
2) “Perl is a Great Tool for text hacking” |
|
Unicode |
|
XML |
|
Regular Expressions |
|
Strings as first-class data |
|
Many approaches to use |
|
unpack(), tr//, s///, … |
|
|
|
|
|
|
|
3) Clean up the core |
|
Simplify the source code |
|
More developers, more ideas |
|
Spread the load (less burnout) |
|
Integration with Open Source projects |
|
Experimental features |
|
User-implemented types |
|
|
|
|
|
|
|
|
4) Community Involvement |
|
Start with an open RFC process |
|
August 2000 to October 2000 |
|
361 submissions |
|
Library of suggestions, requests, etc. |
|
http://dev.perl.org/rfc/ |
|
Community’s rewrite of Perl |
|
|
|
|
|
|
5) Clean up the language |
|
Filehandles, Formats, etc. |
|
Simpler Object definition |
|
Perl5 to Perl6 compiler? |
|
Automatic translation |
|
100% translation for 80% of Perl programs |
|
95% translation for 95% of Perl programs |
|
|
|
|
|
|
|
6) Clean up the implementation |
|
microperl: replace make, metaconfig |
|
nanoperl: Embedded systems, PalmOS? |
|
femtoperl: Phones? |
|
New targets: JVM, .NET, byteperl |
|
SecurePerl? |
|
|
|
|
|
|
|
7) Technology Update |
|
Unicode |
|
Concurrency |
|
Event model |
|
Asynchronous I/O |
|
Signals |
|
Optional strong typing |
|
|
|
|
|
|
|
8) Perl5 is Proven and Stable |
|
Perl4 is still in production use |
|
Perl5 isn’t going away |
|
Perl5 is still a very useful tool |
|
|
|
Projected ETA for Perl6: July 2002 |
|
|
|
|
|
|
|
|
9) Community Involvement |
|
Yet Another Society |
|
Damian Conway Grant |
|
Parse::Perl |
|
Perl5 to Perl6 translator |
|
Prototype Perl6 with Perl5 |
|
|
|
|
|
|
|
|
|
10) Idea: implement Perl in Perl? |
|
Core runtime in C |
|
Use Perl regexes to parse Perl |
|
Use more bytecode |
|
Bootstrap with Perl5 |
|
Reduce overhead for contributors |
|
|
|
|
|
|
|
RFC Process: |
|
Lots of ideas |
|
Larry reviewing each submission |
|
Original ETA: October 16, 2000 |
|
Current ETA: Real Soon Now |
|
|
|
|
|
|
|
|
|
|
|
Project Organization |
|
Nathan Torkington: interim Project Manager |
|
Multiple, focused working groups |
|
Working Group chairs |
|
All work in public email lists |
|
|
|
|
|
|
|
|
Language Working Group |
|
Chair: Kirrily Robert |
|
Keep discussion focused |
|
Generate ideas/RFCs about language changes |
|
Create ad-hoc subgroups as needed |
|
|
|
perl6-language@perl.org and its sub-lists |
|
|
|
|
|
|
|
|
Internals Working Group |
|
Chair: Dan Sugalski |
|
Current discussions: |
|
Overall Perl runtime implementation |
|
Asynchronous I/O |
|
Event Handling |
|
|
|
perl6-internals@perl.org and its sub-lists |
|
|
|
|
|
|
Licensing Working Group |
|
Chair: Bradley Kuhn |
|
Perl is intentionally dual-licensed |
|
Artistic + GPL |
|
Possible update to the Artistic License |
|
Larry’s decision is final |
|
|
|
http://www.gnu.org/philosophy/license-list.html |
|
|
|
|
|
|
|
|
Quality Assurance Working Group |
|
Chair: Michael Schwern |
|
Test Perl with CPAN code |
|
Test Perl5 to Perl6 translators |
|
Improve test coverage for Perl |
|
|
|
perl-qa@perl.org |
|
|
|
|
|
|
|
|
Language Design |
|
Larry Wall is the Language Designer |
|
RFC Proposals: |
|
Exception handling |
|
Type system |
|
Object system |
|
etc. |
|
Preliminary language spec in progress |
|
|
|
|
|
|
|
|
Document Repository |
|
Perl6 RFCs document user requests |
|
All discussion in public mailing lists |
|
All mailing lists archived |
|
Improvement over “someone said something about
this 3 years ago…” |
|
|
|
http://dev.perl.org/ |
|
|
|
|
|
|
|
Still To Do |
|
Language Design (Larry Wall) |
|
Prototype implementations |
|
Experimentation |
|
Testing and Optimization |
|
All development |
|
|
|
|
|
|
Perl6 Project: |
|
http://www.perl.org/perl6/ |
|
|
|
RFC Repository: |
|
http://dev.perl.org/rfc |
|
|
|
Mailing Lists: |
|
http://dev.perl.org/lists |
|
|
|