<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>
 <properties>
  <title>Home</title>
  <author email="commons-dev@jakarta.apache.org">Commons Documentation Team</author>
 </properties>
<body>
<!-- ================================================== -->
<section name="Commons Lang Release History">

<table>
<tr><th>Version</th><th>Release date</th><th>Javadoc</th><th>Release notes</th></tr>
<tr><td>2.3</td><td>Pending</td><td><a href="api-2.3/">api-2.3</a></td><td><a href="upgradeto2_3.html">release notes for 2.3</a></td></tr>
<tr><td>2.2</td><td>04/Oct/06</td><td><a href="api-2.2/">api-2.2</a></td><td><a href="upgradeto2_2.html">release notes for 2.2</a></td></tr>
<tr><td>2.1</td><td>13/Jun/06</td><td><a href="api-2.1/">api-2.1</a></td><td><a href="upgradeto2_1.html">release notes for 2.1</a></td></tr>
<tr><td>2.0</td><td>02/Sep/03</td><td><a href="api-2.0/">api-2.0</a></td><td><a href="upgradeto2_0.html">release notes for 2.0</a></td></tr>
<tr><td>1.0.1</td><td>25/Nov/02</td><td><a href="api-1.0.1/">api-1.0.1</a></td><td><a href="http://archive.apache.org/dist/jakarta/commons/lang/old/v1.0.1/RELEASE-NOTES.txt">release notes for 1.0.1</a></td></tr>
<tr><td>1.0</td><td>04/Oct/02</td><td><a href="api-1.0/">api-1.0</a></td><td><a href="http://archive.apache.org/dist/jakarta/commons/lang/old/v1.0/RELEASE-NOTES.txt">release notes for 1.0</a></td></tr>
</table>

</section>
<!-- ================================================== -->
</body>
</document>
