Skip to content

Releases: xp-framework/core

6.2.5: I/O goodness

25 May 15:35

Choose a tag to compare

Heads up!

  • 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)

Features

  • 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)

6.2.4: Unittest command line features

23 May 15:48

Choose a tag to compare

Heads up!

  • Deprecated XPI (XP Installer). Use Composer or Glue instead.
    (@thekid)

Features

6.2.3: Cleanup

17 May 22:30

Choose a tag to compare

Heads up!

  • 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 and text.parser APIs.
    (@thekid)
  • Deprecated io.SearchableStream class, superseded by text.Tokenizer API
    (@thekid)
  • Deprecated security.Policy class and API
    (@thekid)

Features

  • 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)

Bugfixes

  • 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)

6.2.2: Function type fixes

17 May 13:51

Choose a tag to compare

  • 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)

6.2.1: Performance optimization

14 May 16:19

Choose a tag to compare

Features

  • Merged #73: Optimized reflection details for exception
    class being initialized multiple times.
    (@thekid, @kiesel)

6.2.0: Null handling

05 May 20:00

Choose a tag to compare

Heads up!

  • 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 the unset language
    construct instead. See pull request #69
    (@thekid)

Features

6.1.1: @type for fields

25 Apr 11:30

Choose a tag to compare

Bugfixes

  • Fixed thrown exceptions not appearing in xp -r output for interface
    (@thekid)

Features

  • Replaced all occurrences of create_function() with real closures
    (@thekid)
  • Added support for /** @type [type] */ for fields.
    (@thekid)

6.1.0: Traits, XP 7 roadmap part 1

06 Apr 21:08

Choose a tag to compare

Heads up!

  • 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)

RFCs

Features

6.0.1: Bugfix release

26 Feb 23:23

Choose a tag to compare

This release contains the following bugfixes:

6.0.0

08 Feb 13:03

Choose a tag to compare

Heads up!

  • 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() and assertSubclass() 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 static xp::$registry member. Continue considering this a core
    internal API, though! (@thekid)
  • Removed obsolete top-level gui package - (@thekid)
  • Removed deprecated ref() and deref() 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)

RFCs

Bugfixes

  • 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 for is_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)

Features

  • 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 to stop(), 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 and false for booleans instead of
    1 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)