Recent Releases

2.4.030 Sep 2017 14:05 minor feature: this release uses TypeAssert v3 instead of v2, allowing it to be used in new projects. this release splits the API for enabling/disabling validation into separate options for child validation and attribute validation. :xhp:: ENABLE_VALIDATION no longer exists. attribute validation is off by default; we aim to remove it completely from a future release. This will allow removing the dependency on TypeAssert in the future. The runtime validation isn't as useful now given that the typechecker validates attributes specified when instantiating XHP objects. The runtime validation is bad for performance. Keeping the runtime validation in sync with the typechecker has been a frequent source of.
2.3.205 Dec 2016 18:05 minor feature: Add support for fredemmott/type-assert v1.0.
2.3.108 Nov 2016 06:25 minor feature: Remove getWaitHandle()- gt;join() Replaced with HH Asio join(). Tested with 3.15 and nightly.
2.3.029 Mar 2016 09:05 minor feature: Change contenteditable and draggable from bool to enum "true", "fal se" . .
2.2.413 Feb 2016 03:16 minor feature: Remove bogus assert Unneeded. Typechecker and tests happy. Needed for 3.12 as assert.active default has changed.
2.2.323 Dec 2015 03:16 minor feature: callable is undefined in Hack: 60a4141 . Update 91carriage/phpunit-hhi to versions that support assume_php-false (only affects --dev): 6788a34 . Exclude tests/ from release tarballs, including packagist installs of release versions: 7e9599a.
2.2.215 Jul 2015 16:05 minor feature: Add :picture. Allow arbitrary values for :input autocomplete attribute. Support num and arraykey attributes. Add minimum version of HHVM (3.6.0) to composer.json.
2.2.130 Jun 2015 03:25 minor feature: if an attribute is specified as callable, raise an exception that states it's unsupported in XHP-Lib =2.0 instead of the generic 'unknown attribute type' error. Support non-numeric values for :input min/max eg date or time.
2.2.028 May 2015 11:05 minor feature: This release fixes an issue where composable-element would not fully process nested structures, except for rendering them. In particular, while children were always validated for root elements, they would not always be validated for deeper nested children. This release may uncover bugs in code that depends on children not being validated. This has been fixed by combining the render and validation steps into one recursive process - this may change the execution order of AsyncXHP elements, however this is already undefined by HHVM.
2.1.024 May 2015 14:45 major feature: For classes using XHPHelpers, attributes are automatically transferred to the root element; for example, if you call element- setAttribute('id', 'foo') and that element renders a div, that div will have the id attribute set. The class attribute is appended instead of replacing the existing value. In line with the rest of Hack and the increased typechecker strictness in HHVM 3.7, incorrect attribute types now throw an exception instead of logging an E_USER_DEPRECATED. This release also contains the change to the 2.0.x branch reducing the boilerplate for XHPAsync - see the v2.0.2 release notes for details.
2.0.117 Apr 2015 10:25 minor bugfix: Make second argument to getContext() optional. Improve performance of AwaitableXHP. Add 'init.php' for people who choose not to use Composer. Small changes to make it pass the typechecker in the upcoming HHVM 3.7. Updated patent grant (https://code.facebook.com/posts/1639473982937255/updating-our-open-source-patent-grant/).
2.0.007 Apr 2015 10:25 major feature: Convert to Hack. The 1.x release series is still supported for users of PHP5. Added AwaitableXHP ; this allows you to build efficient XHP components where data fetching requirements are an implementation detail instead of part of the API they present. Attribute coercion is now much stricter, and raises an E_DEPRECATED. In a future release, the Hack typechecker will consider any coercion to be an error, and XHP-Lib will throw an exception. Added XHPUnsafeRenderable and XHPAlwaysValidChild interfaces, making it easier to include markup from other sources in an XHP tree. See MIGRATING.md for more information. Split out getID() , addClass() , transferAttributes() and friends from :x:html-element to a new XHPHelpers trait, which implements the new HasXHPHelpers interface. Add new XHPRoot interface, implemented by :x:primitive and :x:composable-element . This is the return type of render(). Removed Callable attribute type, as this is not supported by Hack. Functions that dealt with arrays (eg getAttributes() ) now use Vector, Map, or Set. Added reflection; ReflectionXHPClass is the main entry point.