<?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>13/Feb/07</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>
