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