Upload
liliana-hesketh
View
228
Download
0
Tags:
Embed Size (px)
Citation preview
Perl6 Update
• Background
• Summary of Perl5
• State of Perl5
• Goals for Perl6
• Perl6 Status Update
Agenda
Perl6 Update
• First public release: Dec 18, 1987
• Maintained by Larry Wall
• Perl5 released Dec 19, 1994
• Currently maintained by perl5-portersPerl 5.6.x: Gurusamy Sarathy (ActiveState)
Perl 5.7.x: Jarkko Hietaniemi
Background – Perl1 to Perl4
Perl6 Update
• Widely adopted by sysadmins
• Well suited for CGI programming
• Extensible:– Databases (ingperl, oraperl, sybperl)– Graphical Applications (tkperl)
• Code Forking, Maintenance issues
Background – Perl4 (cont’d)
Perl6 Update
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)
Perl6 Update
Perl as a Postmodern Language– “It’s all good”– Support many paradigms
• Functional• Object-Oriented• Procedural
– Whatever gets the job done […]
Background (cont’d)
Perl6 Update
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: [email protected]
Perl5 Summary
Perl6 Update
Extend beyond Perl4:– CPAN
• Thousands of open-source Perl modules
– Platforms• Most UNIX variants• Win32• MacOS, BeOS, Amiga• […]
Perl5 Summary (cont’d)
Perl6 Update
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)
Perl5 Summary (cont’d)
Perl6 Update
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
Perl6 Update
New work: Perl Compiler (experimental)
– Perl to C – Perl to Java– Perl to Perl– Perl to Bytecode– Code Analysis
State of Perl5 (cont’d)
Perl6 Update
New Technology since 1994– XML– XSL, XSLT– LDAP– WebDAV– Jabber, Napster, SOAP, P2P
etc.
State of Perl5 (cont’d)
Perl6 Update
Problems with Perl– Rate of technology adoption– Java, Python, Ruby, C#, etc.– Module dependencies (DLL Hell)
– Complex source code– Community growth
State of Perl5 (cont’d)
Perl6 Update
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
Perl6 Update
2) “Perl is a Great Tool for text hacking”– Unicode– XML– Regular Expressions– Strings as first-class data– Many approaches to useunpack(), tr//, s///, …
Goals for Perl6
Perl6 Update
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)
Perl6 Update
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)
Perl6 Update
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)
Perl6 Update
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)
Perl6 Update
7) Technology Update– Unicode– Concurrency– Event model– Asynchronous I/O– Signals– Optional strong typing
Goals for Perl6 (cont’d)
Perl6 Update
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)
Perl6 Update
9) Community Involvement– Yet Another Society– Damian Conway Grant
Parse::Perl
Perl5 to Perl6 translator
– Prototype Perl6 with Perl5
Goals for Perl6 (cont’d)
Perl6 Update
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
Goals for Perl6 (cont’d)
Perl6 Update
RFC Process:– Lots of ideas– Larry reviewing each submission– Original ETA: October 16, 2000– Current ETA: Real Soon Now
Perl6 Status Update
Perl6 Update
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)
Perl6 Update
Language Working Group– Chair: Kirrily Robert– Keep discussion focused– Generate ideas/RFCs about language
changes– Create ad-hoc subgroups as needed
[email protected] and its sub-lists
Perl6 Status Update (cont’d)
Perl6 Update
Internals Working Group– Chair: Dan Sugalski– Current discussions:
• Overall Perl runtime implementation• Asynchronous I/O• Event Handling
[email protected] and its sub-lists
Perl6 Status Update (cont’d)
Perl6 Update
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)
Perl6 Update
Quality Assurance Working Group– Chair: Michael Schwern– Test Perl with CPAN code– Test Perl5 to Perl6 translators– Improve test coverage for Perl
Perl6 Status Update (cont’d)
Perl6 Update
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)
Perl6 Update
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)
Perl6 Update
Still To Do– Language Design (Larry Wall)
– Prototype implementations– Experimentation– Testing and Optimization– All development
Perl6 Status Update (cont’d)