2.6.011 May 2018 14:05
is available under the MIT license.
Adds support for the XHP spread operator (available in HHVM 3.24+).
2.5.110 Feb 2018 14:25
Safe_array=true and safe_vector_array=true.
Enable_experimental_tc_features=no_fallback_in_namespaces (nightlies, expected in 3.25).
2.5.009 Jan 2018 16:05
test with experimental shape options
test against HHVM nightly builds.
make AttributesTest strict instead of decl.
change tested shape behavior depending on HHVM_VERSION_ID.
Add 'as' attribute to link tag.
Add mention of hhvm-autoload requirement.
Type checking with 'safe_array = true'.
Support HHVM 3.24, require HHVM 3.23.
Add string cast for 3.24 in tests.
2.4.030 Sep 2017 14:05
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.2.413 Feb 2016 03:16
Remove bogus assert
Typechecker and tests happy.
Needed for 3.12 as assert.active default has changed.
2.2.323 Dec 2015 03:16
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
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
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
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
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
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
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
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.