v8: Changelog

Version Message
0.2.2 I'm excited to announce that starting from this release documentation is available at
https://php-v8.readthedocs.io.

Read The Docs is awesome place to host documentation and Sphinx would help to create decent documentation.
Contributors welcomed!

This is the last version that supports PHP 7.1. Nex versions wil reqiure PHP >= 7.2 unless further notice.

BC-breaking changes:

- Upgrade v8 version to 6.6.313
- Remove deprecated and non-working ScriptCompiler cache options
- Rework PromiseObject
- Add ValueObject::isBigInt64Array() and ValueObject::isBigUint64Array methods

Non-breaking changes:

- Add number of native and detached contexts to HeapStatistics
- Add support to produce code cache
- Add ScriptCompiler::OPTION_EAGER_COMPILE option
- Add support for integer- - Add {Template,ObjectValue}:setLazyDataProperty() method
0.2.1 This release brings stability and improvements. It contains some minor BC-breaking changes which should not affect general public. See full change log below for details

Changelog:

BC-breaking changes:

- require libv8 >= 6.4.6;
- remove UnboundScript::kNoScriptId const and return null in getId() on no data
- change ScriptCompiler::cachedDataVersionTag(): int method name and return type to be ScriptCompiler::getCachedDataVersionTag(): float;
- remove StartupData::getRawSize() method;

Non-breaking changes:

- fix segfault when invalid startup data passed to isolate;
- fix external exception lost when it has refcount 1;
- change script compiler version tag generation to take into account changes to extension internals;
- add CallbackInfoInterface;
- add support for ScriptCompiler::kProduceFullCodeCache;
- add {Isolate,Context}::within() as optimization solution;
- add StartupData::isRejected();
- add docs skeleton.
0.2.0 This release introduces many major changes to public API and breaks BC for the sake of more solid and stable API in a further versions.

PLEASE READ:
Maintaining this project takes significant amount of time and efforts.
If you like my work and want to show your appreciation, please consider supporting me: https://www.patreon.com/pinepain

Changes:

- Drop PHP 7.0 support, #30;
- Add typehint for $value param in Template::set(), #36;
- Rename constants to match PSR-2 convention, #34;
- Make enum classes with constants final, #39 ;
- Rename HeapStatistics methods to match PSR-2, #38;
- Rename V8\Exception class and it methods, #33;
- Add FunctionObject::getScriptId() method;
- Remove no-data constants and use NULL instead, #40;
- Refactor ScriptOriginOptions to use bit field, #42;
- Remove redundant ScriptOrigin::is*() methods, #61;
- Add missed method to Value stub;
- Fix improperly adjusted external allocated memory on weak callback call;
- Add Proxy and Promise builtin support, #55;
- Add support for regexp dotAll flag, #54;
- Move RegExpObject\Flags constants under RegExpObject, #64;
- Move CompileOptions constants under ScriptCompiler, #65;
- Add Isolate::MemoryPressureNotification() support, #57;
- Require libv8 >= 6.3.163;
- Add StackFrame::isWasm(), #53;
- Get rid of CallbackInfo, #67;
- Add immutable prototype chains to ObjectTemplate, #58;
- Add StartupData::warmUpSnapshotDataBlob(), #59;
- Add missed JSON class support, #56;
- Add Message::getErrorLevel() method, #52;
- Rename SymbolValue methods, #41;
- Rename TryCatch methods, #41;
- Add missed PrimitiveValue::value() abstract method;
- Add Isolate::SetRAILMode(), #60;
- Fix improperly internally constructed RAILMode enum class, #60.

See https://github.com/pinepain/php-v8/issues/43#issuecomment-333329225 for details
0.1.9 Refactor methods name to follow PSR-2 camelCase convention.

NOTE: This is the last release that supports PHP 7.0.

Changes list:
- refactor methods name to follow PSR-2 camelCase convention;
0.1.8 This release extends and clarify existent API and does not introduce any BC-breaking changes.

Changes list:

- Change V8\Exception::*Error() return type to V8\ObjectValue as the only possible type;
- Add external exception wiring option to V8\Isolate::ThrowException().
0.1.7 Changes to public API and other important changes which may affect end-user:

- Require v8 >= 6.1.170;
- Fix segfaults on unclean shutdown;
0.1.6 Changes to public API and other important changes which may affect end-user:

- Enforce `Value()` method on all `V8\Primitive` values;
- Fix segfault when zero args passed to `V8\FunctionObject::NewInstance()`;
0.1.5 This release introduces separate representation for undefined value and fixes some bugs.
Please, see change list below for more details.

* - BC-breaking or potentially BC-breaking changes

Changes to public API and other important changes which may affect end-user:

- * Make V8\Isolate::ThrowException() method void;
- * Remove non-documented V8Isolate::ContextDisposedNotification();
- * Make V8\Value, V8\PrimitiveValue and V8\NameValue abstract;
- V8\Isolate time limit affects js runtime only;
- Introduce separate class for undefined value - V8UndefenedValue;
- Fix V8\Tempalte::Set() to do not accept non-primitive values;
- Remove all private properties from V8\Isolate;
0.1.4 This release adds low-level optimizations, simplify some internal methods and fix few bugs. For more details see change list below.

As of this release, V8 >= 6.0.45 required.

* - BC-breaking or potentially BC-breaking changes

Changes to public API and other important changes which may affect end-user:

