All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Auto-bumped V8 to 13.1.201.16.
- Auto-bumped V8 to 13.1.201.15.
- Auto-bumped V8 to 13.1.201.9.
- Auto-bumped V8 to 13.1.201.8.
- Auto-bumped V8 to 13.0.245.16.
- Auto-bumped V8 to 12.9.202.27.
- Auto-bumped V8 to 12.9.202.24.
- Auto-bumped V8 to 12.9.202.22.
- Auto-bumped V8 to 12.9.202.18.
- Auto-bumped V8 to 12.7.224.18.
- Auto-bumped V8 to 12.7.224.16.
- Auto-bumped V8 to 12.6.228.28.
- Made scheduled V8 rebuilding and releases fully automatic.
- The build broke because CopyablePersistentTraits was removed in V8 4683daaf774982b1aa0e46ae38f2bdf9c995c90d.
- Removed bad release 0.13.0.
- Auto-bumped V8 to 12.6.228.21.
- Auto-bumped V8 to c546005d65b58039ccaf3f81be3772eee45454f9.
- The build workflows commit directly, instead of creating PRs.
- Release tags need to include the patch number. Thank you for the report, @GraphR00t. (#62)
- Bumped V8 to d5c51572dec5b2a385b57549fe195c319f1284e2.
- Required Go version changed to 1.19 for CGo across modules.
- Split the built libraries into separate submodules to work around Go's 500 MB module size limit.
- The library modules still had the old x86_64 names.
- Required Go version changed to 1.17 (needed for SharedArrayBuffer support)
- Forked from rogchap.com/v8go
- x86_64 is now referred to as amd64 in V8 builds, conforming to
GOARCH
- Support for getting the underlying data (as a
[]byte
) from a SharedArrayBuffer - Support for
Symbol
- Support for
FunctionCallback
to return an error - Support for exceptions as Go errors
- Support for Android on amd64 and arm64
- Upgrade to V8 12.0.267.10
- Upgrade to V8 11.1.277.13
- Added support for Value.release() and FunctionCallbackInfo.release(). This is useful when using v8go in a long-running context.
- Use string length to ensure null character-containing strings in Go/JS are not terminated early.
- Object.Set with an empty key string is now supported
- Upgrade to V8 10.9.194.9
- Upgrade V8 build OS to Ubuntu 22.04
- Support for calling constructors functions with NewInstance on Function
- Access "this" from function callback
- value.SameValue(otherValue) function to compare values for sameness
- Undefined, Null functions to get these constant values for the isolate
- Support for calling a method on an object.
- Support for calling
IsExecutionTerminating
on isolate to check if execution is still terminating. - Support for setting and getting internal fields for template object instances
- Support for CPU profiling
- Add V8 build for Apple Silicon
- Add support for throwing an exception directly via the isolate's ThrowException function.
- Support for compiling a context-dependent UnboundScript which can be run in any context of the isolate it was compiled in.
- Support for creating a code cache from an UnboundScript which can be used to create an UnboundScript in other isolates to run a pre-compiled script in new contexts.
- Included compile error location in
%+v
formatting of JSError - Enable i18n support
- Removed error return value from NewIsolate which never fails
- Removed error return value from NewContext which never fails
- Removed error return value from Context.Isolate() which never fails
- Removed error return value from NewObjectTemplate and NewFunctionTemplate. Panic if given a nil argument.
- Function Call accepts receiver as first argument. This subtle breaking change will compile old code but interpret the first argument as the receiver. Use
Undefined
to prepend an argument to fix old Call use. - Removed Windows support until its build issues are addressed.
- Upgrade to V8 9.6.180.12
- Add some missing error propagation
- Fix crash from template finalizer releasing V8 data, let it be disposed with the isolate
- Fix crash by keeping alive the template while its C++ pointer is still being used
- Fix crash from accessing function template callbacks outside of
RunScript
, such as inJSONStringify
- Promise resolver and promise result
- Convert a Value to a Function and invoke it. Thanks to @robfig
- Windows static binary. Thanks to @cleiner
- Setting/unsetting of V8 feature flags
- Register promise callbacks in Go. Thanks to @robfig
- Get Function from a template for a given context. Thanks to @robfig
- Upgrade to V8 9.0.257.18
- Go GC attempting to free C memory (via finalizer) of values after an Isolate is disposed causes a panic
- Memory being held by Values after the associated Context is closed
- Support for the BigInt value to the big.Int Go type
- Create Object Templates with primitive values, including other Object Templates
- Configure Object Template as the global object of any new Context
- Function Templates with callbacks to Go
- Value to Object type, including Get/Set/Has/Delete methods
- Get Global Object from the Context
- Convert an Object Template to an instance of an Object
- NewContext() API has been improved to handle optional global object, as well as optional Isolate
- Package error messages are now prefixed with
v8go
rather than the struct name - Deprecated
iso.Close()
in favor ofiso.Dispose()
to keep consistancy with the C++ API - Upgraded V8 to 8.8.278.14
- Licence BSD 3-Clause (same as V8 and Go)
- Value methods for checking value kind (is string, number, array etc)
- C formatting via
clang-format
to aid future development - Support of vendoring with
go mod vendor
- Value methods to convert to primitive data types
- Use g++ (default for cgo) for linux builds of the static v8 lib
- Upgraded V8 to 8.7.220.31
- Manually dispose of the isolate when required
- Monitor isolate heap statistics. Thanks to @mehrdadrad
- Upgrade V8 to 8.0.426.15
- Upgrade V8 to 7.7.299.9
- Create V8 Isolate
- Create Contexts
- Run JavaScript scripts
- Get Values back from JavaScript in Go
- Get detailed JavaScript errors in Go, including stack traces
- Terminate long running scripts from any Goroutine