- Fixed Implicitly marking parameter $prompt as nullable is deprecated
warnings in
util.cmd.Console
class with PHP 8.4, fixing #346. (@thekid)
- Merged PR #347: Accept strings or util.TimeZone instances - implementing
the be liberal in what you accept-paradigm in the
util.Date
class (@thekid) - Merged PR #345: Support passing floating point numbers to constructor,
setting microseconds for
util.Date
instances. (@thekid)
- Merged PR #344: Add
io.streams.StreamTransfer::transmit()
which yields control after each chunk (@thekid) - Merged PR #343: Implement a limited in-memory buffer with filesystem
overflow:
io.streams.Buffer
. See also xp-forge/web#118 (@thekid)
- Fixed
lang.ClassLoader::defineType()
to generate correctly typed method forwards for methods with explicitely nullable types. (@thekid)
This major release adopts more PHP 8 semantics, getting rid of the XP
annotation syntax with @
and deprecating implicitely nullable types.
This is the last major release to support PHP 7, and only does so for
its newest version.
- Removed deprecated Mersenne Twister algorithm from
util.Random
, see https://wiki.php.net/rfc/deprecations_php_8_3#global_mersenne_twister (@thekid) - Removed the deprecated resolve() method from
lang.Process
. Uselang.CommandLine::resolve()
instead! (@thekid) - Removed Proxy and InvocationHandler from the
lang.reflect
package, and AbstractDeferredInvokationHandler fromutil
. See PR #341 (@thekid)
- Implemented xp-framework/rfc#342: Extract compression streams, removing
the implementing classes from
io.streams
. See PR #342. (@thekid) - Implemented xp-framework/rfc#336, part 2: Remove XP annotations syntax, which was deprecated in XP 11, released October 2021. See PR #340. (@thekid)
- Implemented xp-framework/rfc#343, part 1: Drop support for all but the latest PHP 7 release. The minimum required PHP version is now 7.4! (@thekid)
- Synchronized mime types list with most recent
jshttp/mime-db
- @thekid - Merged PR #338: Set default character set for property files to
utf-8
(@thekid)
- Fixed issue #336: Deprecate implicitly nullable parameter types, following https://wiki.php.net/rfc/deprecate-implicitly-nullable-types (@thekid)
- Removed PHP 5 specific exception handling from
lang.Throwable::wrap()
(@thekid) - Suppressed implicitly nullable parameter types deprecation warning as there is no way of fixing these syntactically as long as we support PHP 7.0. See issue #336 and xp-framework/rfc#343 (@thekid)
- Merged PR #335: Fix removing directories with symlinks inside - @thekid
- Merged PR #334: Store original attribute names in DETAIL_TARGET_ANNO. This fixes a problem when using old and new reflection libraries in conjunction (@thekid)
- Fixed issue #333: Class "lang\ClassLoader" not found - @thekid
- Merged PR #331: Migrate to new testing library. This makes it easier
to run the test suite (now just
xp test src/test/php
like with any other library) and reduces the installed size by roughly 300 kB. Preliminary work was put into this to make the transition easier:- PR #330: Use
COMPOSER_ROOT_VERSION
and add dependency instead of bundling test library - PR #329: Restructure src/test/php - from tests inside the package
net.xp_framework.unittest
to the package (lang, util, io, xp) they're testing - Merged PR #328: Migrate tests to baseless / Assert DSL (@thekid)
- PR #330: Use
- Implemented string casting for
util.UUID
instances - @thekid - Merged PR #327: Use Xoshiro256** (w/o seed) as the fastest engine for PHP 8.2+, see https://wiki.php.net/rfc/rng_extension#prng_shootout (@thekid)
- Merged PR #326: Deprecate
Random::MTRAND
as Mersenne Twister is no longer recommended, see https://wiki.php.net/rfc/rng_extension (@thekid) - Merged PR #325: Use random_int() instead of mt_rand() in
util.UUID
(@thekid)
- Merged PR #324: Support
eval
array notation inside attributes. Together with xp-framework/reflection#35, this is a prerequisite for extracting reflection code as proposed by xp-framework/rfc#338. (@thekid)
- Made some minor performance optimizations to
util.Date
constructor (@thekid) - Merged PR #322: Defer date.timezone checks until the util.Date class is used, making XP core functionality unrelated to dates useable even if no timezone is set. (@thekid)
- Merged PR #321: Fix
util.TimeZone::hasDst()
, which was broken in multiple regards (@thekid) - Fixed issue #320: Call to undefined method
util.TimeZone::getName()
(@thekid)
- Fixed parsing generic definitions with string interpolations - @thekid
- Made parsing generic definitions more robust against when not using whitespace between parent class name and class body (@thekid)
- Fixed generic function types such as
function(T, T): int
- @thekid
- Fixed possible Undefined array key exceptions in
lang.GenericTypes
(@thekid)
- Fixed issue #317: Single-pair map indentation - @thekid
- Merged PR #316: Make Type::named() consistent with reflection for nullable union types, see https://wiki.php.net/rfc/union_types_v2#nullable_union_types (@thekid)
- Fixed issue #315: Array to string conversion when reading property file sections with arrays or maps (@thekid)
- Merged PR #314: Delay expansion of values in property files until values
are read. This fixes potential information disclosure problems in string
representations of
util.Property
instances, see #312. (@thekid)
- Fixed Cannot access property starting with "\0") in util.Comparison (@thekid)
- Merged PR #311: Make all InputStream & OutputStream implementations implement Value, implementing #310. (@thekid)
- Merged PR #309: Use AES-128-CBC instead of DES (in
util.Secret
); the latter is considered legacy (@thekid) - Fixed compatibility with PHP 8.2 for invalid timezones. PHP now reverts
to
UTC
and displays a startup warning if the timezone name is unknown. (@thekid)
- Added PHP 8.2
true
,false
andnull
types, mapping them to bool and void, respectively. See https://wiki.php.net/rfc/true-type and https://wiki.php.net/rfc/null-false-standalone-types (@thekid) - Replaced strcmp() with the
<=>
operator in theutil.Bytes
andio.Path
classes, removing function call overhead (@thekid)
- Fixed
lang.reflect.Parameter::getDefaultValue()
to parse parameter annotations correctly (@thekid)
- Merged PR #306: Fix qualified annotation names. This includes support for trailing commas in grouped annotations. (@thekid)
- Improved script loading performance by deferring requiring modules until class loading time. See xp-runners/reference#85 (@thekid)
- Added preliminary PHP 8.2 support by fixing various issues throughout the code base. Compatibility is tracked in issue #304 (@thekid)
- Cast given argument to string in
io.streams.MemoryInputStream
. Passing null will no longer yield warnings in PHP 8.1 (@thekid)
This major release cleans up deprecated and unused features, and takes the next step of phasing out XP annotation syntax in favor of PHP 8's attributes.
- Merged PR #299: Remove xp::errorAt(). If necessary, access the static
xp::$errors
map directly (@thekid) - Merged PR #298: Remove Runtime::halt() and SystemExit - functionality was never used in any library (@thekid)
- Merged PR #274: Compact maps with a single key/value pair into one line (@thekid)
- Merged PR #297: Remove generic application and service exceptions, these classes we unused. (@thekid)
- Merged PR #296: Remove lang.Runtime::loadLibrary() - the PHP function
dl()
has been regarded more or less deprecated and has been removed from various SAPIs in the past, see https://www.php.net/dl (@thekid) - Merged PR #295: Remove lang.Thread and lang.IllegalThreadStateException, these were Un*x only, wrapping ext/pcntl library functions (@thekid)
- Merged PR #294: Remove resource provider and import facility - @thekid
- Merged PR #293: Remove deprecated timezone methods - @thekid
- Removed deprecated
io.streams.MemoryInputStream::getBytes()
method (@thekid) - Merged PR #292: Remove deprecated reader and writer methods from io.streams (@thekid)
- Removed deprecated lang.Primitive::$DOUBLE (replaced by
FLOAT
) (@thekid) - Merged PR #291: Remove io.FileUtil - replaced by the
io.Files
class (@thekid) - Merged PR #290: Remove util.PropertyManager - replaced by libraries such
as
xp-forge/inject
(@thekid) - Merged PR #289: Remove util.DateUtil and util.DateMath - replaced by
the
util.Dates
class (@thekid) - Merged PR #288: Remove util.Calendar class - superseded by the timezone
aware API by
util.TimeZoneTransition
(@thekid) - Merged PR #287: Remove util.Component and util.Visitor - these classes were unused (@thekid)
- Merged PR #286: Remove util.Configurable and util.ConfigurationException,
unused except for the anti-pattern class
rdbms.ConnectionManager
. (@thekid) - Renamed
master
branch tomain
- @thekid
- Implemented 2nd part of xp-framework/rfc#335: Drop annotation key/value pair syntax, see PR #237. Use PHP 8 named arguments instead! (@thekid)
- Implemented 2nd part of xp-framework/rfc#336: Deprecating XP annotation syntax. This will raise E_USER_DEPRECATED warnings, see PR #284 (@thekid)
- Backported #324 from XP 11: Support eval array notation inside attributes. See xp-framework/compiler#169 (comment) (@thekid)
- Backported #321 from XP 11: ix util.TimeZone::hasDst(), which was broken in multiple regards (@thekid)
- Backported #320 from XP 11: Call to undefined method util.TimeZone::getName() (@thekid)
- Backported #309 from XP 11: Use AES-128-CBC instead of DES (in util.Secret); the latter is considered legacy (@thekid)
- Backported PR #306 from XP 11: Correctly support qualified annotation names and trailing commas in grouped annotations (@thekid)
- Merged PR #301: Add new util.ClassPathPropertySource - @thekid
- Merged PR #282: Allow overwriting descriptors passed to proc_open() in
lang.Process
constructor andnewInstance()
. This can be used for redirection or passing through standard I/O. (@thekid) - Merged PR #281: Add
lang.CommandLine::resolve()
. This method resolves given commands against the system path and returns all found executables, much like Windows'where
or POSIX'which -a
commands. It supersedes lang.Process::resolve(), which becomes deprecated. (@thekid)
- Fixed
lang.Environment::variables()
to return the complete environment even if the php.ini setting variables_order does not includeS
. (@thekid)
- Merged PR #278: Add support for PHP 8.1 readonly properties - @thekid
- Implemented xp-framework/rfc#340: Virtual properties reflection. See PR #275 for implementation details. (@thekid)
- Fixed bug xp-framework/reflection#13: Too few arguments to function enum_exists() (@thkid)
- Fixed error date.timezone not configured properly when running on AWS.
Their default value for the
TZ
environment variable is:UTC
, which PHP fails to recognize as a valid timezone (whileUTC
works). (@thekid)
- Fixed class parser when encountering double-quoted strings containing
variables in the complex (curly) syntay, e.g.
"runtime-{$name}"
, see https://www.php.net/manual/en/language.types.string.php (@thekid)
- Prevent resolving types returned by the PHP reflection API by calling
the
*
context function - they already come resolved. (@thekid)
- Merged PR #277: Add support for PHP 8.1 intersection types - @thekid
- Fixed parsing
use
statements with multiple imports separated by commas, e.g.use ArrayObject, Traversable;
. (@thekid)
- Fixed
lang.XPClass::getDeclaredFields()
throwing an exception - @thekid - Fixed issue #276: PHP 8.1: offset* / getIterator signature. Made codebase
compatible with PHP 8.1 (while keeping PHP 7 support!) by adding the
#[ReturnTypeWillChange]
in relevant places. (@thekid)
- Merged PR #273: Fall back to
wmic
command line tool ifcom_dotnet
extension is not loaded (@thekid) - Merged PR #272: Add
Environment::platform()
andEnvironment::path()
(@thekid)
- Merged PR #271: Pass NULL to Properties::expanding() to ignore expansion (@thekid)
- Merged PR #267: Support PHP 8.1
never
type in reflection - @thekid
- Made XP work when iconv extension is not available but mbstring is, offering a degraded and not 100% compatible experience, see #270 (@thekid)
- Generated
util.MimeType
from the media type database over at https://github.com/jshttp/mime-db, which in turn consists of lists compiled from IANA registrations, Apache and Nginx. See issue #264 (@thekid)
- Fixed issue #265: Environment::variables() empty on certain environments
by replacing
$_ENV
by$_SERVER
, see PR #266 (@thekid)
- Fixed issue #263: Warnings in util.Secret with PHP 8.1 - @thekid
- Merged PR #261, adding forward compatibility with PHP 8.1 enumerations.
Adds
enum_exists()
as well asUnitEnum
andBackedEnum
interfaces, see https://wiki.php.net/rfc/enumerations (@thekid)
- Fixed issue #262: xar command - compile error - @thekid
- Merged PR #259: Support reflective access to non-constant expressions for parameter defaults (@thekid)
- Fixed issue #260: Failed tests on Ubuntu 20.04 - @thekid
- Fixed issue #258: PHP 8.1 passing null to scalar arguments deprecated See https://wiki.php.net/rfc/deprecate_null_to_scalar_internal_arg (@thekid)
- Merged PR #253: Add support for nullable types (via
lang.Nullable
) (@thekid) - Merged PR #256: Make it possible to pass a default resolver (
*
) toType::resolve()
(@thekid)
- Fixed issue #257: Nullable union types - @thekid
- Handle
self
,static
andparent
return and parameter types insidelang.FunctionType::isInstance()
. (@thekid) - Fixed issue #255: Function return types not taken into account - @thekid
- Fixed issue #254: Warning raised inside
newinstance()
in PHP 7.4+ when using parameter or return type hints. (@thekid)
- Added support for PHP 8.0, see issue #211:
- Support PHP 8 attributes in all PHP 7 versions if written without
line breaks, adding special
eval
key to support non-static scalar expressions. - Add support for union types for return and parameter types
- Add forward- and backward compatible handling for various type- checking related changes
- Verified support with PHP 8.0.0 on Windows and Linux (@thekid)
- Support PHP 8 attributes in all PHP 7 versions if written without
line breaks, adding special
- Fixed
util.Random
class to useopenssl_random_pseudo_bytes()
insteaduniqid()
for creating an IV. (@thekid)
- Added
lang.reflect.Field::getTypeRestriction()
which is consistent with the API exposed by method parameter and return types. This adds support for PHP 7.4 property types. (@thekid) - Made field, method parameter and return types consistent in that they check for native type syntax before checking meta information except for when that may yield a more specific type (@thekid)
- Added new method
lang.Type::resolve()
to correctly resolve types in a given context. Adds support forarray<self>
and others for return and parameter types, see PR #252 (@thekid)
- Fixed static return type being shadowed by
self
type restriction (@thekid) - Fixed specific function types being shadowed when a
callable
type restriction is present (@thekid) - Fixed braced function return types, e.g.
@return (function(): int)
(@thekid)
- Updated bundled test library - fixing PHP 8 compatibility - @thekid
- Fixed issue #248: PHP 8 native type union causes error - @thekid
- Fixed
string|int
type union not being equal toint|string
- @thekid
- Fixed strspn(): Argument #3 ($offset) must be contained in argument #1 ($str)) warnings, which started appearing in PHP 8.0.0, RC 1. (@thekid)
- Added support for PHP 8 parameter attributes - @thekid
- Merged PRs #246 and #247, rewriting the code base to PHP 8 attributes (@thekid)
- Implemented first step of xp-framwwork/rfc#336 by converting PHP 8
attributes into XP annotations:
#[Test(true)]
will be interpreted the same as#[@test(true)]
. This way, converting libraries over to the new syntax can start now. Implementation details in pull request #245.
- Merged PR #225: Overload
newinstance
to accept closures for single- method interfaces (like lang.Runnable, for instance). (@thekid) - Added support for
mixed
type, see https://wiki.php.net/rfc/mixed_type_v2 (@thekid)
- Fixed grouped imports when used inside generics in PHP 8.0 - @thekid
- Add handling for
T_NAME_FULLY_QUALIFIED
andT_NAME_QUALIFIED
tokens introduced in PHP 8 by https://wiki.php.net/rfc/namespaced_names_as_token (@thekid)
- Improved performance of type lookups for parameters and return types;
only looking at the API docs if either no type syntax is used or for
array types (e.g.
array
=>string[]
) (@thekid) - Added
lang.reflect.Routine::getReturnTypeRestriction()
to be consistent with parameters. (@thekid)
- Fixed imports not being resolved inside annotations with functions and closures as values. (@thekid)
- Merged PR #242: Use ReflectionType API instead of deprecated isArray and isCallable on parameters - for PHP 8 compatibility (see php/php-src#5209). (@thekid)
- Fixed issue #241: Support PHP 7.4 property types (e.g.
private int $id
) See https://wiki.php.net/rfc/typed_properties_v2 (@thekid)
- Fixed issue #240: Add support for PHP 8 union types (e.g.
string|int
) See https://wiki.php.net/rfc/union_types_v2 (@thekid)
- Fixed Array and string offset access syntax with curly braces is deprecated
warnings inside
lang.reflect.ClassParser
(@thekid)
- Fixed
xp help
subcommand raising warnings when rendering markdown (@thekid)
- Fixed generics in PHP 8+ by using null-coalesce operator instead of the
error suppression operator
@
. (@thekid)
- Merged PR #224: Add missing support for nullable types to
is()
(@thekid) - Fix issue #220: Curly braces in offsets are now deprecated in PHP 7.4 (@thekid)
- Merged PR #234: Add new method Package::of() which returns the package of a given type (@thekid)
- Merged PR #233: Allow passing string types to
Enum::value[s]Of()
(@thekid) - Merged PR #227: Add support for PHP 7.4 arrow functions in annotations (@thekid)
- Merged PR #226: Support getting annotations from anonymous classes (@thekid)
- Implemented feature request #219, adding
util.Date::getMicroSeconds()
(@thekid) - Merged PR #218: Add new util.Dates class superseding util.DateUtil (@thekid)
- Merged PR #217: New
io.Files
class replacing the ill-named FileUtil (@thekid) - Added preliminary support for PHP 8.0, which has not yet been released yet, though running the testsuite with its nightly builds yields green. See issue #211 (@thekid)
- Merged PR #223: Changed
object
type handling inis()
andType::$OBJECT
to be consistent with PHP type system, including closures and generators. (@thekid) - Merged PR #216: Remove third & optional "nullsafe" argument to cast() (@thekid)
- Merged PR #215: Remove deprecated System class - @thekid
- Merged PR #214: Remove deprecated xp::stringOf() - @thekid
- Merged PR #213: Remove "double" type in favor of "float" - @thekid
- Merged PR #212: Remove deprecated getFirstSection() / getNextSection() iteration (from util.Properties) (@thekid)
- Merged PR #194: Remove deprecated XP registry - @thekid
- Implemented xp-framework/rfc#335: Drop annotation key/value pair syntax, phase 1: This syntax is now deprecated, see PR #236. (@thekid)
- Implemented xp-framework/rfc#333: XP 10 release / full PHP 7.4 support (@thekid)
- Implemented user modules as part of xp-framework/rfc#332, see PR #207 (@thekid)
- Implemented xp-framework/rfc#329: Remove deprecated io.sys. See PR #197 (@thekid)
- Implemented xp-framework/rfc#330: Remove HHVM support. See PR #206 (@thekid)
- Backported XP 10 features for easier adoption:
- PHP 7.4 arrow functions in annotations (#227)
- Annotations from anonymous classes (#226)
- New
util.Date::getMicroSeconds()
(#219) - New
util.Dates
class superseding util.DateUtil (#218) - New
io.Files
class replacing the ill-named FileUtil (#217) https://github.com/xp-framework/core/projects/1 (@thekid)
- Fixed compatibility issue with PHP 7.4 in
ClassLoader::defineForward()
(@thekid)
- Backported from XP 10 various compatibility fixes with PHP 7.4:
- Fix "Trying to access array offset on value of type null"
- Refrain from using curly braces used for array offsets
- Refrain from using deprecated
ReflectionType::__toString
Prevent "stream_set_option is not implemented!" warnings (@thekid)
- Added fix for reflection code raising warnings in PHP 7.4 - @thekid
- Added fix for typeof() raising warnings in PHP 7.4 - @thekid
- Merged PR #208: Ensure filenames and lines match up to parsed code (@thekid)
- Fixed issue #210: PHP 7.4 modifiers compatiblity - @thekid
- Added support for PHP 7.3 (@thekid)
- Fixed
io.streams.MemoryOutputStream
to behave like files when writing beyond stream end: Content is padded with"\0"
. (@thekid) - Fixed
io.FileUtil::write()
to overwrite open files' contents instead of simply appending the bytes given (@thekid) - Fixed
io.File::truncate()
to retain the file offset on Windows, this way behaving the same as Unix systems. (@thekid)
- Changed
io.streams.FileOutputStream
to implementSeekable
interface (@thekid) - Added
io.FileUtil::append()
to complement thewrite()
method. (@thekid) - Added optional bytes arg to
io.streams.MemoryOutputStream
constructor (@thekid) - Added
read()
andwrite()
methods toio.FileUtil
as replacements forgetContents()
andsetContents()
(@thekid) - Added
io.streams.MemoryOutputStream::bytes()
method w/o get prefix (@thekid) - Added
io.TempFile::persistent()
method to keep temporary files even after they are garbage-collected (@thekid) - Added destructor to file ensuring file handles are closed when
io.File
are garbage-collected (@thekid) - Added
io.TempFile::containing()
method to easily create temporary files and write content to them in one step (@thekid) - Merged PR #204: Deprecate
util.PropertyManager
- @thekid
- Multiple API improvements in the
util.TimeZone
class.- Deprecated
getName()
in favor of the shortername()
method - Deprecated
getOffset()
in favor ofdifference()
; and the methodgetOffsetInSeconds()
in favor ofoffset()
; making the TimeZone API consistent with TimeZoneTransition. (@thekid)
- Deprecated
- Multiple API improvements in the
util.TimeZoneTransition
class.- Added
difference()
method toutil.TimeZoneTransition
which returns the offset in the "[+-]HHMM" format. - Changed
previous()
andnext()
to return the calculated transition instead of returning void. - Deprecated
getTz()
in favor oftimezone()
; andgetDate()
in favor ofdate()
; making the API more consistent. (@thekid)
- Added
- Merged pull request #203: Implement Process::terminate() (@thekid)
- Ensured compatibility with PHP 7.3 beta (@thekid)
- Merged PR #202: PHP 7.4 forward compatiblity (@thekid)
- Fixed issue #201: Casting to int: Uninitialized string offset: 1 (@thekid)
- Fixed forward compatibility with PHP 7.3, which deprecates string search with non-string needles: https://wiki.php.net/rfc/deprecations_php_7_3 (@thekid)
- Fixed
Primitive::$INT->cast()
andPrimitive::$INT->newInstance()
for strings containing hexadecimal or octal numbers. (@thekid) - Fixed octal and hexadecimal literals in annotations (@thekid)
- Merged PR #200: Fix path normalization (@thekid)
- Merged pull request #199: Add DateUtil::add() and DateUtil::subtract() (@thekid)
- Changed
io.File
to allow URIs created withio.streams.Streams
(@thekid) - Added
io.streams.MemoryInputStream::size()
accessor (@thekid)
- Fixed
io.File::size()
to work when the instance has been created with a file descriptor, e.g. fromStreams::readableFd()
. (@thekid)
- Fixed
StringReader::readLine()
calling underlying stream'sread()
method too often, resulting in hanging when reading from the console. (@thekid)
- Implemented xp-framework/rfc#329: Deprecate io.sys (@thekid)
- Implemented xp-framework/rfc#328: IDisposable (@thekid)
- Upgraded bundled unittest library to 9.4.1 (@thekid)
- Fixed
newinstance()
resolving value types for parameter or return types incorrectly inside namespaces (@thekid)
- Fixed #191: Void return type breaks newinstance() (@thekid)
- Fixed #190: Iterable type hint breaks newinstance() (@thekid)
- Fixed #189: Scalar type hints break newinstance() (@thekid)
- Fixed #186: Type union parsing (@thekid)
- Merged #188: Implement PHP 7.2 sodium extension based encryption (@thekid)
- Implemented xp-framework/rfc#326: Cast and nullable types (@thekid)
- Added PHP 7.2 to test matrix (@thekid)
- Merged #183: Remove all reference to lang.Object (@thekid)
- Added
util.Comparison
trait to makelang.Object
->lang.Value
migration easier. See issue #184 (@thekid)
- Changed type system to prefer "float" over "double" to be consistent with PHP 7's scalar types, which use the first; see issue #181. (@thekid)
- Minimum HHVM version required is now 3.20, see issue #176. (@thekid)
- Deprecated
package-info.xp
files previously used for documentation purposes. Packages have been split into libraries with their own repos, and documentation typically resides in a README file therein. (@thekid) - Merged PR #169: Remove MCrypt (from
util.Secret
&util.Random
), see https://wiki.php.net/rfc/mcrypt-viking-funeral (@thekid)
- Implemented xp-framework/rfc#318: Builtin dependencies, by merging
pull request #161. Scripts can now
use [type] from [vendor/lib]
. (@thekid) - Implemented xp-framework/rfc#325: Remove Object class. This radical change was implemented to be forward-compatible with PHP 7.2, see https://wiki.php.net/rfc/object-typehint (@thekid)
- Implemented xp-framework/rfc#323: Remove
xp::typeOf()
- @thekid
- Merged PR #180: Secret::equals() - @thekid
- Added preliminary PHP 7.2.0 support - tested successfully using PHP 7.2.0 Alpha 1 up to PHP 7.2.0 RC2. (@thekid)
- Added
xp version runners
which will display XP runners version (@thekid) - Merged PR #179: Clean up inheritance and implementation oddities in
io.streams
(StringReader and TextReader as well as StringWriter and TextWriter are now interchangeable - the Text versions handle charset encoding, the String versions don't). (@thekid)
- Fixed issue #172: Endless loop in io.Path::relativeTo() - @thekid
- Refactored code to use
typeof()
instead ofxp::typeOf()
, see xp-framework/rfc#323 (@thekid) - Un-deprecated
newinstance()
, which is here to stay. By being able to capture local variables in methods, it is helpful in unittest scenarios and has a clear advantage over PHP's anonymous classes; at least until https://wiki.php.net/rfc/lexical-anon is implemented. (@thekid)
- Merged PR #167: Increase TextReader::readLine() performance 50-fold (!) This decreases .ini-file parsing times by a factor of roughly 12. (@thekid)
- Fixed flaky test for Process class if process exited too quickly - @thekid
- Merged PR #164: Implement new
Process::running()
method which tests if a process is running (@thekid) - Merged PR #163: Make adding property file expansions easy to use (@thekid)
- Removed deprecated
ARCHIVE_*
constants (use class constants from lang.Archive instead!) (@thekid) - Removed deprecated
io.Folder
methods getEntries(), isOpen() and rewind() - replaced byentries()
iterator. (@thekid) - Removed deprecated
io.File
methods get(Input|Output)Stream() - replace by in() and out(). (@thekid) - Removed deprecated
util.Properties
I/O methods save(), fromString() and fromFile(). See #160 (@thekid) - Removed support for legacy XP runners. The XP7 runners have been available for more than half a year now and are well-tested on various operating systems and distributions. (@thekid)
- Removed support for legacy date serialization (has been deprecated since October 2011). See #159 (@thekid)
- Heads up: Bumped minimum required PHP version to 7.0.0 (@thekid)
- Implemented xp-framework/rfc#312: Advertise scripts as entry point (@thekid)
- Implemented xp-framework/rfc#311: Deprecate array() syntax (@thekid)
- Implemented xp-framework/rfc#310: XP8
. Deprecated
newinstance
in favor of builtin anonymous class support . Rewrote codebase to use grouped use statements where applicable . Made use of??
and<=>
operators . Added return type hints in various places . Simplified code by removing PHP5-specific handling (@thekid)
- Merged PR #134: Change lang.XPClass::getClasses() to return an iterator
- Merged PR #163: Make adding property file expansions easy to use (@thekid)
- Added forward compatiblity with XP8: Backported BC-break-free parts of
#160 (new fluent interface,
load()
now also accepting strings and io.Channel / io.File instances, deprecations) (@thekid)
- Fixed issue #158: PHP Nightly failing test with
__PHP_Incomplete_Class
(@thekid)
- Added support for grouped use statements (@thekid)
- Deprecated
Secret::BACKING_MCRYPT
andRandom::MCRYPT
and started preferring OpenSSL. See https://wiki.php.net/rfc/mcrypt-viking-funeral and #156 (@thekid)
- Fixed
Runtime::newInstance()
to inherit all currently loaded paths (@thekid) - Fixed ClassLoaders' path output if environment doesn't contain resolved paths - e.g. paths with symlinks or ".." parts inside. (@thekid)
- Fixed compatibility with PHP 7.1, which replaces the "Missing argument" warning with "Too few arguments" exception (@thekid)
- Merged #155: Implement object type union - @thekid
- Merged #153: Environment class - @thekid
- Merged #154: Implement iterable type. Forward compat with PHP 7.1's iterable type (@thekid)
- Fixed passing unicode arguments via
Runtime::newInstance()
(@thekid)
- Extended
lang.FunctionType
's constructor to accept type names in addition to Type instances. (@thekid)
- Fixed #147: TypeUnion literal bug - @thekid
- Merged #146: Create util.Random class: A random number generator with a preference for secure pseudo-random sources (@thekid)
- Merged #145: Generic fields - @thekid
- Merged #140: Fix {Type,XPClass}::forName to support absolute type names (@johannes85, @thekid)
- Fixed
cast()
to wrap any thrown exception from Type::forName() in a lang.ClassCastException (@thekid)
- Removed
net.xp_framework.unittest.StartServer
- unused inside core, but xp-framework/networking's test suite depended on this (fixed by copying there and releasing as 7.0.1). (@thekid)
- Code QA: Use
::class
throughout codebase where applicable - @thekid - Code QA: Use
yield
throughout codebase where applicable - @thekid - Made test suite run on AppVeyor (@thekid)
- Merged #131: OS Version handling for Mac OS X (@thekid)
- Merged #133: OS Version handling for systems with /etc/os-release (@thekid)
- Fixed Parameter::getDefaultValue() with variadics on HHVM. See https://travis-ci.org/xp-lang/compiler/jobs/110851645 (@thekid)
- Merged #129: Shebang support - @thekid
- Added version details to version subcommand: . xp version xp: XP Version . xp version php: PHP Version . xp version engine: Engine version - HHVM_VERSION || zend_version() . xp version os: OS Version (and distribution if available) (@thekid)
- Added missing help topics - see #130 - @thekid
- Fixed support for varargs in
typeof()
- @thekid - Fixed support for primitive parameter types in
typeof()
- @thekid - Fixed support for function return types in
typeof()
- @thekid
- Added PHP nightly to build matrix (currently: PHP 7.1.0-dev) - @thekid
- Verified support for the
void
return type, which is part of PHP 7.1 See https://wiki.php.net/rfc/void_return_type (@thekid)
- Changed
newinstance
to raise an error if no constructor is defined but arguments are passed. Errors surface earlier this way! (@thekid) - Removed deprecated overload of
ClassLoader::defineType()
- @thekid - Removed deprecated Hashmap class. See #121 - @thekid
- Removed deprecated global FILE_MODE_* constants - @thekid
- Implemented first part of xp-framework/rfc#308: Basic Hack language support. See #123 (@thekid)
- Implemented xp-framework/rfc#298: Path to XP7
. Removed deprecated
getClasssName()
- see #120 . Changed code to use new variadic syntax - see #119 . Removed wrapper types - see #118 . Bumped minimum PHP version required to PHP 5.6 (@thekid) - Implemented xp-framework/rfc#302: Remove extension methods- @thekid
- Implemented xp-framework/rfc#300: THIS! IS! VERSIOOOOON!- @thekid
- Implemented xp-framework/rfc#307: Extract XPCLI from core - @thekid
- Implemented xp-framework/rfc#301: Extract logging from core - @thekid
- Implemented xp-framework/rfc#293: Extract unittest from core - @thekid
- Implemented xp-framework/rfc#296: Further minimize the framework - @thekid
- Implemented xp-framework/rfc#297: Rebase - @thekid
- Backported fix for issue #147: TypeUnion literal bug - @thekid
- Heads up: Changed UUID class to return util.Bytes instead of the version from lang.types (@thekid)
- Fixed PHP 5.4 compatibility for util.Bytes class added in 6.11 - @thekid
- Backported #146 from XP 7 - @thekid
- Merged #141: Backported separation of connecting and enabling crypto for SSL sockets. (@kiesel, @thekid)
- Fixed malformed typehint for util.log.LogCategory (@elquand, @haimich)
- Backported AppVeyor integration (@thekid)
- Fixed issue when expected exception's message was empty. Originally reported in #135 by @kiesel (@thekid)
- Fixed problem w/ static initializer and MockProxy (@beorgler, @haimich, @kiesel)
- Restored PHP 5.4 compatibility. Note: PHP 5.4 is supported unofficially! Composer requirements are PHP 5.5.0 minimum. See xp-framework/rfc#298 (comment) (@thekid, @kiesel)
- Added
util.Bytes
class as replacement for deprecated lang.types.Bytes (@thekid)
- Fixed #128: ClassParser chokes on ::class inside members (@thekid)
- Made util.Hashmap class implement ArrayAccess to ease forward-compatible migrations of code using it (@thekid)
- Merged #127: Enable running scripts from files - @thekid
- Fixed #116: ClassParser and "use .. as .." - @thekid
- Fixed
lang.reflect.ClassParser
to raise an exception ifparent
is used in annotations inside a type without parent instead of causing a method call on NULL. (@thekid)
- Merged #114: Improve error messages when file loaded fails to declare type. Now includes mismatching declaration. (@thekid, @mikey179)
- Integraded support for new XP runners defined in xp-framework/rfc#303. (@thekid)
- Implemented xp-framework/rfc#307: Extract XPCLI from core. The new package lives in https://github.com/xp-framework/command @thekid
- Merged #114: Make paths displayed in class loaders'
toString()
copy&pasteable (@thekid) - Added
xp.runtime.Help
with support for basic markdown. It is used by the xp help subcommand, and exports a public API for rendering. See xp-runners/reference#5, xp-framework/unittest#14 and xp-framework/command#1 (@thekid)
- Fixed util.Objects to handle instances of non-XP classes in equal(), compare() and hashOf(). See #113 (@thekid)
- Fix wrapping \Exceptions behavior difference between PHP5 and PHP7 (@thekid)
- Made
lang.XPClass::forName()
accept native class names, also (@thekid)
- Heads up: Removed deprecated ensure(), which has been replaced
by the
finally
statement. See #111 (@thekid)
- Implemented xp-framework/rfc#305: with() results. See pull request #112 @thekid
- Fixed #110: Fatal error location swallowed - @thekid
- Catch both PHP 5 and PHP 7 base exceptions in lang.Thread - @thekid
- Added static
lang.Throwable::wrap()
to wrap any exception, including PHP 5 and PHP 7's native base exceptions, in alang.Throwable
instance (@thekid) - Changed
lang.Throwable
to accept any other instance of itself as cause as well as PHP 5 and PHP 7's native base exceptions. (@thekid)
- Heads up: Removed classes deprecated since XP 6.3.0:
.
util
: util.StringUtil .io
: Stream, ZipFile, SearchableStream, SpoolDirectory, FilePermission .io.sys
: StdStream .security
: Permission, Policy, PolicyException .security.password
: RandomPasswordGenerator, RandomCodeGenerator (@thekid)
- Fixed
util.Objects::compare()
consistency with PHP7's<=>
operator for arrays and maps. (@thekid) - Fixed
lang.reflect.Constructor
to catch PHP7's native\Throwable
class instead of\BaseException
class, which was the root class before the Throwable RFC. (@thekid)
- Refactored
util.Properties
to work without Tokenizer API, which has been extracted to its own package in 6.7.0 (@thekid) - Merged PR #108: security.SecureString ->
util.Secret
(@thekid, @mikey179, @kiesel)
- Implemented next part of xp-framework/rfc#296: Remove xp::reflect() @thekid
- Implemented more parts of xp-framework/rfc#296:
. Extracted the
peer.*
APIs to its own package and deprecated the one inside core. See https://github.com/xp-framework/networking . Extracted themath
API to its own package and deprecated the one inside core. See https://github.com/xp-framework/math . Extracted thetext
API to its own package and deprecated the one inside core. Split into: . https://github.com/xp-framework/tokenize . https://github.com/xp-framework/patterns . https://github.com/xp-framework/text-encode . Extracted thesecurity
API to its own package and deprecated the one inside core. See https://github.com/xp-framework/security (@thekid)
- Fixed
lang.reflect.Method
to use PHP's type information if available but consistently prefer the apidocs for the reason stated below. (@thekid) - Fixed
lang.reflect.Parameter
to only use PHP's type information if no apidoc is present. The reason is that we might have much "richer" information, e.g. a parameter typedstring[]
(whereas PHP would only know about an array of whatever). (@thekid)
- Implemented next part of xp-framework/rfc#297: Merged PR #100 (@thekid)
- Implemented next part of xp-framework/rfc#298:
. Removed deprecated
xp::null()
. Removed deprecatedxp::nameOf()
. Removed deprecatedxp::error()
and replace by exceptions . Removed deprecatedthis()
- replaced by syntactic support (@thekid)
- Fixed fatal errors when parsing URLs w/ hashes. See xp-framework/xp-framework#380 (@patzerr)
- Fixed "Call to undefined method lang.FunctionType::isGeneric()" in lang.WildcardType (occurred in the sequence library when using the current development checkout) (@thekid)
- Fixed FunctionType not handling varargs correctly - @thekid
- Merged PR #107: Variadic parameter support in reflection (@thekid)
- Fixed XPClass not searching traits for member declarations - @thekid
- Made reflection resolve unqualified classes inside api doc via imports (@thekid)
- Changed reflection to support fully-qualified class names inside api
doc tags for fields, methods and constructors:
@param \util\Date $param
,@return \util\Date
,@throws \lang\Throwable
and@var \util\Date
. (@thekid, @mikey179) - Changed
ClassLoader::defineType()
to also support native type notation with backslashes inside its first argument. (@thekid, @mikey179)
- Extracted the
io.collections
API to its own package and deprecated the one inside core. See https://github.com/xp-framework/io-collections (@thekid)
- Fixed
xp -r T
for when T refers to a trait - @thekid
- Merged #102: Add in() and out() methods to io.collections - @thekid
- Merged #103: Refactor: Use ::class - @thekid
- Merged #104: Show traits w/ trait keyword, w/o abstract - @thekid
- Created an XP Framework release from an airplane - @thekid
- Cleaned up deprecated "mixed" type in favor of "var" - @thekid
- Fixed
peer.SocketOutputStream
declaration - @thekid - Fixed
lang.FunctionType
to work as part of a generic type - @thekid - Merged #101: Make collections API work with closures (@thekid)
- Fixed
util.Objects::hashOf()
for arrays and maps containing closures (@thekid) - Fixed lang.types.ArrayList and lang.types.ArrayMap's equals() methods in conjunction with lang.Value instances. (@thekid)
- Heads up: Bumped the minimum PHP version requirement to PHP 5.5!
. Rewrote test code base to use
finally
instead of ensure (see #97) . Rewrote test code base to use::class
where applicable (see #98) (@thekid) - Deprecated the
ensure
core functionality. It was a future-ready replacement for the finally statement introduced with PHP 5.5 (@thekid) - Removed deprecated
delete
core functionality. Instead, use the language constructunset()
. (@thekid) - Removed deprecated
text.format
andtext.parser
packages. (@thekid) - Removed deprecated and dysfunctional XP installer. Instead, use Composer (@thekid)
- Implemented first part of xp-framework/rfc#301: Extracted
util.log
package into its own library - https://github.com/xp-framework/logging. The classes remain in core until 7.0, the library serves as an overlay. (@thekid) - Implemented first part of xp-framework/rfc#293: Extracted
unittest
package into separate libraries: . https://github.com/xp-framework/unittest . https://github.com/xp-framework/mocks . https://github.com/xp-framework/webtest The classes remain in core until 7.0, the libraries serve as an overlay. (@thekid)
- Fixed util.log.SyslogAppender problems with multiple instances logging to the same identifier and facility. (@mikey179, @thekid)
- Implemented setting log appender's layout via ini file (@thekid, @mikey179)
- Fixed issue #96: Endless recursion when registering own classloader in front of class path inside a module. This is useful when a module provides a so-called "core overlay". (@thekid)
- Fixed
unittest.XmlTestListener::uriFor()
raising exceptions - @thekid - Fixed WebTestCase test class using obsolete
assertClass()
- @thekid - Fixed
SelectField::setValue()
double-encoding UTF8 - @thekid - Fixed syntax errors in
unittest.web
package - @thekid
- Deprecated long array syntax (for annotations and in code) See #93 (@thekid)
- Deprecated this() core functionality. See #92 (@thekid)
- Removed variant of create() which returns object given. See #91 (@thekid)
- Removed deprecated raise() core functionality. See #89 (@thekid)
- Removed pre-namespace class loading:
- The deprecated
uses()
core functionality has been removed. - It is no longer possible to use package-qualified classes.
- Using classes declared in the global namespace as fully-qualified is also no longer supported. See #88 (@thekid)
- The deprecated
- Merged #94: Use "use" statements in commandline (@thekid)
- Dropped support for PHP7 alpha1, now requires alpha2! This second alpha includes the "Throwable" RFC which changes the builtin exception hierarchy. (@thekid)
- Adopted to changes in PHP7's exception hierarchy. See php/php-src#1284 and https://wiki.php.net/rfc/throwable-interface (@thekid)
- Changed
lang.CommandLine
,text.TextTokenizer
,text.StreamTokenizer
andio.streams.StringReader
to cope with a behaviour change to substr. See https://bugs.php.net/69931. (@thekid) - Fixed bug with PHP7 when reading lines from the console (@thekid)
- Fixed bug with importing into global scope on HHVM (@thekid)
- Fixed bug when using
uses()
with classes that have an __import method. (@johannes85)
- Fixed forking server to handle SIGTERM correctly, which is what xpws sends when the user presses Enter. (@thekid)
- Fixed race condition inside
peer.server.PreforkingServer
which would prevent a clean shutdown (@thekid) - Fixed
math.BigNum
division on HHVM cutting off below default precision (@thekid)
- Added
toString()
method to BigNum class (and thus BigInt and BigFloat) (@thekid)
-
This release creates forward compatibility with PHP7. Please note the XP6 series will not support PHP7 officially: It reserves the name
object
, which clashes with our root classlang.Object
.However, PHP7 alpha 1 does not yet raise an error if this class name is used.
Parts of the XP test suite do not pass on PHP7, as we still use other features incompatible with this new version. These are now in an extra unittest configuration file, not-on-php-nightly.ini. All other tests are expected to pass, and we're working on reducing the incompatible ones. (@thekid)
- Restored PHP7 forward compatibility by renaming internal null class
to
__null
. See pull request #86 (@thekid)
- Fixed annotation parser to handle PHP7 eval() throwing exceptions instead of raising errors (@thekid)
- Fixed parity for PHP7 when handling undefined methods in PHP7, which now behaves like HHVM (!). See #87 (@thekid)
- Wrapped PHP7's
BaseException
inside a TargetInvocationException in method and constructor invocations (@thekid)
- Added a new
nameof()
core function aimed at replacing the getClassName() method and deprecated the \xp::nameOf() method. (@thekid) - Deprecated wrapper types in
lang.types
, primitive boxing and unboxing. See #84 (@thekid)
- Implemented first part of xp-framework/rfc#297: Added new
lang.Value
interface and support for it throughout the framnework as a forward- compatibility measure. See #85 (@thekid)
- Fixed
unittest.actions.VerifyThat
not running static methods correctly (@thekid)
- Added util.Objects::compare() method which mimics PHP7's
<=>
operator including support for lang.Value::compareTo(). (@thekid) - Merged #76: Implement type unions. Instead of using
the
var
type on methods following the be liberal in what you accept rule and documenting what is accepted in the apidocs, the type system now allows for types such asint|string
. This is widely used in PHP pseudo code, and may even end up in syntax if the union types RFC gets accepted: https://wiki.php.net/rfc/union_types (@thekid)
- Added class constants for Archive::open() and deprecated
ARCHIVE_*
. See #80 (@thekid) - Added class constants for File::open() and deprecated
FILE_MODE_*
. See #79 (@thekid) - Deprecated io.ZipFile class - use GzDecompressingInputStream instead! See #78 (@thekid)
- Deprecated io.SpoolDirectory class (@thekid)
- Merged #83: New io.Path::real() shorthand (@thekid)
- Merged #82: Path::asFile() and asFolder() prevent conditionals (@thekid)
- Merged #81: Feature: Folder entries (@thekid)
- Changed io.Path::equals() to perform normalization before comparing (@thekid)
- Changed io.File::open() to return the file itself, enabling fluent API
usage:
$f= (new File('test'))->open(File::READ);
. (@thekid) - Changed io.streams.TextWriter to accept output streams or I/O channels as its constructor argument, and io.streams.TextReader to accept input streams, strings or I/O channels as their constructor arguments. (@thekid)
- Merged #77: Text reader iteration (@thekid)
- Deprecated XPI (XP Installer). Use Composer or Glue instead. (@thekid)
- Merged #75: Support for new
unittest -w
command line. See https://github.com/xp-framework/xp-runners/releases/tag/v5.3.0 (@thekid) - Made
unittest -e
consistent withxp -e
: Add ability to omit trailing semicolon, support leading opening PHP tag, code piped via stdin. (@thekid)
- Deprecated RandomCodeGenerator and RandomPasswordGenerator classes from the security.password package (@thekid)
- Deprecated io.sys.StdStream class, superseded by io.streams API (@thekid)
- Deprecated
text.format
andtext.parser
APIs. (@thekid) - Deprecated io.SearchableStream class, superseded by text.Tokenizer API (@thekid)
- Deprecated security.Policy class and API (@thekid)
- Made ResourceProvider useable via
new import("lang.ResourceProvider")
. This way, you don't need to force its loading by adding e.g. a call to XPClass::forName() to the static initializer / constructor / etcetera. (@thekid) - Made typeof() behave consistent with reflection on callable type hint. (@thekid)
- Made util.log.LogCategory's first parameter optional, using "default" as identifier if omitted. (@thekid)
- Fixed
is()
to support function types correctly (@thekid) - Fixed
Objects::hashOf()
raising an exception when invoked w/ functions (@thekid) - Fixed
xp::stringOf()
producing incorrect indentation for values nested inside arrays (@thekid)
- Fixed class detail parsing for function types (@thekid)
- Fixed Type::forName() to also work for the
callable
type union. (@thekid) - Fixed issue #74: Ambiguity in function types (@thekid)
- Merged #73: Optimized reflection details for exception class being initialized multiple times. (@thekid, @kiesel)
- Changed
lang.XPClass
to load the reflection instance lazily. This way, we can defer class loading until we actually access a details requiring the reflection instance; and thus speed up iterating a packages' classes, for instance. (@thekid) - Deprecated
null()
core functionality and rewrote codebase to do without it. See pull request #70 (@thekid) - Deprecated
delete()
core functionality - use theunset
language construct instead. See pull request #69 (@thekid)
- Merged #71: Unicode unittest icons - @thekid
- Fixed thrown exceptions not appearing in
xp -r
output for interface (@thekid)
- Replaced all occurrences of
create_function()
with real closures (@thekid) - Added support for
/** @type [type] */
for fields. (@thekid)
- Deprecated uses() core functionality - use the
use
statement and PHP's namespaces instead. This also deprecates classes in the global namespace and the "package"-classes introduced in xp-framework/rfc#37. (@thekid) - Deprecated raise() core functionality - use the
throw
statement instead, it also uses lazy classloading for namespaced classes. (@thekid) - Removed deprecated support for "mixed", "char", "*", "array" and "array<string, string>"' in Type::forName(), see #64 (@thekid)
- Removed peer.server.Server::addListener() and related classes which had been deprecated since August 2006. See pull request #63 (@thekid)
- Deprecated
lang.ClassLoader::defineType(string, string, var)
usage. Its second parameter now expects a map containing "kind" (either "class", "trait" or "interface"), "extends", "implements" and "use" (arrays of type references - either XPClass instances or strings). (@thekid)
- Implemented relevant part of xp-framework/rfc#298: The
getClassName()
method is now deprecated. Rewrite code to usenameof($this)
. (@thekid) - Implemented xp-framework/rfc#292: Create anonymous instances from traits
with
newinstance()
. See pull request #60 (@thekid)
- Added support for
/** @var [type] */
for fields. http://www.phpdoc.org/docs/latest/references/phpdoc/tags/var.html (@thekid) - Added
lang.XPClass::isTrait()
andlang.XPClass::getTraits()
methods. (@thekid)
- Ensured modules are only initialized once - @thekid
- Added code compensating for removed hex support in strings in PHP7 - @thekid
- Added GzDecompressingInputStream::header() method - @thekid
- Fixed GzDecompressingInputStream not supporting gzip data with embedded original filenames - @thekid
- Added experimental support HHVM support. The version tested successfully while writing this is 3.6.0-dev. See #56 (@thekid)
- Added PHP 7.0 forward compatibility for the Catchable "Call to a member
function" functionality
and throw a
NullPointerException
. (@thekid) - Made xp-framework available via Composer (@thekid)
- Refactor fatal error handling, see #30 - (@thekid)
- Changed Console class to throw exceptions if read and/or write operations are invoked outside of a console environment - (@thekid, @kiesel)
- Removed deprecated
lang.Enum::membersOf()
method - (@thekid) - Removed deprecated static getProxyClass() and newProxyInstance() methods from the unittest.mock.MockProxyBuilder class - (@thekid)
- Removed deprecated methods in lang.archive.Archive:
- addFileBytes() - replaced by addFile()
- add() - replaced by addBytes() (@thekid)
- Removed deprecated methods in util.Date:
- mktime() - replaced by create()
- fromString() - handled by regular constructor (@thekid)
- Removed deprecated add*() methods in util.TimeSpan class - (@thekid)
- Removed support for deprecated multi-value annotations - (@thekid)
- Removed deprecated lang.ChainedException - (@thekid)
- Removed deprecated text.CSVGenerator and text.parser.CSVParser classes. Use https://github.com/xp-framework/csv instead - (@thekid)
- Removed deprecated Primitive::$[BOOLEAN, INTEGER] and Type::$ANY- (@thekid)
- Removed deprecated lang.types.Number::floatVal() - (@thekid)
- Minimum PHP version reqired is now PHP 5.4.0 - (@thekid)
- Removed deprecated
assertArray()
,assertObject()
,assertEmpty()
,assertNotEmpty()
,assertClass()
andassertSubclass()
methods from unittest.TestCase - (@thekid) - Changed xp::ENCODING to 'utf-8', all strings are now per default to be regarded as containing this charset except where explicitely stated otherwise! - (@thekid)
- Classes are now only referenceable by their namespaced names except
for those in the
lang
package (and subpackages thereof) - (@thekid) - Removed support for
__generic
style generics which have been deprecated since the implementation of RFC #193 - (@thekid) - Removed deprecated
xp::registry()
function, which has been superseded by the staticxp::$registry
member. Continue considering this a core internal API, though! (@thekid) - Removed obsolete top-level
gui
package - (@thekid) - Removed deprecated
ref()
andderef()
functionality - (@thekid) - Moved classes inside text.util - Random(Code|Password)Generator to the package security.password - (@thekid)
- Moved classes inside scriptlet.rpc to webservices.rpc - (@thekid)
- Implemented RFC #291: Stricter error handling (@thekid)
- Implemented RFC #289:
Stream
class deprecation, introduceChannel
(@thekid) - Implemented RFC #290: New Path class (@thekid)
- Implemented RFC #288: Deprecate LONG_MIN / LONG_MAX (@thekid)
- Implemented RFC #287: Get rid of tools (@thekid)
- Implemented RFC #184: ArrayMap and ArrayList - (@thekid)
- Implemented RFC #286: Function types - (@thekid)
- Implemented RFC #283: Unittest closure actions - (@thekid)
- Implemented RFC #276: Define classes with annotations - (@thekid)
- Implemented RFC #282: Generic type variables - (@thekid)
- Implemented RFC #098: Generic Filter interface - (@thekid)
- Implemented RFC #266: Extend the XP typesystem - (@thekid)
- Implemented RFC #281: PHP 5.4.0 - (@thekid)
- Implemented RFC #146: Unicode - (@thekid)
- Implemented RFC #136: PHP namespaces adoption. All classes in the XP framework are now in PHP 5.3 namespaces - (@thekid)
- Implemented RFC #136: PHP namespaces adoption. All classes in the XP framework are now in PHP 5.3 namespaces - (@thekid)
- Implemented RFC #279: Newinstance with closures in #2 (@thekid)
- Implemented RFC #186: Drop SAPI feature alltogether; after it was deprecated since 5.9.0 - (@thekid)
- Implemented RFC #262: Split up framework into minimal pieces:
- Extracted
util.telephony
into https://github.com/xp-framework/telephony - Extracted
xml
into https://github.com/xp-framework/xml - Extracted
xp.codegen
into https://github.com/xp-framework/codegen - Extracted
peer.webdav
into https://github.com/xp-framework/webdav - Extracted
peer.sieve
into https://github.com/xp-framework/sieve - Extracted
peer.irc
into https://github.com/xp-framework/irc - Extracted
peer.news
into https://github.com/xp-framework/news - Extracted
peer.mail
into https://github.com/xp-framework/mail - Extracted
peer.ldap
into https://github.com/xp-framework/ldap - Extracted
peer.http
into https://github.com/xp-framework/http - Extracted
peer.ftp
into https://github.com/xp-framework/ftp - Extracted
img
into https://github.com/xp-framework/imaging - Extracted
scriptlet
into https://github.com/xp-framework/scriptlet - Extracted
webservices
into https://github.com/xp-framework/webservices - Extracted
webservices.rest
into https://github.com/xp-framework/rest - Extracted
rdbms
into https://github.com/xp-framework/rdbms - Extracted
io.archive.zip
into https://github.com/xp-framework/zip - Extracted
text.spelling
into https://github.com/xp-framework/spelling - Extracted
text.parser
into https://github.com/xp-framework/parser - Extracted
text.csv
into https://github.com/xp-framework/csv - Extracted
text.doclet
into https://github.com/xp-framework/doclet - Extracted
remote
into https://github.com/xp-framework/remote (@kiesel, @thekid)
- Extracted
- Fixed problem with enum member auto-initialization and non-public static properties. (@thekid)
- Fixed #38: Use of undefined constant STR_ENC- (@thekid)
- Fixed #37: var not assignable from var?! - (@thekid)
- Fixed #34: FunctionType doesn't load classes - (@thekid)
- Fixed #32: Warning in String::endsWith() - (@thekid)
- Fixed #20: Generic classes and namespaces - (@thekid)
- Fixed
io.streams.Streams
instances to return true foris_file()
(@thekid) - Fixed
BufferedInputStream::available()
(see xp-framework/xp-runners#17) (@thekid) - Fixed closures inside objects and arrays leading to xp::stringOf() raising an exception (Serialization of 'Closure' is not allowed) - (@thekid)
- Fixed xp-framework/xp-framework#347 - "Undefined variable: len" in BSDSocket (@haimich)
- Added support for
::class
in annotations - #52 (@thekid) - Made io.streams.MemoryOutputStream implement io.streams.Seekable - (@thekid)
- Implemented support for expanding environment variables in property files. See PR #42 and xp-framework/xp-framework#365 (@thekid, @johannes85)
- Added support for
callable
typehint - (@thekid) - Changed util.profiling.Timer to be able to provide intermediate results
with
elapsedTime()
without prior call tostop()
, and added fluent interface to util.profiling.Timer's start() and stop() methods - (@thekid) - Implemented taking exceptions from tearDown() into account for test failure / success in the unittest package, see #32 - (@thekid)
- Implemented pushing back bytes to buffered stream (see #16) (@thekid)
- Added support for closures in annotations - #7 - (@thekid)
- Merged xp-framework/xp-framework#353: Add support for rolling logfile names in FileAppender (and Logger) - (@thekid, @kiesel)
- Changed Console class to print
true
andfalse
for booleans instead of1
for true and an empty string for false - (@thekid) - Implemented generic util.log.LogCategory::log($level, $args) See #4 - (@thekid)
- Added util.ConfigurationException and util.ApplicationException as requested in xp-framework/xp-framework#346 - (@thekid)
- Added support for
xpcli -?
for consistency reasons - (@thekid) - Extended the
with
statement to to work with lang.Closeable instances. See #2 - (@thekid)