34

Perl6 Update

  • Upload
    haruki

  • View
    34

  • Download
    1

Embed Size (px)

DESCRIPTION

Perl6 Update. Adam Turoff ActiveState January 31, 2001 LinuxWorld NY 2001. 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 - PowerPoint PPT Presentation

Citation preview

Page 1: Perl6 Update
Page 2: Perl6 Update

Perl6 Update

Adam TuroffActiveState

January 31, 2001

LinuxWorld NY 2001

Page 3: Perl6 Update

Perl6 Update

• Background• Summary of Perl5• State of Perl5• Goals for Perl6• Perl6 Status Update

Agenda

Page 4: Perl6 Update

Perl6 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

Background – Perl1 to Perl4

Page 5: Perl6 Update

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)

Page 6: Perl6 Update

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)

Page 7: Perl6 Update

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)

Page 8: Perl6 Update

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

Page 9: Perl6 Update

Perl6 Update

Extend beyond Perl4:– CPAN

• Thousands of open-source Perl modules– Platforms

• Most UNIX variants• Win32• MacOS, BeOS, Amiga• […]

Perl5 Summary (cont’d)

Page 10: Perl6 Update

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)

Page 11: Perl6 Update

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

Page 12: Perl6 Update

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)

Page 13: Perl6 Update

Perl6 Update

New Technology since 1994– XML– XSL, XSLT– LDAP– WebDAV– Jabber, Napster, SOAP, P2P

etc.

State of Perl5 (cont’d)

Page 14: Perl6 Update

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)

Page 15: Perl6 Update

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

Page 16: Perl6 Update

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

Page 17: Perl6 Update

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)

Page 18: Perl6 Update

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)

Page 19: Perl6 Update

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)

Page 20: Perl6 Update

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)

Page 21: Perl6 Update

Perl6 Update

7) Technology Update– Unicode– Concurrency– Event model– Asynchronous I/O– Signals– Optional strong typing

Goals for Perl6 (cont’d)

Page 22: Perl6 Update

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)

Page 23: Perl6 Update

Perl6 Update

9) Community Involvement– Yet Another Society– Damian Conway Grant

Parse::PerlPerl5 to Perl6 translator

– Prototype Perl6 with Perl5

Goals for Perl6 (cont’d)

Page 24: Perl6 Update

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)

Page 25: Perl6 Update

Perl6 Update

RFC Process:– Lots of ideas– Larry reviewing each submission– Original ETA: October 16, 2000– Current ETA: Real Soon Now

Perl6 Status Update

Page 26: Perl6 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)

Page 27: Perl6 Update

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)

Page 28: Perl6 Update

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)

Page 29: Perl6 Update

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)

Page 30: Perl6 Update

Perl6 Update

Quality Assurance Working Group– Chair: Michael Schwern– Test Perl with CPAN code– Test Perl5 to Perl6 translators– Improve test coverage for Perl

[email protected]

Perl6 Status Update (cont’d)

Page 31: Perl6 Update

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)

Page 32: Perl6 Update

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)

Page 33: Perl6 Update

Perl6 Update

Still To Do– Language Design (Larry Wall)

– Prototype implementations– Experimentation– Testing and Optimization– All development

Perl6 Status Update (cont’d)

Page 34: Perl6 Update

Perl6 Update

Perl6 Project:http://www.perl.org/perl6/

RFC Repository:http://dev.perl.org/rfc

Mailing Lists:http://dev.perl.org/lists

Perl6 Resources