Notes
Outline
Slide 1
Perl6 Update
Adam Turoff
ActiveState
January 31, 2001
LinuxWorld NY 2001
Agenda
Background
Summary of Perl5
State of Perl5
Goals for Perl6
Perl6 Status Update
Background – Perl1 to Perl4
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
Background – Perl4  (cont’d)
Widely adopted by sysadmins
Well suited for CGI programming
Extensible:
Databases  (ingperl, oraperl, sybperl)
Graphical Applications (tkperl)
Code Forking, Maintenance issues
Background  (cont’d)
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
Background  (cont’d)
Perl as a Postmodern Language
“It’s all good”
Support many paradigms
Functional
Object-Oriented
Procedural
Whatever gets the job done […]
Perl5 Summary
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
Perl5 Summary (cont’d)
Extend beyond Perl4:
CPAN
Thousands of open-source Perl modules
Platforms
Most UNIX variants
Win32
MacOS, BeOS, Amiga
[…]
Perl5 Summary (cont’d)
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)
State of Perl5
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…
State of Perl5 (cont’d)
New work: Perl Compiler (experimental)
Perl to C
Perl to Java
Perl to Perl
Perl to Bytecode
Code Analysis
State of Perl5 (cont’d)
New Technology since 1994
XML
XSL, XSLT
LDAP
WebDAV
Jabber, Napster, SOAP, P2P
etc.
State of Perl5 (cont’d)
Problems with Perl
Rate of technology adoption
Java, Python, Ruby, C#, etc.
Module dependencies (DLL Hell)
Complex source code
Community growth
Goals for Perl6
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
Goals for Perl6 (cont’d)
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///, …
Goals for Perl6 (cont’d)
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
Goals for Perl6 (cont’d)
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
Goals for Perl6 (cont’d)
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
Goals for Perl6 (cont’d)
6) Clean up the implementation
microperl: replace make, metaconfig
nanoperl: Embedded systems, PalmOS?
femtoperl: Phones?
New targets: JVM, .NET, byteperl
SecurePerl?
Goals for Perl6 (cont’d)
7) Technology Update
Unicode
Concurrency
Event model
Asynchronous I/O
Signals
Optional strong typing
Goals for Perl6 (cont’d)
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
Goals for Perl6 (cont’d)
9) Community Involvement
Yet Another Society
Damian Conway Grant
Parse::Perl
Perl5 to Perl6 translator
Prototype Perl6 with Perl5
Goals for Perl6 (cont’d)
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
Perl6 Status Update
RFC Process:
Lots of ideas
Larry reviewing each submission
Original ETA: October 16, 2000
Current ETA: Real Soon Now
Perl6 Status Update (cont’d)
Project Organization
Nathan Torkington: interim Project Manager
Multiple, focused working groups
Working Group chairs
All work in public email lists
Perl6 Status Update (cont’d)
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
Perl6 Status Update (cont’d)
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
Perl6 Status Update (cont’d)
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
Perl6 Status Update (cont’d)
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
Perl6 Status Update (cont’d)
Language Design
Larry Wall is the Language Designer
RFC Proposals:
Exception handling
Type system
Object system
etc.
Preliminary language spec in progress
Perl6 Status Update (cont’d)
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/
Perl6 Status Update (cont’d)
Still To Do
Language Design (Larry Wall)
Prototype implementations
Experimentation
Testing and Optimization
All development
Perl6 Resources
Perl6 Project:
http://www.perl.org/perl6/
RFC Repository:
http://dev.perl.org/rfc
Mailing Lists:
http://dev.perl.org/lists