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.
[This page was derived from this email message, formerly here.]
2002 was a very busy year for Lua . 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 , 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 . Up to now we had our own license , very similar to but not identical to the zlib license  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, especially in the industry, to choose Lua without being concerned with legal matters.
The active participation of the Lua community -- both in the mailing list and in the lua-users wiki  -- 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  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  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  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 , 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, especially 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.
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 , 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  which allows to embed Perl into a web server.
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 ), 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 , newsgroups in the comp.lang.perl.* hierarchy, news and weblogs , help and idea sharing for beginners and for gurus at perlmonks , and I'm sure I'm forgetting a load of resources. There are also two noticeable high-quality publications : the Perl Review  and the Perl Journal .
In the real world, numerous Perl users groups (known as the Perl mongers ) 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 , that will continue in 2003, and the funding of the Perl 6 core team through the Perl Foundation  (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  for Perl 6 and Parrot (Parrot being the future Perl 6 virtual machine) and on use.perl  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.
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.
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
Dr. Dobb's (weekly) Python URL
Daily Python URL
Ruby  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  (for embedding Ruby code directly into HTML documents), Amrita  (an alternative that uses templates to cleanly separate logic and presentation) and complete site-development frameworks like CGIKit  and ILE . The mod_ruby  module for Apache is also fast and stable.
The quest for improved performance also sparked a number of new Ruby projects. There are now several virtual machine (VM) development efforts, including Cardinal  (a Ruby front-end to Parrot), JRuby  (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  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.
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 , a rock-solid, object oriented automated unit testing framework will be included in the standard distribution. Another planned addition is REXML , 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).
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 , 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.
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  is an online catalog of Ruby libraries and extension modules. The Ruby Weekly News  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  are available as well. Finally, an important resource for Ruby developers is the Ruby Garden . 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 .
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
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 , 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 .
The Tcl community continues to be an active and vibrant group of very diverse characters, supported by a number of forums:
The last year saw the continued use of Tcl/Tk in a very wide variety of applications (both Open Source and commercial), including:
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.
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.
Notes: Doables: Add traffic sketch. History: 2003-Jan-16 History and rest of page footer added. Replaced PRE formatted version with normal html. Changes: Modified second paragraph. Two spelling corrections. "Notes". Removed "feel free to forward email" paragraph. 2003-Jan-16 Stub page replaced by full. Off mirrors. 2003-Jan-14 Email sent. 2003-Jan-13 Stub page ready. Full page up on mirrors. Reflector works.