v8js pecl.php.net V8 Javascript Engine for PHP This extension embeds Google's V8 Javascript Engine into PHP. Patrick Reilly preilly preilly@php.net yes Stefan Siegl stesie stesie@php.net yes 2017-11-26 2.0.0 2.0.0 stable stable The 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.0 1.4.0 v8js 2010-12-30 0.1.0 0.1.0 beta beta PHP - Initial PECL release. 0.1.1 0.1.1 beta beta 2010-12-31 PHP - 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.3 0.1.3 beta beta 2012-07-06 PHP - 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.4 0.1.4 beta beta The MIT License (MIT) 2013-09-28 - Added time/memory limit support - Moved to The MIT License (MIT) 0.1.5 0.1.5 beta beta 2015-03-13 The MIT License (MIT) - Fix package 0.2.0 0.2.0 beta beta 2015-03-13 The 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.1 0.2.1 beta beta 2015-07-26 The 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.2 0.2.2 beta beta 2015-08-26 The 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.3 0.2.3 beta beta 2015-08-27 The MIT License (MIT) - Fix FLAG_FORCE_ARRAY affecting V8Function objects - Fix memory leak with repeated calls of methods on exported PHP objects 0.2.4 0.2.4 beta beta 2015-09-01 The MIT License (MIT) - Fix memory leak with repeated Array exports from PHP to JS 0.2.5 0.2.5 beta beta 2015-09-23 The 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.6 0.2.6 beta beta 2015-09-26 The MIT License (MIT) - Fix reference counting issue on PHP->JS->PHP exception propagation 0.3.0 0.3.0 stable stable 2015-10-11 The 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.0 1.0.0 stable stable 2015-12-04 The MIT License (MIT) First PHP 7 release 0.4.0 0.4.0 stable stable 2015-12-07 The 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.1 0.4.1 stable stable 2016-01-08 The 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.0 1.1.0 stable stable 2016-01-08 The 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.0 0.5.0 stable stable 2016-03-05 The 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.0 1.2.0 stable stable 2016-03-05 The 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.0 0.6.0 stable stable 2016-03-08 The MIT License (MIT) - Allow to adjust the considered "amount of external memory" by objects exported to V8 0.6.1 0.6.1 stable stable 2016-03-24 The MIT License (MIT) - Fix configuration on MacOS platform 0.6.2 0.6.2 stable stable 2016-03-25 The 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.3 0.6.3 stable stable 2016-05-22 The 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.0 1.3.0 stable stable 2016-05-22 The 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.4 0.6.4 stable stable 2016-07-02 The MIT License (MIT) Fix build against V8 5.3.337 (and higher) 1.3.1 1.3.1 stable stable 2016-07-02 The MIT License (MIT) Fix build against V8 5.3.337 (and higher) 1.3.2 1.3.2 stable stable 2016-09-04 The 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.3 1.3.3 stable stable 2016-09-22 The MIT License (MIT) - fix detection of libv8_libbase.a during configuration - fix license URIs in package.xml 1.3.4 1.3.4 stable stable 2017-03-05 The MIT License (MIT) - Bugfix: Reset fatal_error_abort on RSHUTDOWN - Improve auto configuration (V8 detection) - Improve build instructions on Linux & Windows 1.3.5 1.3.5 stable stable 2017-03-11 The MIT License (MIT) - Fix long vs. zend_long issues on x64 Windows 1.3.6 1.3.6 stable stable 2017-03-16 The 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.0 1.4.0 stable stable 2017-04-23 The 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.1 1.4.1 stable stable 2017-11-26 The 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.0 2.0.0 stable stable 2017-11-26 The 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