The Year In Scripting Languages Lua/Perl/Python/Ruby/Tcl 2002

This is a joint review of 2002 for the programming languages
Lua, Perl, Python, Ruby, and Tcl.

It was a cooperative effort by people from the five communities.
An HTML version is available at http://www.vendian.org/language_year/ .


Lua in 2002

2002 was a very busy year for Lua [1]. A major new version (5.0) was
discussed, planned, implemented, and released in alpha and beta
versions. We also saw a marked increase of the size and participation
of the Lua community. Details on this and other events that happened
to Lua in 2002 follow.

  • Work on a new version
    The plans for a new version (4.1) and their discussion in the
    mailing list [2], which had officially started with the release of
    an alpha version in July 2001 and several work versions since then,
    finally converged to a comprehensive mature proposal for Lua 5.0 in
    April. An alpha version was released in August and a beta version
    was released on December; the final version of Lua 5.0 expected to
    be released by February 2003. Lua 5.0 is an important step in the
    evolution of Lua (hence the leap from 4.0 directly to 5.0). Lua 5.0
    includes several new features, such as lexical scoping, Lua
    coroutines and support for external multithreading and coroutines,
    metatables and metamethods, fine control of global name resolution,
    tail calls, fast register-based virtual machine, safe
    garbage-collector metamethods, new error handling protocol, and
    more. All this is of course done respecting our design goals:
    simplicity, efficiency, portability, and low embedding cost.

  • Choosing a new license
    Starting with Lua 5.0, Lua will be released under the MIT license
    [3]. Up to now we had our own license [4], very similar to but not
    identical to the zlib license [5] and others. The community pointed
    to us that the license was sometimes a source of confusion and
    misunderstanding. So we decided that having a standard license would
    clear the issue and allow more people, specially in the industry, to
    choose Lua without being concerned with legal matters.

  • Community participation
    The active participation of the Lua community – both in the mailing
    list and in the lua-users wiki [6] – was an important ingredient in
    making all this happen. The community is also organizing itself.
    Since May, it maintains a web interface to the mailing list archive
    [7] that can be searched and also referred to in lua-l: postings now
    have a permanent link and this helps to answer recurring
    questions. This web interface is much faster than the one at Yahoo
    Groups that exists since March 1999 (and also has no annoying
    ads). A newsgroup interface to the mailing list [8] was created at
    gname.org in July by their own initiative.

    The mailing list remains the premier forum for discussing Lua. It
    has now over 700 subscribers (435 direct subscribers plus 284
    registered at Yahoo Groups). Novice and experts participate
    actively in the discussions, which are instructive and friendly.

    The wiki at lua-users also experienced a marked growth in 2002 and
    is becoming a major source of detailed technical information about
    Lua, some of it distilled and condensed from lua-l postings. Many
    people contributed new pages, corrected and expanded existing ones,
    and helped to maintain several pages moved from www.lua.org. The
    wiki also now contains the details and implementations of feature
    proposals. As intended when it was launched, the wiki has become
    the ideal companion for the mailing list.

    A small part of the community got together in person in February, at
    a Lua Library Design Workshop [9] held at Harvard University. The
    move in Lua 5.0 to namespaces in libraries was one consequence of
    this meeting. The workshop also provided an opportunity to meet
    Roberto Ierusalimschy [10], Lua’s chief architect.

  • Lua in 2003
    2003 will bring the official release of Lua 5.0 and also probably
    Lua 5.1, at least in work stage. Our main focus in Lua 5.1 is the
    implementation of incremental garbage collection to replace the
    current atomic mark-and-sweep. The need for this was identified by
    the community, specially those using Lua for games. We shall
    probably also see a new draft of the long-waited Lua book by
    Roberto, updated for Lua 5.

  • References

    1. http://www.lua.org/
    2. http://www.lua.org/lua-l.html
    3. http://www.lua.org/license.html
    4. http://www.lua.org/copyright.html
    5. http://www.opensource.org/licenses/zlib-license.html
    6. http://lua-users.org/wiki/
    7. http://lua-users.org/lists/lua-l/
    8. http://news.gmane.org/thread.php?group=gmane.comp.lang.lua.general
    9. http://lua-users.org/wiki/LuaLibraryWorkshop
    10. http://www.lua.org/authors.html

Perl

