v8js: Changelog

Version Message
2.1.2 - support PHP 7.4
- support V8 8.x
- pass pointer to (char*) instead of (zend_string*) to spprintf (issue #431)
- improve README
2.1.1 - support PHP 7.3
- support V8 7.x (now V8 > 6.9 is required)
- fix module path normaliser (issue #349)
- fix export bug w/ multiple derived classes (issue #410)
2.1.0 - emit warning when compiling against V8 without untrusted code mitigations
- support native modules (i.e. expose PHP objects via require('...'))
2.0.0 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
1.4.1 - 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
1.4.0 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.3.6 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.3.5 - Fix long vs. zend_long issues on x64 Windows
1.3.4 - Bugfix: Reset fatal_error_abort on RSHUTDOWN
- Improve auto configuration (V8 detection)
- Improve build instructions on Linux & Windows
1.3.3 - fix detection of libv8_libbase.a during configuration
- fix license URIs in package.xml
1.3.2 - 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.1 Fix build against V8 5.3.337 (and higher)
1.3.0 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
1.2.0 - 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
1.1.0 - 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
1.0.0 First PHP 7 release
0.6.4 Fix build against V8 5.3.337 (and higher)
0.6.3 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
0.6.2 - Pass back V8Object instances, don't re-wrap
- Retain object identity on 'return $this'
- Retain object identity on JS-side 'return this'
0.6.1 - Fix configuration on MacOS platform
0.6.0 - Allow to adjust the considered "amount of external memory" by objects exported to V8
0.5.0 - 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.4.1 - Fix PHP.var_dump output on regexp objects (for consistency over all V8 versions)
- Fix "this" on V8Object method invocations
0.4.0 - 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.3.0 - Fix multi-threading with pthreads extension
- Remove v8 debug agent support (which is unsupported by V8 since 3.28.4)
0.2.6 - Fix reference counting issue on PHP->JS->PHP exception propagation
0.2.5 - 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.4 - Fix memory leak with repeated Array exports from PHP to JS
0.2.3 - Fix FLAG_FORCE_ARRAY affecting V8Function objects
- Fix memory leak with repeated calls of methods on exported PHP objects
0.2.2 - 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.1 - 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.0 - 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.1.5 - Fix package
0.1.4 - Added time/memory limit support
- Moved to The MIT License (MIT)
0.1.3 - Fixed build in PHP 5.4+
- Fixed bug #59553 (can't build due to missing class member)
0.1.2 - Removed unnecessary notice added to registerExtension() in previous release
0.1.1 - 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.0 - Initial PECL release