- Raise libv8 required version to 6.0.45;
- Add V8\Value::InstanceOf() method;
- Add V8\ObjectValue::SetNativeDataProperty() method;
- Add V8\PropertyFilter, V8\KeyCollectionMode and V8\IndexFilter enums;
- Add property filtering support to V8\ObjectValue::Get{Property,OwnProperty}Names();
- Consistently expose all well-known symbols on V8\SymbolValue;
- Setting boolean props on StackFrame with valid type;
- Remove non-working and non-supporting $attributes argument from V8\StringValue constructor in stubs;
- * Add V8\ConstructorBehavior and support for it in V8\FunctionTemplate constructor;
- * Add signature support in V8\FunctionTemplate constructor via $receiver;
- * Add signature support to Template:SetNativeDataProperty() and ObjectTemplate::SetAccessor() via $receiver;
- * Remove require $isolate parameter from V8\Value::TypeOf();
- * Remove deprecated V8\Context::EstimatedSize() method;
- * Remove deprecated V8\StackTrace\StackTraceOptions;
- * Remove deprecated V8\StackTrace::AsArray();
- * Require Context explicitly in V8\Isolate::ThrowException();
- * Rename V8\Exceptions\GenericException to V8\Exceptions\Exception;
- * Rename V8\Exceptions\AbstractResourceLimitException to V8\Exceptions\ResourceLimitException;
- internal: Check whether returned context is empty in V8\Isolate\GetEnteredContext() instead of checking InContext();
0.1.3 This release adds low-level optimizations, simplify some internal methods and fix few bugs. For more details see
change list below.

As of this release, V8 >= 5.9.5 required.

* - BC-breaking or potentially BC-breaking changes

Changes to public API and other important changes which may affect end-user:

- * Replace V8\Isolate::GetCurrentContext with V8\Isolate::GetEnteredContext();
- * Remove V8\ObjectValue::CreationContext(), use V8\ObjectValue::GetContext();
- Add V8\PropertyCallbackInfo::ShouldThrowOnError() method;
- Add V8\FunctionCallbackInfo::NewTarget() method;
- V8\ReturnValue now explicitly holds isolate and context which could be accessed outside of calling context;
- Fix potential problems with V8\FunctionCallbackInfo and V8\PropertyCallbackInfo when used outside calling scope;
- Fix leak when V8\ScriptCompiler::CompileFunctionInContext() invoked with arguments and/or context extensions;
- Fix segfault when abruptly exiting from isolate which entered multiple time or from multiple nested isolates;
- Add V8\Exceptions\ValueException to stubs;
- Remove $global_template and $global_object private props from V8\Context.
0.1.2 This release adds script compilation and caching. Also more new methods added and some internal logic refactored.
See detailed changes below.

As of this release, V8 >= 5.8.168 required.

* - BC-breaking or potentially BC-breaking changes.

Changes to public API and other important changes which may affect end-user:

- * Add $is_wasm and $is_module options to V8\ScriptOriginOptions and V8\ScriptOrigin;
- * Remove non-standard V8\Scrip::{getSource,getOrigin};
- * Remove V8\ObjectValue::{Get,Set,Has,Delete,CreateDataProperty}Indexed methods;
- * Remove non-working V8\Context extensions support;
- * Handle V8\IntegerValue sub-types when returning values from V8, fixes #19;
- Add V8\UnboundScript class;
- Add V8\ScriptCompiler\CachedData class;
- Add V8\ScriptCompiler\CompileOptions class;
- Add V8\ScriptCompiler\Source class;
- Add V8\ScriptCompiler;
- Add V8\SymbolValue::GetToPrimitive() method;
- Add V8\Value::IsNullOrUndefinedl() method;
- Add more V8\Value::Is*() methods;
- Add V8\MapObject;
- Add V8\SetObject;
- Fix obj and func templates external memory adjusting.
0.1.1 In this release new methods added and some internal logic refactored.

As of this release, V8 >= 5.4.420 required.

Also, deprecated or soon to be deprecated API calls are removed in this release, see note on BC-breaking changes below.

- add V8\Isolate::IsInUse() method.
- add V8\AdjustableExternalMemoryInterface interface;
- add V8\ObjectValue::AdjustExternalAllocatedMemory() method;
- add V8\ObjectValue::GetExternalAllocatedMemory() method;
- add V8\FunctionTemplate::AdjustExternalAllocatedMemory() method;
- add V8\FunctionTemplate::GetExternalAllocatedMemory() method;
- add V8\ObjectTemplate::AdjustExternalAllocatedMemory() method;
- add V8\ObjectTemplate::GetExternalAllocatedMemory() method;
- rewrite callbacks structures to use std containers;
- use realistic external allocated memory value to notify isolate about based on callbacks structures size and optionally specified by user value.
- add V8\Value::TypeOf() method;
- add V8\ObjectValue::IsConstructor() method;
- add V8\ObjectValue::SetIntegrityLevel() method;
- add V8\CallbackInfo::InContext() method;
- add V8\ReturnValue::InContext() method;
- add V8\ReturnValue::Get() method;
- add V8\HeapStatistics::malloced_memory() method;
- add V8\HeapStatistics::peak_malloced_memory() method;
- properly shutdown in case of OOM;
- simplify V8\ReturnValue internals and integration with callbacks.

BC breaking changes:

- V8\ObjectValue::ForceSet() removed in a favor of V8\ObjectValue::DefineOwnProperty(), V8\ObjectValue::CreateDataProperty() and V8\ObjectValue::CreateDataPropertyIndex().