v8jspecl.php.netV8 Javascript Engine for PHPThis extension embeds Google's V8 Javascript Engine into PHP.Patrick Reillypreillypreilly@php.netyesStefan Sieglstesiestesie@php.netyes2017-11-262.0.02.0.0stablestableThe MIT License (MIT)
Backward-incompatible changes
-----------------------------
- normal script execution shares its context with modules now (like on Node.js)
- expose a "global" symbol that references the global scope (like on Node.js)
- modules may return arbitrary values (not just objects; now like on Node.js)
- pick up exports from "module.exports" also (like on Node.js)
- handle exceptions thrown in module loader/normaliser like in other PHP scopes called from JS
(i.e. by default terminate execution, optionally propagate to JS side)
V8Js' modules vastly behave like Node.js modules now \o/
- php.ini option v8js.compat_php_exceptions has been removed
Deprecations
------------
- V8Js::registerExtension and V8Js::getExtensions are now deprecated, use snapshots instead
- likewise passing $extensions to V8Js::__construct
- V8Js::getPendingException and and V8Js::clearPendingException are deprecated, use try/catch
- likewise passing $report_uncaught_exceptions !== true to V8Js::__construct
Improvements
------------
- add documentation on heap snapshots
Bugfixes
--------
- fix build on Windows with VS2017 (thanks @Jan-E)
- fix enumeration of methods on V8 6.3
7.01.4.0v8js2010-12-300.1.00.1.0betabetaPHP
- Initial PECL release.
0.1.10.1.1betabeta2010-12-31PHP
- Fixed crash bug in setting v8.flags ini directive.
- Added notice to registerExtension() if trying to use it when V8 is already initialized.
0.1.30.1.3betabeta2012-07-06PHP
- Fixed build in PHP 5.4+
- Fixed bug #59553 (can't build due to missing class member)
- Fixed crash bug in setting v8.flags ini directive.
- Added notice to registerExtension() if trying to use it when V8 is already initialized.
0.1.40.1.4betabetaThe MIT License (MIT)2013-09-28
- Added time/memory limit support
- Moved to The MIT License (MIT)
0.1.50.1.5betabeta2015-03-13The MIT License (MIT)
- Fix package
0.2.00.2.0betabeta2015-03-13The MIT License (MIT)
- adapt to latest v8 API (v8 versions from 3.24.6 up to latest 4.3 branch supported now)
- v8 debugging support
- apply time & memory limits to V8Function calls
- support mapping of PHP objects implementing ArrayAccess to native arrays
- new API to set limits: setTimeLimit & setMemoryLimit methods on V8Js object
- typesafe JavaScript function wrappers
- improved back-and-forth object passing (rewrapping, correcty isolate unlocking)
- fix property and method visibility issues
- fix memory leaks
0.2.10.2.1betabeta2015-07-26The MIT License (MIT)
- adapt to latest v8 API (v8 versions from 3.24.6 up to latest 4.6 branch supported now)
- fixed FLAG_FORCE_ARRAY behaviour regarding property assignments
- properly stop (and restart) timer thread (for memory & cpu limits)
- fixed crash on failed module bootstrapping
0.2.20.2.2betabeta2015-08-26The MIT License (MIT)
- Fix CommonJS module caching
- Fix use-after-free issue on CommonJS module reuse
- Fix memory leaks in CommonJS module loader
- Fix memory leak regarding lost script resources (compileScript call et al)
- Improve V8Function call performance
0.2.30.2.3betabeta2015-08-27The MIT License (MIT)
- Fix FLAG_FORCE_ARRAY affecting V8Function objects
- Fix memory leak with repeated calls of methods on exported PHP objects
0.2.40.2.4betabeta2015-09-01The MIT License (MIT)
- Fix memory leak with repeated Array exports from PHP to JS
0.2.50.2.5betabeta2015-09-23The MIT License (MIT)
- Stop JS execution on PHP exceptions (instead of continuing silently)
- Allow propagation of PHP exceptions to JS context (disabled by default)
- Add v8js.compat_php_exceptions php.ini switch to switch previous behaviour back on
0.2.60.2.6betabeta2015-09-26The MIT License (MIT)
- Fix reference counting issue on PHP->JS->PHP exception propagation
0.3.00.3.0stablestable2015-10-11The MIT License (MIT)
- Fix multi-threading with pthreads extension
- Remove v8 debug agent support (which is unsupported by V8 since 3.28.4)
1.0.01.0.0stablestable2015-12-04The MIT License (MIT)
First PHP 7 release
0.4.00.4.0stablestable2015-12-07The MIT License (MIT)
- Improve -Wno-c++11-narrowing/-Wno-narrowing flag detection (clang/gcc5 support)
- Added ability to set properties on V8Function
- CommonJS modules now have access to V8Js' var_dump function
- V8JsScriptExtensions now reference the normalised module id (instead of just "require")
- fatal PHP errors triggered in setModuleLoader callback are now handled gracefully
- setModuleLoader callback is now allowed to return an empty string as source of module
- V8Js' internal module path normalisation may now be overrode using setModuleNormaliser
0.4.10.4.1stablestable2016-01-08The MIT License (MIT)
- Fix PHP.var_dump output on regexp objects (for consistency over all V8 versions)
- Fix "this" on V8Object method invocations
1.1.01.1.0stablestable2016-01-08The MIT License (MIT)
- fix build on Windows with Visual Studio 2015
- use libv8_platform on Windows
- fix double free on object export
- fix use after free regarding pending exceptions
- fix memory leaks on bailouts caused in V8 contexts
- don't abort PHP process on fatal V8 error (but trigger a warning instead)
This release also merges in new features from V8Js 0.4.0, namely
- Improve -Wno-c++11-narrowing/-Wno-narrowing flag detection (clang/gcc5 support)
- Added ability to set properties on V8Function
- CommonJS modules now have access to V8Js' var_dump function
- V8JsScriptExtensions now reference the normalised module id (instead of just "require")
- fatal PHP errors triggered in setModuleLoader callback are now handled gracefully
- setModuleLoader callback is now allowed to return an empty string as source of module
- V8Js' internal module path normalisation may now be overrode using setModuleNormaliser
0.5.00.5.0stablestable2016-03-05The MIT License (MIT)
- Export public methods on classes derived from \V8Js to V8
- Support V8 compiled with external snapshots
- Allow to create custom snapshots of V8 heaps
- Allow to create V8 contexts based on custom snapshots generated earlier
- Support V8 5.1 well
1.2.01.2.0stablestable2016-03-05The MIT License (MIT)
- allow to pass generators from PHP to JS and vice versa
Merge improvements from V8Js for PHP 5.x (version 0.5.0) to PHP 7.0 branch:
- Export public methods on classes derived from \V8Js to V8
- Support V8 compiled with external snapshots
- Allow to create custom snapshots of V8 heaps
- Allow to create V8 contexts based on custom snapshots generated earlier
- Support V8 5.1 well
0.6.00.6.0stablestable2016-03-08The MIT License (MIT)
- Allow to adjust the considered "amount of external memory" by objects exported to V8
0.6.10.6.1stablestable2016-03-24The MIT License (MIT)
- Fix configuration on MacOS platform
0.6.20.6.2stablestable2016-03-25The MIT License (MIT)
- Pass back V8Object instances, don't re-wrap
- Retain object identity on 'return $this'
- Retain object identity on JS-side 'return this'
0.6.30.6.3stablestable2016-05-22The MIT License (MIT)
Bug Fixes
- Send LowMemoryNotification signals to V8 before imposing memory limit
- Fix build against V8 version 5.2 (deprecated WeakCallbackInfo & GetHiddenValue et al)
- Improve/Clarify README
Code Cleanup
- Removed support for "old-age" V8 versions (i.e. V8 < 4.6.76)
- Removed old examples and pre-phpt test script
1.3.01.3.0stablestable2016-05-22The MIT License (MIT)
This release merges changes from V8Js for PHP 5.x (version 0.6.3) to PHP 7.0 branch.
New Features
- Allow to adjust the considered "amount of external memory" by objects exported to V8
Bug Fixes
- Pass back V8Object instances, don't re-wrap
- Retain object identity on 'return $this'
- Retain object identity on JS-side 'return this'
- Send LowMemoryNotification signals to V8 before imposing memory limit
- Fix build against V8 version 5.2 (deprecated WeakCallbackInfo & GetHiddenValue et al)
- Improve/Clarify README
Code Cleanup
- Removed support for "old-age" V8 versions (i.e. V8 < 4.6.76)
- Removed old examples and pre-phpt test script
0.6.40.6.4stablestable2016-07-02The MIT License (MIT)
Fix build against V8 5.3.337 (and higher)
1.3.11.3.1stablestable2016-07-02The MIT License (MIT)
Fix build against V8 5.3.337 (and higher)
1.3.21.3.2stablestable2016-09-04The MIT License (MIT)
- fix reference counting issue (and hence use-after-free memory error)
- fix another use-after-free issue with registerExtension
- fix build against PHP 7.1 (beta)
- correctly export reference-type variables to JavaScript
1.3.31.3.3stablestable2016-09-22The MIT License (MIT)
- fix detection of libv8_libbase.a during configuration
- fix license URIs in package.xml
1.3.41.3.4stablestable2017-03-05The MIT License (MIT)
- Bugfix: Reset fatal_error_abort on RSHUTDOWN
- Improve auto configuration (V8 detection)
- Improve build instructions on Linux & Windows
1.3.51.3.5stablestable2017-03-11The MIT License (MIT)
- Fix long vs. zend_long issues on x64 Windows
1.3.61.3.6stablestable2017-03-16The MIT License (MIT)
Bugfixes
- fix compilation with GCC7 (include necessary headers)
- fix build with recent V8 5.9 versions (libv8_libplatform not found)
- adapt exception_start_column.phpt test to changed output of recent V8 5.9 versions
- fix compilation with PHP 7.1.3
Refactorings
- drop TSRM stuff unneeded since PHP 7
- remove unused variables
- make memory_limit a size_t internally (and throw if negative values are provided on PHP interface)
1.4.01.4.0stablestable2017-04-23The MIT License (MIT)
Correctly initialize V8's ICU component
- path to libv8 library is now baked into the library to find icudtl.dat file
- if icudtl.dat file is moved after compile time, set v8js.icudtl_dat_path php.ini variable
1.4.11.4.1stablestable2017-11-26The MIT License (MIT)
- omit usage of deprecated V8 API (#311)
- fix build against V8 version 6.0 (#313)
- don't clean properties hash while it is iterated (#316)
- fix build against PHP 7.2
2.0.02.0.0stablestable2017-11-26The MIT License (MIT)
Backward-incompatible changes
-----------------------------
- normal script execution shares its context with modules now (like on Node.js)
- expose a "global" symbol that references the global scope (like on Node.js)
- modules may return arbitrary values (not just objects; now like on Node.js)
- pick up exports from "module.exports" also (like on Node.js)
- handle exceptions thrown in module loader/normaliser like in other PHP scopes called from JS
(i.e. by default terminate execution, optionally propagate to JS side)
V8Js' modules vastly behave like Node.js modules now \o/
- php.ini option v8js.compat_php_exceptions has been removed
Deprecations
------------
- V8Js::registerExtension and V8Js::getExtensions are now deprecated, use snapshots instead
- likewise passing $extensions to V8Js::__construct
- V8Js::getPendingException and and V8Js::clearPendingException are deprecated, use try/catch
- likewise passing $report_uncaught_exceptions !== true to V8Js::__construct
Improvements
------------
- add documentation on heap snapshots
Bugfixes
--------
- fix build on Windows with VS2017 (thanks @Jan-E)
- fix enumeration of methods on V8 6.3