Changes in 1.2.6 release
60950 JSTL TransformSupport XSL import not finding relative path
57434 Race condition in EL1.0 validation

Changes in 1.2.5 release
- Set version identifiers correctly, no other changes.

Changes in 1.2.4 release (not released due to incorrect version numbers)

57673 AccessControlException accessing org.apache.taglibs.standard.xml.accessExternalEntity
37466 Reverted changes that overrode HTTP method when importing local resources.

Changes in 1.2.3 release

57560 Check protocol when resolving on older JREs
57549 Fix reference to old SNAPSHOT version of taglibs-build-tools in pom files.
57548 Update library version number printed by Version class
57547 Fix regression with running on older JREs

XML tags now enable FEATURE_SECURE_PROCESSING when parsing and transforming. The JSTL-specific
EntityResolver also checks the protocol being used against a white-list specified in the system
property org.apache.taglibs.standard.xml.accessExternalEntity in to order to limit access on
older JREs.

Changes in 1.2.2 release [WITHDRAWN due to regressions in older JREs]

57433 Double-check locking in ExpressionEvaluatorManager
57427 1.0 TLDs are missing from -compat jar
57289 XML factories should be located using the JSTL library's ClassLoader

Changes in 1.2.1 release
- Documentation cleanup

Major changes in 1.2.0 release
- Transitioned project from Apache Jakarta to Apache Tomcat
- Implementation of new functionality for JSTL 1.2; requires Java 1.5
- Switched to Maven-based build
- Renamed JARs and modified packaging structure; OSGI metadata added
- XML processing performance improved by direct use of Xalan

The following issues from Bugzilla (https://issues.apache.org/bugzilla) appear related.
However, due to the time since the last 1.1 release some issues may be missing or misclassified.

55608 fmt:bundle tag unnecessarily buffers body content
54544 Loop vars are not reset for fortoken with deferred expression
52637 Broken link
50674 Some maven pom improvments
50462 xalan import should not be optional in maven-bundle-plugin
50461 out tag's escapeXml attribute should be set as true by default
50414 tlv package cause another split package issue in impl and jstlel bundles
50266 Javadoc and import corrections
50265 FormatDateSupport.dateFormatCache lazy init is not safe
50264 Missing @Override annotations
50263 README_src.txt out of date
50250 Split package issue in impl and jstlel bundles
50064 bundle-ify the taglibs jars
49900 BundleSupport.release() does not call super.release() to clear bodyContent
49578 XPath handling only supports single reference to variable
49565 Findbugs: Util.specialCharactersRepresentation should be both final and package protected
49561 Remove proprietary URLEncoder
49554 Clean up Functions
49548 Refactoring SetSupport
49547 Minor performance enhancement in set result evaluation
49546 Add test cases for SetSupport
49542 IteratedValueExpression and IndexedValueExpression implementation
49534 ForEachSupport handles unsupported items inconsistently
49526 c:set does not remove variables from ELContext VariableMapper
49510 Remove dependency on classes copied from commons
48848 fn:endsWith fails with repeated search string
48773 DataSourceWrapper and DriverManager problems
48772 Bad information in impl module pom.xml
46086 javax.servlet.jsp.jstl.sql.ResultSupport.java silently swallows SQLException
45197 Need to support the JSTL 1.2 specification
45183 Starting from mysql JDBC connector 5.1.6 a wrong behavior
43831 Unexpected Result with mysql jdbc 5.1.5, column aliases not reported
43640 Move the tests package to JUnit
43544 LRUCache implementation not updated to match latest collections code
43393 x:out provokes an IllegalStateException if session is forbidden
41343 Build fails on OS X.
41221 Fix source headers in source
39480 calling getContextClassLoader without doPriv
39195 getRequestLocale could throw exception on JBOSS
39284 fn:endsWith('abcda', 'a') returns false
37466 c:import doesn't work with HEAD requests
37029 TLD Validation error for HTML "param" element
35216 x:forEach causes session scope exception
34109 <c:url> doesn't merge slashes at the boundary of "context" and "value"
33934 [standard] memory leak in jstl c:set tag
32896 Invalid endsWith function
30068 Wrong behaviour of x:out inside x:forEach
27717 <x:forEach> very slow in JSTL 1.1
17388 Result set created in query tag is never released + update tag
14465 position() and last() are critical