While 2002 was a year during which the Perl 6 design development process
grown up, Perl 5 was not left behind. A new major version, Perl 5.8.0, was
released, introducing major features.

  • Perl 5.8.0 released

    Perl 5.8.0 was released after more than two years of work. Among its new
    features [1], the most important ones are a full support for Unicode, a
    new implementation of threads, a completely reworked I/O subsystem, and
    support for 64-bit architectures. This release was also a personal win
    from the point of view of the Perl developers, because it was extensively
    tested, due to a much improved test suite, and to volunteers to run it on
    a daily basis on a wide range of OSes and configurations.

    There’s also more in Perl than Perl itself. Numerous projects based on
    Perl have also started or have significantly evolved. Among them, I have
    to mention at least the popular mod_perl Apache module [2] which allows
    to embed Perl into a web server.

  • The Community

    The Perl community is so dynamic and well-organized that I can’t choose
    where to begin. Well, the spinal nerve of this community is probably the
    Comprehensive Perl Archive Network (or CPAN [3]), central repository for
    a whole universe of Perl modules. But the community is organized among
    several axes : on Internet, you’ll find an extensive set of mailing lists
    [4], newsgroups in the comp.lang.perl.* hierarchy, news and weblogs [5],
    help and idea sharing for beginners and for gurus at perlmonks [6], and
    I’m sure I’m forgetting a load of resources. There are also two
    noticeable high-quality publications : the Perl Review [7] and the Perl
    Journal [8].

    In the real world, numerous Perl users groups (known as the Perl mongers
    [9]) have succeeded in cementing this community as well as promoting the
    language. Among the factual successes are the organization of the Yet
    Another Perl Conferences [9], that will continue in 2003, and the funding
    of the Perl 6 core team through the Perl Foundation [10] (Perl 6 being
    the next major step in Perl, redesigned and reimplemented from the ground
    up).

  • Perl 5 in 2003

    The development version of Perl (5.9.0) is being actively worked on, and
    development releases are to be expected, as well as a new maintenance
    release, Perl 5.8.1, aimed at fixing the most outstanding bugs discovered
    in Perl 5.8.0. Currently, it appears that those bugs pertain (quite
    logically) to the newest features : threads and Unicode. The to-do lists
    are not small, and, with the start of the Perl 6 project, Perl needs
    contributors more than ever : as a popular saying reminds us, patches are
    welcome.

    If you want to follow what’s happening in the world of Perl development,
    you can read the weekly summaries of the developers’ mailing lists,
    published on perl.com [11] for Perl 6 and Parrot (Parrot being the future
    Perl 6 virtual machine) and on use.perl [5] for Perl 5.

    In the process we hope to bring Perl to higher levels to maturity, and to
    have fun. At least that’s how the future looks from there.

  • References

    1. http://dev.perl.org/perl5/news/2002/07/18/580ann/
    2. http://perl.apache.org/
    3. http://cpan.org/
    4. http://lists.perl.org/
    5. http://use.perl.org/
    6. http://www.perlmonks.org/
    7. http://www.theperlreview.com/
    8. http://www.tpj.com/
    9. http://www.yapc.org/
    10. http://www.perl-foundation.org/
    11. http://www.perl.com/

Python: Year in Review

