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

Date: 2003-Jan-14 00:00:00
To: various
Subject: The Year In Scripting Languages  Lua/Perl/Python/Ruby/Tcl 2002
From: Mitchell N Charity et al <langyear02@vendian.org>

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/
   9. 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.

   - Boost.Python version 2, a C++ library that enables seamless
     interoperability between C++ and Python
     http://www.boost.org/libs/python/doc/

   - Chandler, Mitch Kapor's foundation announced plans to develop
     a personal information manager written in Python
     http://www.osafoundation.org/

   - Leo, an outlining editor that doubles as a programmer's editor
     and a literate programming tool
     http://sourceforge.net/projects/leo/

   - Mailman 2.1, a mailing list manager
     http://www.list.org/

   - omniORBpy 2.0, a robust high performance CORBA ORB for Python
     http://omniorb.sourceforge.net/

   - Pyrex, a specialized language for writing C extension modules
     that extends Python with C datatype declarations
     http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/

   - Psyco 0.4.1, a specializing compiler for Python 
     http://psyco.sourceforge.net/

   - reStructuredText, the long-awaited markup language for Python
     docstrings and almost any other kind of text
     http://docutils.sourceforge.net/rst.html

   - Twisted 1.0, an event-driven networking framework
     http://twistedmatrix.com/

   - Wing IDE 1.1 and up, a development environment for Python
     http://wingide.com/

   - wxPython, a cross platform GUI toolkit based on wxWindows
     http://wxpython.org/

   - Zope 2.5, 2.6, and an alpha release of Zope 3
     an application server specializing in content management
     http://www.zope.org/

  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