XP VersionsScope of ChangeThe XP framework will have a version number and versioning guidelines. This version number will be present in the XP's runtime XAR's filename. Rationale
To easily be able to see when the framework changes. Functionality
BasicsThe version number will consist of three parts: X.X.X ^ ^ ^ | | Patch-level | Minor version Major version
Storage
The current version number is stored in a file in xp/trunk called
VERSION. XARsFor every version number starting as of version 4.0.0, a list of XARs will be created containing the version number in their filenames.
It is guaranteed that files from exact versions will always work together flawlessly. Patch-level versions will also be interopable, but minor versions may already introduce new inter-package dependencies and thus xars from one minor version may or may not work together. If xars from one major versions work together with another version it's only because you're lucky Guidelines for version numbersDefinition: The XP framework's core is lang.base.php, lang, io and util.
Version history0.0.1, released 2002-02-21: . Initial revision:
A /trunk/doc
A /trunk/doc/skeleton
A /trunk/doc/skeleton/cart.php
A /trunk/doc/skeleton/domain
A /trunk/doc/skeleton/domain/getdescr.php
A /trunk/doc/skeleton/domain/isfree.test.php
A /trunk/doc/skeleton/domain/sybinit.err
A /trunk/doc/skeleton/net
A /trunk/doc/skeleton/net/portal.php
A /trunk/doc/skeleton/order.php
A /trunk/doc/skeleton/order_idea.php
A /trunk/doc/skeleton/trycatch.php
A /trunk/doc/skeleton/xpath.php
A /trunk/doc/skeleton/xpath.xml
A /trunk/skeleton
A /trunk/skeleton/lang
A /trunk/skeleton/lang/Exception.class.php
A /trunk/skeleton/lang/Object.class.php
A /trunk/skeleton/lang.base.php
A /trunk/skeleton/net
A /trunk/skeleton/net/NetException.class.php
A /trunk/skeleton/net/Socket.class.php
A /trunk/skeleton/net/ftp
A /trunk/skeleton/net/ftp/FTPConnect.class.php
A /trunk/skeleton/net/http
A /trunk/skeleton/net/http/HTTPRequest.class.php
A /trunk/skeleton/net/session
A /trunk/skeleton/net/session/ToolSession.class.php
A /trunk/skeleton/rdbms
A /trunk/skeleton/rdbms/DBConnectionPool.class.php
A /trunk/skeleton/rdbms/sybase
A /trunk/skeleton/rdbms/sybase/SPSybase.class.php
A /trunk/skeleton/util
A /trunk/skeleton/util/Binford.class.php
A /trunk/skeleton/util/LOG.class.php
A /trunk/skeleton/util/Properties.class.php
A /trunk/skeleton/util/cmd
A /trunk/skeleton/util/cmd/SingleProcess.class.php
A /trunk/skeleton/xml
A /trunk/skeleton/xml/Node.class.php
A /trunk/skeleton/xml/OutputDocument.class.php
A /trunk/skeleton/xml/Tree.class.php
A /trunk/skeleton/xml/XML.class.php
A /trunk/skeleton/xml/XMLParser.class.php
A /trunk/skeleton/xml/XPath.class.php
A /trunk/skeleton/xml/XSLProcessor.class.php
A /trunk/skeleton/xml/XSelect.class.php
A /trunk/skeleton/xml/editor
A /trunk/skeleton/xml/editor/Part.class.php
A /trunk/skeleton/xml/form
A /trunk/skeleton/xml/form/Wizard.class.php
A /trunk/skeleton/xml/soap
A /trunk/skeleton/xml/soap/SOAPEnvelope.class.php
A /trunk/skeleton/xml/soap/SOAPRequestFactory.class.php
A /trunk/skeleton/xml/soap/SOAPSyncRequest.class.php
A /trunk/skeleton/xml/soap/WSDLNode.class.php0.1.0, released 2002-03-27: . import --> uses 0.2.0, released 2002-05-07: . util.log.API . Core functionality cast() . rdbms APIs return datetimes as Date objects 0.2.1, released 2002-06-28: . Various util.Properties enhancements
create()
exists()
reset()
readArray()
readFloat()
hasSection()
writeSection()
writeString()
writeInteger()
writeFloat()
writeBool()
writeArray()
writeComment()0.2.2, released 2002-10-20: . New Imaging API 0.3.0, released 2002-11-12: . Initial revision of lang.XPClass 0.4.0, released 2002-12-10: . rdbms API: DSNs . Add finally() 0.4.1, released 2003-02-17: . Remove long-time deprecated util.LOG class 0.5.0, released 2003-04-25: . Use var_export() instead of serialize in default toString method to
make a more readable presentation0.6.0, relased 2003-05-25: . rdbms APIs: Add support for persistent connections . rdbms APIs: Remove affected() and numrows() . lang.Thread: Initial release . Make XPClass::newInstance pass arguments to new 0.6.0, released 2003-06-01: . Unittest API . Implement debug_backtrace support for exceptions 0.7.0, released 2003-06-09: . util.Date::isBefore() and isAfter() methods 1.0.0, released 2003-06-23: . No more support for PHP < 4.3.0 . There is now a common subclass for Errors and Exceptions called Throwable . An exceptions stacktrace is an array of lang.StackTraceElement objects . Exception::getStackTrace() returns this array and no longer a string . Removes Object::getName() which has been deprecated for a while now . Uses xp::registry to keep the global namespace free of bullshit 1.0.1, released 2003-06-26: . Show max. up until the first \n in exception stacktraces 1.0.2, released 2003-07-10: . rename [Database].class.php into [Database]Connection.class.php 1.1.0, released 2003-08-25: . lang.NullPointerException - initial release . Add the core feature of SAPIs 1.2.0, released 2003-09-14: . Add xp::typeOf core functionality
. Add core functionality xp::gc()
. Remove (unused) lang.ExternalClassLoader
. Add file.separator and path.separator system properties
. Prefix transactions with "xp_" so there is no problem
with reserved words.2.0.0, released 2003-09-21: . Implement interfaces . Remove check for debug_backtrace() existance (requires 4.2 compat SAPI) . Add method hashCode() which will return a unique id for every object . Add method equals() . Add method clone() . util.Configurable, util.log.Traceable interfaces . Made RuntimeException an Error 2.0.1, released 2003-09-27: . Newly introduced SQLConnectException, SQLStateException and
SQLStatementFailedException, all being subclasses of SQLException2.1.0, released 2003-10-18: . Introduce core function "delete" 2.2.0, released 2003-11-16: . Add "with" syntactic sugar. 2.2.1, released 2004-01-04: . rdbms APIs: prepare("where news_id in (%d)", array(1, 2, 3)) will
result in "where news_id in (1, 2, 3)"2.3.0, released 2004-01-16: . Remove ability to use ClassLoader statically . Change XPClass::getMethods() to return an array of lang.Method objects . Change XPClass::getMethods() not to return constructor and destructor . Add method XPClass::getConstructor() . Fix XPClass::getParentclass() so that it returns NULL if there is no parent . Add method XPClass::isSubclassOf() . Add method XPClass::isInstance() . Add method XPClass::isInterface() . Add method XPClass::getInterfaces() . Add core functionality xp::null() 2.3.1, released 2004-03-02: . Add method ClassLoader::findClass() 2.4.0, released 2004-04-10: . Add support for inheriting interfaces
. Use the tokenizer to accomplish full-featured method reflection
. getModifiers() - returns a bitfield of modifiers (public, private, protected,
abstract, final, static)
. getModifierNames() - same, but as an array of strings.
. getArguments() - returns an array of method arguments (lang.reflect.Argument)
. getReturnType() - returns the return type as string
. getExceptionNames() - returns thrown exceptions as an array of fully
qualified class names
. getExceptionTypes() - same, but as an array of lang.XPClass objects2.5.0, released 2004-04-18: . Make uses() fail with a fatal error in case one of the classes in
its list is not found (or can not be loaded due to other reasons).2.5.1, released 2004-05-13: . Fix rdbms statement tokenizer for %% or unknown tokens (e.g. %X) 2.6.0, released 2004-06-07: . Remove Object::__construct(), it is deprecated for forward compatibility
reasons2.6.1, released 2004-07-06: . Remove Object::clone() in favor of new core functionality clone() . Add method hasConstructor() . Return NULL from getConstructor() if no constructor exists 2.6.2, released 2004-07-16: . DBConnection now extends util.Observable, no longer implements util.Traceable,
util.log.LogObserver is introduced to be an Observer that log the database
activity.2.7.0, released 2004-08-31: . Support static initializers in classes. 2.7.1, released 2004-09-21: . Add support for dates beyond unix timestamp 2.8.0, released 2004-11-10: . Add core function xp::stringOf() 2.9.0, released 2005-01-25: . RFC #0005: Add method ClassLoader::defineClass() . RFC #0011: Changes to Peer/DataSet/Criteria API . RFC #0014: Add core function raise() 3.0.0, released 2005-03-01: . RFC #0016: Method and class annotations . RFC #0017: Webservices metadata . RFC #0020: Unit tests metadata 3.0.1, released 2005-03-31: . RFC #0021: Add support for multi-line annotations 3.0.2, released 2005-04-08: . lang.reflect.Proxy: First useable release 3.0.3, released 2005-05-29: . RFC #0025: Replace text.apidoc with new API . Add method Method::getArgument() which retrieves an argument by a given position . Add method Method::numArguments() which returns the number of arguments 3.0.4, released 2005-07-20: RFC #0019: LDAP query infrastructure 3.0.5, released 2005-09-01: . RFC #0032: Add annotations for Unittest API . RFC #0033: Annotation support for members / lang.reflect.Field . RFC #0035: Interceptors for FTP storage 3.0.6, released 2005-09-28: . RFC #0030: Overloaded methods in lang.reflect.Proxy 3.0.7, released 2005-10-07: . RFC #0039: Decode username/password when using parse_url() in framework . net.xp-framework => net.xp_framework 3.0.8, released 2005-11-11: . RFC #0040: Annotation-based XML marshalling/unmarshalling . SVN rev. 6100 - MORE POWER! 3.1.0, released 2005-11-29: . RFC #0028: Add a method forwardTo() to XMLScriptletResponse . RFC #0042: SOAP Headers API . RFC #0043: UnknownRemoteObject . Bail when magic_quotes_gpc setting is on . XPClass->toString() output changes . Make regular expression parse generic types 3.1.1, released 2005-12-09: . RFC #0044: New save() method in DataSet 3.2.0, released 2005-12-21: . RFC #0012: EJB access API
. RFC #0038: Type wrappers
. RFC #0045: Unique multiple occurrences of errors
. RFC #0047: Guaranteed destructor calls
. RFC #0048: ESDL - Enterprise Service Description Language
. catch AssertionFailedErrors which might be thrown in the setUp() method of a
testcase in addition to the PrerequisitesNotMetError.
Tests may include common assertions which can be moved to setUp() then.
. Fix PHP4.4.x E_NOTICEs about variables and references3.2.1, released 2006-01-30: . RFC #0050: RDBMS Criteria API enhancement . RFC #0053: Formresult information about a wrapper 3.2.2, released 2006-05-14: . RFC #0055: Make xp::stringOf() fatal error safe . RFC #0056: Grand unified RPC api . RFC #0057: Collections framework 3.2.3, released 2006-06-30: . RFC #0058: New rdbms exception . RFC #0059: Timeouts for unit tests . Unittests: Fix assertEquals() and assertNotEquals() for arrays 3.2.4, released 2006-07-07: . RFC #0066: TCP_NODELAY server option 3.3.0, released 2006-08-25: . RFC #0065: Server Protocol API . RFC #0067: Add debug logging to remote API . RFC #0070: Extend ClassLoader::defineClass() . RFC #0071: Class / Classloader associations 3.4.0, released 2006-09-20: . RFC #0073: Change toString() to use xp::stringOf() 3.5.0, released 2006-10-11: . RFC #0074: Support for class loading from class archives in the core 3.5.1, released 2006-10-25: . RFC #0086: Exclude common trace elements from ChainedException's trace 3.6.0, released 2006-11-10: . RFC #0085: Make lang.Throwable::toString() easily overwriteable . RFC #0089: Core functions ref() and deref() 4.0.0, released 2006-11-20: . RFC #0084: Packages cleanup
Security considerations
None. Speed impact
None. Dependencies
None. Related documents
- http://apr.apache.org/versioning.html
APR's Version Numbering Comments
- friebe, Thu Nov 23 18:07:09 CET 2006
Should we store the version history in xp/trunk/HISTORY? Or in
xp/trunk/Changelog? | Table of contents |