The Python community spent a good part of 2002 learning how to use
new-style classes, introduced with Python 2.2, and polishing their
implementation with a couple of maintenance releases. We also
released an alpha version of Python 2.3 on the last day of the year.

  • Python 2.2 released

    The major new feature of Python 2.2, which was actually released just
    before Christmas 2001, is new-style classes. This feature eliminates
    many of the differences between Python’s builtin types (list, dict,
    &c.) and user-defined types implemented with class statements. It
    allows programmers to subclass builtin types in Python and makes it
    easier to define new classes in C.

    New-style classes introduced many subtle differences in class
    semantics and many new features for classes, including a super
    function, class and static methods, and properties. Backwards
    compatibility was addressed in a fairly clean way: Both new-style
    classes and so-called “classic” classes are available in the
    interpreter via different metaclasses. The classic metaclass is used
    unless the class inherits from the new builtin type “object” or
    explicitly declares its metaclass.

    See Guido van Rossum’s essay “Unifying types and classes in Python
    2.2” for a more thorough discussion of new-style classes.
    http://www.python.org/2.2.2/descrintro.html

    There were four maintenance releases during the calendar year. The
    currently recommended versions of Python are 2.2.2 and 2.1.3. The
    2.2.2 release seems to be quite stable, with more than 100 bugs fixed
    since the original 2.2 release. The 2.1.x releases this year fixed a
    few critical bugs.

  • Python in 2003

    The goals for Python 2.3 are modest compared to new-style classes.
    The alpha release on Dec. 31 introduced only minor language changes,
    like a new boolean type. Most of the improvements are to the standard
    library, including a new BerkeleyDB interface, a logging module styled
    after log4j, a family of new datetime types, a pair of set types, and
    a new random number generator (Mersenne Twister). The module import
    mechanism was also improved, with a new set of hooks and support for
    zip archives.

    The custom object allocator, which has been an optional, compile-time
    feature for a couple of releases, has been enabled by default for
    2.3. It is a fast, special-purpose allocator for small blocks that
    sits on top of the platform malloc. It saw a major overhaul to
    improve stability and performance between 2.2 and 2.3

    See Andrew Kuchling’s “What’s New in Python 2.3” document for more
    information about the release.
    http://www.python.org/doc/2.3a1/whatsnew/

    One reason (among many) for the more modest goals of Python 2.3 is a
    sense in the community that the language is changing too quickly. The
    perception of a large or vocal part of the community is that
    stability, performance, and libraries will provide more benefit than
    new core language features. When Guido proposed the addition of a
    boolean type on comp.lang.python, the thread ran on for a couple of
    weeks and 375 messages with a vigorous opposition. It seems fair to
    observe, however, that many people believe that Python changes too
    quickly and that the new features they need are important enough to
    add anyway.

  • Notable developments

    The year saw a lot of development activity in the larger Python
    community. I’ve tried to include some highlights from important or
    interesting projects, but I’m sure there are omissions.

    Four Python conferences were held in 2002, including a couple of
    European conferences. Many new books were published including the
    well-regarded Python Cookbook and the first two books on Jython, the
    Java implementation of Python.

  • Keeping up with Python news

    Some valuable summarizes in increasing order of frequency:

    Bi-weekly summaries of python-dev mailing list
    http://www.python.org/dev/summary/

    Dr. Dobb’s (weekly) Python URL
    http://www.ddj.com/topics/pythonurl/

    Daily Python URL
    http://www.pythonware.com/daily/index.htm


Ruby.year(2002): A report from the Ruby community

Ruby [1] continued to delight its practitioners and, perhaps, tempt
those who work in other languages, throughout 2002. Increased traffic
on the ruby-talk mailing list suggests that more and more people from
around the world are discovering Ruby and the joys it brings to
programming, and visions of Ruby’s future have enthused Rubyists
everywhere.

  • Web Application Development with Ruby
    Web application development with Ruby is beginning to come into its own,
    and many web development tools achieved milestone stability releases.
    Web developers now have several options, including eRuby [2] (for
    embedding Ruby code directly into HTML documents), Amrita [3] (an
    alternative that uses templates to cleanly separate logic and
    presentation) and complete site-development frameworks like CGIKit [4]
    and ILE [5]. The mod_ruby [2] module for Apache is also fast and stable.

  • Virtual Machines
    The quest for improved performance also sparked a number of new Ruby
    projects. There are now several virtual machine (VM) development
    efforts, including Cardinal [6] (a Ruby front-end to Parrot), JRuby [7]
    (a Java implementation of the Ruby interpreter) and an as-yet-unnamed VM
    that Matz, the creator of Ruby, and his co-conspirators are keeping
    a closely guarded secret.

  • Improved Support for Windows and Mac OS X
    A lot of focus has been placed on enhancing Ruby’s usability with
    non-Unix operating systems. The Ruby distribution for Windows [8]
    includes many popular Ruby extensions, as well as an HTML Help version
    of Thomas and Hunt’s Programming Ruby, providing a very easy way for
    users to get up and running with either the stable or development
    release of Ruby. Also, beginning with the 10.2 (Jaguar) release, Ruby is
    now a standard part of the Mac OS X operating system.

  • New Versions
    The year ended with the release of Ruby 1.6.8, which is promised to be
    the last release in the 1.6.x series. The end of 2002 also saw a
    “preview” release of Ruby 1.8. In addition to enhancements in the Ruby
    language itself, the upcoming 1.8 release will incorporate several new
    modules into Ruby’s standard library. Test::Unit [9], a rock-solid,
    object oriented automated unit testing framework will be included in the
    standard distribution. Another planned addition is REXML [10], a clean
    and intuitive XML processing library.

  • Ruby in Print
    There were many signs of the rising popularity of Ruby in 2002. A number
    of new English language books, such as Ruby in a Nutshell (Yukihiro
    Matsumoto), Teach Yourself Ruby in 21 Days (Mark Slagell), The Ruby Way
    (Hal Fulton) and Ruby Developer’s Guide (Michael Neumann, Robert Feldt
    and Lyle Johnson), were published this year. In Japan, an additional 11
    Ruby books were published (bringing the total in Japanese to 27).

  • Ruby Conference
    A notable event was the second annual Ruby Conference, held in
    November 2002 in Seattle, WA, USA. There were about fifteen
    presentations, as well as a keynote speech by Matz. Slides of those
    talks are available online at
    http://www.zenspider.com/Languages/Ruby/RubyConf2002/ .

  • Ruby in 2003
    The upcoming year promises a number of exciting new developments. In
    addition to the previously mentioned Ruby 1.8, one of the most eagerly
    anticipated projects is FreeRIDE [11], a powerful cross-platform IDE for
    Ruby. This software is being designed and built by a large group of
    volunteers and is itself a great testimony to the strong spirit of the
    Ruby community.

  • Challenges
    In addition to the many successes, we as a community face a number of
    challenges. One is the need for better documentation and documentation
    tools. A related problem that a good deal of the documentation for Ruby
    libraries is only available in Japanese, and as a result there is
    substantial interest in having English translations of those texts.
    Another challenge for the Ruby community is the need for more well
    defined methods of packaging and distribution for Ruby libraries and
    extension modules.

  • More about Ruby
    Ruby’s home page is the official source for downloads as well as
    information about CVS and mailing list access. The newly redesigned Ruby
    Application Archive [12] is an online catalog of Ruby libraries and
    extension modules. The Ruby Weekly News [13] is posted every week to the
    ruby-talk mailing list and provides a nice summary of what people are
    talking about. For a more comprehensive account, archives of the mailing
    list [14] are available as well. Finally, an important resource for Ruby
    developers is the Ruby Garden [15]. The Ruby Garden is a portal site
    that provides message boards, online polls and links to other popular
    Ruby web sites including the Ruby Garden Wiki [16].

  • References

    1. http://www.ruby-lang.org/
    2. http://www.modruby.net/
    3. http://www.brain-tokyo.jp/research/amrita/
    4. http://www.spice-of-life.net/download/cgikit/index_en.html
    5. http://virtualschool.edu/ile/
    6. http://www.rubygarden.org/ruby?CardinalProject
    7. http://jruby.sourceforge.net/
    8. http://rubyinstaller.sourceforge.net/
    9. http://testunit.talbott.ws/
    10. http://www.germane-software.com/software/rexml/
    11. http://www.rubyide.org/
    12. http://www.ruby-lang.org/raa/
    13. http://www.rubygarden.org/rurl/html/index.html
    14. http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml
    15. http://www.rubygarden.org/
    16. http://www.rubygarden.org/ruby?HomePage

Tcl

2002 was a significant year for the Tcl community - culminating in the
release of Tcl/Tk 8.4 after a long gestation period.

  • Tcl 8.4 released

    The 8.4 release includes a number of significant features, including

    • a new Virtual File System (VFS) layer that allows (in principle)
      filesystem activity to be diverted away from the native operating
      system to something else; drivers exist for a number of underlying
      “access methods”, including FTP, HTTP, Metakit, WebDAV, etc.
    • 64 bit support - both files and arithmetic, also on 32-bit systems
    • major performance improvements - 8.4 is the fastest Tcl version yet
    • enhanced thread support, stability, and performance
    • Unicode and I18N improvements
    • three new Tk widget types, most other widgets have been enhanced
    • native MacOS X Aqua support

    Details of these and other changes can be found at [1]. Or start your
    Tcl explorations from this new URL (redirect): http://www.tcl.tk/

    The other significant development in the Tcl world was in the area of
    portability and deployment. The introduction of VFS to the core enables
    Starkits [2], which provide easy single-file deployment of applications
    and packages (like Java jar files, but with more power). They can be
    interpreted using either Tclkit, a single file Tcl/Tk interpreter
    available on numerous platforms, or ActiveTcl, the ActiveState Tcl
    distribution. An archive of Starkits is available at [3].

  • The Community

    The Tcl community continues to be an active and vibrant group of very
    diverse characters, supported by a number of forums:

    • Tclers’ Wiki - over 3500 pages of useful information (mostly, but
      not exclusively) related to Tcl/Tk and associated technology [4]
    • Tclers’ Chat, typically with a number of Tcl “experts” online at
      most times - available by browser [5] or a tkchat application [6]
    • comp.lang.tcl newsgroup and mailing lists, see selection at [7]
    • Tcl-URL! - a summary of highlights posted weekly on comp.lang.tcl

    The Tcl community holds on to its tradition of welcoming both newbies
    and interaction with people from other language communities. A good
    starting point is the comp.lang.tcl newsgroup.

  • Notable developments

    The last year saw the continued use of Tcl/Tk in a very wide variety of
    applications (both Open Source and commercial), including:

    • ActiveTcl / TclDevKit / Komodo - Tcl/Tk core and tools development
      at ActiveState [8]
    • the Tcl/Tk Plugin - revival of web browser plugin based on Tcl/Tk
      8.4 and taking advantage of new features [9] and supporting both
      Internet Explorer and Mozilla (on a wide variety of platforms)
    • Tclkit - standalone single-file runtime with Tcl, Tk, Incrtcl,
      Metakit, TclVFS, zlib [11]
    • AOLServer - high-performance web/content server used by AOL [10]
    • Critcl - embedding C/C++ in Tcl, on-the-fly compiled or precompiled
      for easy deployment [12]
    • gnocl - is a GTK+ and Gnome extension that provides easy to use
      commands to quickly build GTK+ and Gnome compliant user interfaces,
      it interoperates with Tk [19]
    • InstallBase - a multi-platform GUI installer in Tcl/Tk and designed
      to work on Windows, Mac, and almost any flavor of UNIX / Linux [18]
    • MOODS - graphical monitoring application for Linux [13]
    • Privaria - a Secure, Firewall-Friendly Platform for Peer-to-Peer
      Networking [14]
    • SnackAmp - a multi-platform audio music (mp3, ogg ,wav …) player
      and organizer for large music collections [15]
    • TCLBridge - a powerful component designed to allow seamless
      integration of Tcl/Tk and any ActiveX capable language, such as
      Visual Basic 6 and any of the Microsoft .NET languages [16]
    • Toucan - a Desktop IDE for developing Palm OS applications [17]
    • Wikit - a wiki implementation used to power the Tclers’ Wiki, but
      also can be used to embed a wiki in applications for
      documentation/help [20]

    There are more applications and extensions than space to mention them.
    See news:comp.lang.tcl.announce for an overview.

  • Tcl in 2003

    2003 is likely to be a year of consolidation - Tcl/Tk 8.4.1 is out,
    solid, and becoming the standard Tcl version; plans for 8.5 and/or 9 are
    under consideration. The coming year is also likely to see more work in
    the area of repositories/archives, more interfaces to other languages
    for Tcl/Tk, and yet more platforms supported.

  • References

    1. http://www.tcl.tk/software/tcltk/8.4.html
    2. http://www.equi4.com/starkit
    3. http://mini.net/sdarchive/
    4. http://wiki.tcl.tk/
    5. http://mini.net/cgi-bin/chat.cgi
    6. http://wiki.tcl.tk/tkchat
    7. http://aspn.activestate.com/ASPN/Tcl/Mail
    8. http://www.activestate.com/Tcl
    9. http://tclplugin.sf.net/
    10. http://www.aolserver.com/
    11. http://www.equi4.com/tclkit
    12. http://www.equi4.com/critcl
    13. http://jfontain.free.fr/moodss/
    14. http://eepatents.com/privaria/
    15. http://snackamp.sourceforge.net/
    16. http://www.tclbridge.com/
    17. http://toucan.sourceforge.net/
    18. http://installbase.sourceforge.net/
    19. http://www.dr-baum.net/gnocl/
    20. http://wiki.tcl.tk/wikit

Thanks to the authors

Luiz Henrique de Figueiredo (Lua)
Rafael Garcia-Suarez (Perl)
Jeremy Hylton (Python)
The Ruby Community (Ruby)
Jeff Hobbs, Steve Landers, and Jean-Claude Wippler (Tcl)

Additional thanks to Piers Cawley, Jarkko Hietaniemi, Jeremy Hylton,
Lyle Johnson, Dan Sugalski, Greg Sullivan, and Jean-Claude Wippler.

A copy of this email is available at
http://www.vendian.org/language_year/

There are many useful and interesting languages not included here.
If you write a similar summary, I would be glad to include it on
the webpage. You might also consider similar collaborations
within other super-communities.

Please feel free to forward this email appropriately, but
I suggest you wait a day or so to avoid duplication.

Mitchell Charity