profile
viewpoint
C. Scott Ananian cscott Wikimedia Foundation Boston, MA http://cscott.net See https://en.wikipedia.org/wiki/User:cscott

cscott/compressjs 313

Pure JavaScript de/compression (bzip2, etc) for node.js, volo, and the browser.

cjb/codex-blackboard 24

Meteor app for coordinating solving for our MIT Mystery Hunt team

cscott/bip38-cracker 10

bip38-cracker, for this contest on reddit: http://www.reddit.com/r/Bitcoin/comments/1zkcya/lets_see_how_long_it_takes_to_crack_a_4_digit/

cscott/babybird 5

A slimmed down Promise implementation, built for speed.

cscott/3d-melltorp 3

Enclosure for 3d printer based on IKEA Melltorp tables

cscott/android-launcher2 3

Clone of https://android.googlesource.com/platform/packages/apps/Launcher2

cscott/3d-multimaterial 2

Direct-drive multi-material printing using Printrbot extruders

cscott/asterism 2

Jessica and Scott Wedding Website

cscott/3d-box 0

OpenSCAD sources for PCB enclosures

push eventwikimedia/mediawiki-extensions

jenkins-bot

commit sha 7d4bfad4c8f9eeb7a45cb67e9efe8a8533037a6e

Update git submodules * Update ProofreadPage from branch 'master' to 4f88a0c7d85ff8395c27574f5823eeb662a58177 - Merge "Add displayed page number to TopPanel" - Add displayed page number to TopPanel Bug: T263653 Change-Id: Idd999123b021a69311525899e87b88d18e0f489d

view details

push time in 2 hours

push eventwikimedia/mediawiki-extensions

zoranzoki21

commit sha a9094d051c4f4148064fe88bfcb078aeb858b6b7

Update git submodules * Update NamespaceRelations from branch 'master' to 4b6f4c6da64c1912fb44fbe27f251641c20ce3d5 - Convert NamespaceRelations to use extension registration Bug: T243675 Change-Id: Ib8df2c3b0426eff5cbaa4f1eed96fb132d1c3c86

view details

push time in 2 hours

push eventwikimedia/mediawiki-extensions

jenkins-bot

commit sha fecebdd327e51118e6354822622bb127646cee61

Update git submodules * Update YouTube from branch 'master' to 63e4a0f587ac2e8ee2af457318fb24efaf4fbd6d - Merge "Add starting time for YouTube videos" - Add starting time for YouTube videos Added 'start' argument that takes integer value (seconds) and uses it as a timestamp for where video should start to play (it's 't' in YouTube URL). Also intoduced a change that allows for more potential URL arguments to be added. This only affects YouTube videos. Change-Id: I04f1dc5f880dc880235b48ea776e59e6f1dd2fe3

view details

push time in 2 hours

push eventwikimedia/labs-tools-book2scroll

Jay (CIS-A2K)

commit sha efd279eacf8aa5de8ed400d4e7775188bc7dfd25

Add /<langcode>/ route to show list of indexes directly Bug: T268915 Change-Id: I09709da7ee2773448350cadf425d0e001cd184d0

view details

push time in 4 hours

push eventwikimedia/labs-tools-book2scroll

Jay (CIS-A2K)

commit sha 8fc8c9796d22808b30528d55d883e84f0bd33838

Fix minor typo Change-Id: I2dcb99b92ba1ad766ec05c994ccf9ec05bc1d178

view details

push time in 5 hours

push eventwikimedia/labs-tools-book2scroll

Jay (CIS-A2K)

commit sha 3b97f91e281365825c5c76febd9f2695bd2c8f06

Improve navigation Bug: T268913 Change-Id: Iaa280a112d44260d870e928d29f577addd8e897b

view details

push time in 5 hours

push eventwikimedia/mediawiki-extensions

jenkins-bot

commit sha 237ec0f8ab9fe93bffc75ebf4b0d56cbb7003fcd

Update git submodules * Update ProofreadPage from branch 'master' to 4b7f1540e45bfc7734d7438ccf3a0ce2741c8c1e - Merge "Adds a rel=prefetch for the previous and next Page: page" - Adds a rel=prefetch for the previous and next Page: page Bug: T230689 Change-Id: I6827f76afdd6e52b5875c3b9ca2b39fdd5a95be6

view details

push time in 6 hours

push eventwikimedia/mediawiki-extensions

Reedy

commit sha 2ec14dc97efec13638167151d420fb488a1ffc54

Update git submodules * Update AbuseFilter from branch 'master' to f11bbe1c9bb35ae5807e66ff2b0aa4de900ad034 - Use ::class rather than stringified class name Change-Id: I5695f40627122b76d792a3a05c97c42d921a5536

view details

push time in 6 hours

push eventwikimedia/mediawiki-extensions

Jack Phoenix

commit sha e7b1f7fa5042e3539c404b34a719ccf4eaaac175

Update git submodules * Update Challenge from branch 'master' to 18de99568a0349819653e19ab03630a210ba78d9 - Mark Special:ChallengeStandings table header messages as non-optional in message documentation The single-letter abbreviations used in these messages are derived from the words "Losses", "Wins" and "Ties". It's reasonable to assume that the localizations of these words will have a different first letter, which thus then means that these messages will definitely also need to be changed accordingly. Thanks to Raimond Spekking for noticing this while reviewing https://gerrit.wikimedia.org/r/c/translatewiki/+/643706 Change-Id: I7139bf5f43086f9f12449157be209a37b80048d6

view details

push time in 8 hours

push eventwikimedia/mediawiki-skins-Cosmos

Universal Omega

commit sha 5ba1e2e8b798e94ee4ad31d2a85e9cc11d0ba609

change i18n message for administration tab Change-Id: Ifc1d3ec93e8b158a13f5d67df250d6e7c34fda6b

view details

push time in 15 hours

push eventwikimedia/mediawiki-extensions

DannyS712

commit sha 59d793ff225129d2dd808ce829a91d4239ded2ba

Update git submodules * Update AbuseFilter from branch 'master' to 66a43948f389564cf293c1f9b2d9e43e29331805 - EditBoxBuilder: Minor cleanup for readability Add use statements for OOUI classes, clean up line breaks Should be a no-op Change-Id: I7e83a41a138557f99fadcef38e992bfc1bff7f7f

view details

push time in 16 hours

push eventwikimedia/mediawiki-extensions

Thiemo Kreuz

commit sha 1b8e887b447c89656a9eea0bd59117c4822eb431

Update git submodules * Update Expressions from branch 'master' to 68579f02d7e8e1998214728a58bb4f6fb35ac843 - Make compatible with PHP8: can't use "match" any more "match" will be a reserved keyword in PHP8, just as "switch", "while", and so on. Bug: T248925 Change-Id: Id942407167c8cd5931423f899403cc780ca143ed

view details

push time in 18 hours

push eventwikimedia/mediawiki-extensions-Expressions

Thiemo Kreuz

commit sha 68579f02d7e8e1998214728a58bb4f6fb35ac843

Make compatible with PHP8: can't use "match" any more "match" will be a reserved keyword in PHP8, just as "switch", "while", and so on. Bug: T248925 Change-Id: Id942407167c8cd5931423f899403cc780ca143ed

view details

push time in 18 hours

push eventwikimedia/mediawiki-tools-phan

Daimona Eaytoy

commit sha 37b6db5e841aaa12b123192e4bc216178f09c197

Bump taint-check to 3.1.0, phan to 3.2.4 Bug: T250170 Change-Id: Ib2686c514d212fb22459d07113109803d137ec50

view details

push time in 18 hours

push eventwikimedia/mediawiki-extensions

Lucas Werkmeister

commit sha 4da82f8e78587cb742736016a78e9361eac24f64

Update git submodules * Update Wikibase from branch 'master' to 0ce7bd6caecad862a7e6b9d9b69c275cd2956969 - Edit proper settings in WikibaseRepoTest This is shorter, matches how the rest of the test already does it, and works better for a service-oriented future where the WikibaseRepo class will no longer have a $services member. Change-Id: Ia867bd6bf08b4a3d9a0114e8b89a3501406cd914

view details

push time in 19 hours

create barnchwikimedia/mediawiki-services-similar-users

branch : orm-with-sqlalchemy

created branch time in 20 hours

create barnchwikimedia/mediawiki-services-similar-users

branch : main

created branch time in 20 hours

created repositorywikimedia/mediawiki-services-similar-users

Github mirror of "mediawiki/services/similar-users" - our actual code is hosted with Gerrit (please see https://www.mediawiki.org/wiki/Developer_access for contributing)

created time in 20 hours

issue openedphpv8/v8js

Can't install v8js on macOS Catalina

I can't install V8Js on macOS Catalina, PHP 7.4.13. I tried two ways of installation:

  1. First Way: Install the latest version of V8 with brew and then compile v8js.
  2. Second Way: Compile the older version of v8 from the source and then compile v8js.

Both ways without success. Any ideas?

First Way Steps

Installation of the latest version of v8 with Brew:

brew install php
php -v
PHP 7.4.13 (cli) (built: Nov 26 2020 04:59:36) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.13, Copyright (c), by Zend Technologies
brew install v8
🍺  /usr/local/Cellar/v8/8.7.220.25: 74 files, 40.4MB

Compilation of v8js:

cd ~
git clone https://github.com/phpv8/v8js.git
cd v8js
phpize
./configure CXXFLAGS="-Wno-c++11-narrowing" --with-v8js="/usr/local/Cellar/v8/8.7.220.25/libexec" --with-php-config="/usr/local/Cellar/php/7.4.13/bin/php-config"

Here I get this error:

checking for libv8_libplatform... found
checking for V8 version... NONE
configure: error: could not determine libv8 version

I also tried to copy v8 files to default path with: cp -r /usr/local/Cellar/v8/8.7.220.25/libexec/include/* /usr/local/include, cp /usr/local/Cellar/v8/8.7.220.25/libexec/lib*.dylib /usr/local/lib/. Then I tried some different configurations: ./configure CXXFLAGS="-Wno-c++11-narrowing", ./configure CXXFLAGS="-Wno-c++11-narrowing" LDFLAGS="-lstdc++", and ./configure --with-v8js=/opt/v8 LDFLAGS="-lstdc++" CPPFLAGS="-DV8_COMPRESS_POINTERS". No luck:/

Second Way Steps

Compiling older version v8

mkdir ~/tmp & cd ~/tmp
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=`pwd`/depot_tools:"$PATH"
fetch v8
cd v8
git checkout 7.4.288.25
gclient sync
nano build/mac/find_sdk.py

Here I update regex to accept newer version of SDK. macOS Catalina comes with version 11. ^MacOSX(\10\.\d+)\.sdk$ to ^MacOSX(\d+\.\d+)\.sdk$.

tools/dev/v8gen.py -vv x64.release -- is_component_build=true use_custom_libcxx=false
ninja -C out.gn/x64.release
cp -r include/* /usr/local/include
cp lib*.dylib /usr/local/lib/
cd ~/tmp
./configure CXXFLAGS="-Wno-c++11-narrowing" LDFLAGS="-lstdc++"
make

Here I get bunch of warnings:

/Users/jirimihal/tmp/v8js/v8js_array_access.cc:213:25: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
                        result->Set(isolate->GetEnteredContext(), i ++, V8JS_INT(j));
                                             ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_array_access.cc:213:4: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
                        result->Set(isolate->GetEnteredContext(), i ++, V8JS_INT(j));
                        ^~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_array_access.cc:217:23: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
        result->Set(isolate->GetEnteredContext(), V8JS_SYM("length"), V8JS_INT(i));
                             ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_array_access.cc:217:2: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
        result->Set(isolate->GetEnteredContext(), V8JS_SYM("length"), V8JS_INT(i));
        ^~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_array_access.cc:248:36: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
                if(!prototype->ToObject(isolate->GetEnteredContext()).ToLocal(&prototype_object)) {
                                                 ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_array_access.cc:253:34: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
                prototype_object->Get(isolate->GetEnteredContext(), property).ToLocal(&ret_value);
                                               ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_array_access.cc:253:3: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
                prototype_object->Get(isolate->GetEnteredContext(), property).ToLocal(&ret_value);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~
7 warnings generated.
/Users/jirimihal/tmp/v8js/v8js_class.cc:104:3: warning: ignoring return value of function declared with
      'warn_unused_result' attribute [-Wunused-result]
                V8JS_GLOBAL(c->isolate)->Delete(v8_context, object_name_js);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~
./v8js_v8.h:37:32: note: expanded from macro 'V8JS_GLOBAL'
#define V8JS_GLOBAL(isolate)                    ((isolate)->GetCurrentContext()->Global())
                                                ^
/Users/jirimihal/tmp/v8js/v8js_class.cc:460:2: warning: ignoring return value of function declared with
      'warn_unused_result' attribute [-Wunused-result]
        context->Global()->Set(context, V8JS_SYM("global"), context->Global());
        ^~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_class.cc:506:2: warning: ignoring return value of function declared with
      'warn_unused_result' attribute [-Wunused-result]
        V8JS_GLOBAL(isolate)->DefineOwnProperty(context, object_name_js, php_obj, v8::ReadOnly);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./v8js_v8.h:37:32: note: expanded from macro 'V8JS_GLOBAL'
#define V8JS_GLOBAL(isolate)                    ((isolate)->GetCurrentContext()->Global())
                                                ^
/Users/jirimihal/tmp/v8js/v8js_class.cc:528:4: warning: ignoring return value of function declared with
      'warn_unused_result' attribute [-Wunused-result]
  ...php_obj->DefineOwnProperty(context, key, zval_to_v8js(value, isolate), v8::ReadOnly);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_class.cc:595:3: warning: ignoring return value of function declared with
      'warn_unused_result' attribute [-Wunused-result]
  ...php_obj->CreateDataProperty(context, method_name, ft->GetFunction(context).ToLocalChecked());
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_class.cc:1332:3: warning: ignoring return value of function declared
      with 'warn_unused_result' attribute [-Wunused-result]
                jsobj->DefineOwnProperty(v8_context, key, zval_to_v8js(value, isolate), v8::ReadOnly);
                ^~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_class.cc:1356:2: warning: ignoring return value of function declared
      with 'warn_unused_result' attribute [-Wunused-result]
        jsobj->Delete(v8_context, key);
        ^~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
7 warnings generated.
/Users/jirimihal/tmp/v8js/v8js_convert.cc:82:47: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
        v8::Local<v8::Context> v8_context = isolate->GetEnteredContext();
                                                     ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_convert.cc:100:4: warning: ignoring return value of function declared
      with 'warn_unused_result' attribute [-Wunused-result]
                        newarr->Set(v8_context, index++, zval_to_v8js(data, isolate));
                        ^~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_convert.cc:152:30: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
                                         v8::Date::New(isolate->GetEnteredContext(), ((double)Z...
                                                                ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_convert.cc:152:7: warning: ignoring return value of function declared
      with 'warn_unused_result' attribute [-Wunused-result]
  ...v8::Date::New(isolate->GetEnteredContext(), ((double)Z_LVAL(dtval) * 1000.0)).ToLocal(&jsValue);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~
4 warnings generated.
/Users/jirimihal/tmp/v8js/v8js_generator_export.cc:63:2: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
        wrapper_fn->Call(v8_context, V8JS_GLOBAL(isolate), 1, jsArgv).ToLocal(&result);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
1 warning generated.
/Users/jirimihal/tmp/v8js/v8js_methods.cc:491:89: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
  ...v8::Local<v8::Object> newobj = zval_to_v8js(&module_code, isolate)->ToObject(isolate->GetEntere...
                                                                                           ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_methods.cc:565:2: warning: ignoring return value of function declared
      with 'warn_unused_result' attribute [-Wunused-result]
        module->Set(context, V8JS_SYM("id"), V8JS_STR(normalised_module_id));
        ^~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_methods.cc:566:2: warning: ignoring return value of function declared
      with 'warn_unused_result' attribute [-Wunused-result]
        module->Set(context, V8JS_SYM("exports"), exports);
        ^~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_methods.cc:580:3: warning: ignoring return value of function declared
      with 'warn_unused_result' attribute [-Wunused-result]
  ...v8::Local<v8::Function>::Cast(module_function.ToLocalChecked())->Call(context, exports, 3, jsArgv);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_methods.cc:616:3: warning: ignoring return value of function declared
      with 'warn_unused_result' attribute [-Wunused-result]
                module->Get(context, sym_exports).ToLocal(&newobj);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
5 warnings generated.
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:41:47: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
        v8::Local<v8::Context> v8_context = isolate->GetEnteredContext();
                                                     ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:234:31: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
        if (!cons_data->Get(isolate->GetEnteredContext(), 0).ToLocal(&cons_tmpl)
                                     ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:235:31: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
                        ||!cons_data->Get(isolate->GetEnteredContext(), 1).ToLocal(&cons_ce))
                                                   ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:338:47: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
        v8::Local<v8::Context> v8_context = isolate->GetEnteredContext();
                                                     ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:394:3: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
                result->Set(v8_context, result_len++, method_name);
                ^~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:422:4: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
  ...result->Set(v8_context, result_len++, V8JS_STRL(prefixed, static_cast<int>(ZSTR_LEN(key) + 1)));
     ^~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:426:4: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
  ...result->Set(v8_context, result_len++, V8JS_FLOAT((double) index)->ToString(v8_context).ToLocalChecked());
     ^~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:438:47: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
        v8::Local<v8::Context> v8_context = isolate->GetEnteredContext();
                                                     ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:470:3: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
                cb->Call(v8_context, self, argc, argv).ToLocal(&result);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:483:47: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
        v8::Local<v8::Context> v8_context = isolate->GetEnteredContext();
                                                     ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:517:4: warning: format specifies type 'char *' but the
      argument has type 'zend_string *' (aka '_zend_string *') [-Wformat]
                        ce->name);
                        ^~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:588:55: warning: format specifies type 'char *' but the
      argument has type 'zend_string *' (aka '_zend_string *') [-Wformat]
                        (method_ptr == NULL) ? "undefined" : "non-public", method_name);
                                                                           ^~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:607:31: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
        v8::Local<v8::Function> cb = PHP_V8JS_CALLBACK(isolate, method_ptr, tmpl);
                                     ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:331:154: note: expanded from macro 'PHP_V8JS_CALLBACK'
  ...mptr), v8::Signature::New((isolate), tmpl))->GetFunction(isolate->GetEnteredContext()).ToLocalC...
                                                                       ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:612:3: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
                args->Get(v8_context, i).ToLocal(&argv[i]);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:614:2: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
        cb->Call(v8_context, info.This(), (int) argc, argv).ToLocal(&return_value);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:626:47: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
        v8::Local<v8::Context> v8_context = isolate->GetEnteredContext();
                                                     ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:713:6: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
                                        ft->GetFunction(v8_context).ToLocal(&ret_value);
                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:851:60: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
        v8::MaybeLocal<v8::Integer> value = r->ToInteger(isolate->GetEnteredContext());
                                                                  ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:963:81: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
  ...new_tpl->InstanceTemplate()->SetCallAsFunctionHandler(v8js_invoke_callback, PHP_V8JS_CALLBACK(i...
                                                                                 ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:331:154: note: expanded from macro 'PHP_V8JS_CALLBACK'
  ...mptr), v8::Signature::New((isolate), tmpl))->GetFunction(isolate->GetEnteredContext()).ToLocalC...
                                                                       ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:968:3: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
                call_handler_data->Set(v8_context, 0, v8::External::New(isolate, persist_tpl_));
                ^~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:969:3: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
                call_handler_data->Set(v8_context, 1, v8::External::New(isolate, ce));
                ^~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:1049:5: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
  ...newobj->Set(v8_context, V8JS_STRL(ZSTR_VAL(key), static_cast<int>(ZSTR_LEN(key))),
     ^~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:1058:5: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
  ...newobj->Set(v8_context, static_cast<uint32_t>(index), zval_to_v8js(data, isolate));
     ^~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:626:47: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
        v8::Local<v8::Context> v8_context = isolate->GetEnteredContext();
                                                     ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:833:28: note: in instantiation of function template
      specialization 'v8js_named_property_callback<v8::Value>' requested here
        info.GetReturnValue().Set(v8js_named_property_callback(property, info, V8JS_PROP_GETTER));
                                  ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:713:6: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
                                        ft->GetFunction(v8_context).ToLocal(&ret_value);
                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:626:47: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
        v8::Local<v8::Context> v8_context = isolate->GetEnteredContext();
                                                     ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:845:27: note: in instantiation of function template
      specialization 'v8js_named_property_callback<v8::Integer>' requested here
        v8::Local<v8::Value> r = v8js_named_property_callback(property, info, V8JS_PROP_QUERY);
                                 ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:713:6: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
                                        ft->GetFunction(v8_context).ToLocal(&ret_value);
                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:626:47: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
        v8::Local<v8::Context> v8_context = isolate->GetEnteredContext();
                                                     ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:860:27: note: in instantiation of function template
      specialization 'v8js_named_property_callback<v8::Boolean>' requested here
        v8::Local<v8::Value> r = v8js_named_property_callback(property, info, V8JS_PROP_DELETER);
                                 ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_object_export.cc:713:6: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
                                        ft->GetFunction(v8_context).ToLocal(&ret_value);
                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~
29 warnings generated.
/Users/jirimihal/tmp/v8js/v8js_v8.cc:279:2: warning: ignoring return value of function declared with
      'warn_unused_result' attribute [-Wunused-result]
        script->Run(context);
        ^~~~~~~~~~~ ~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_v8.cc:307:39: warning: 'GetEnteredContext' is deprecated: Use
      GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
                if (!jsObj->HasOwnProperty(isolate->GetEnteredContext(), jsKey).FromMaybe(false)
                                                    ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
2 warnings generated.
/Users/jirimihal/tmp/v8js/v8js_v8object_class.cc:191:3: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
  ...v8obj->CreateDataProperty(v8_context, V8JS_ZSYM(Z_STR_P(member)), zval_to_v8js(value, isolate));
     ^~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_v8object_class.cc:219:3: warning: ignoring return value of function
      declared with 'warn_unused_result' attribute [-Wunused-result]
                v8obj->Delete(v8_context, V8JS_ZSYM(Z_STR_P(member)));
                ^~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jirimihal/tmp/v8js/v8js_v8object_class.cc:347:49: warning: 'GetEnteredContext' is deprecated:
      Use GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
                        v8::Local<v8::Context> v8_context = isolate->GetEnteredContext();
                                                                     ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
/Users/jirimihal/tmp/v8js/v8js_v8object_class.cc:576:49: warning: 'GetEnteredContext' is deprecated:
      Use GetEnteredOrMicrotaskContext(). [-Wdeprecated-declarations]
                        v8::Local<v8::Context> v8_context = isolate->GetEnteredContext();
                                                                     ^
/usr/local/include/v8.h:7921:3: note: 'GetEnteredContext' has been explicitly marked deprecated here
  V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().",
  ^
/usr/local/include/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
4 warnings generated.
warning: no debug symbols in executable (-arch x86_64)
----------------------------------------------------------------------
Libraries have been installed in:
   /Users/jirimihal/tmp/v8js/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `DYLD_LIBRARY_PATH' environment variable
     during execution

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.
make test

Almost all tests fail.

=====================================================================
PHP         : /usr/local/Cellar/php/7.4.13/bin/php 
PHP_SAPI    : cli
PHP_VERSION : 7.4.13
ZEND_VERSION: 3.4.0
PHP_OS      : Darwin - Darwin Jiris-MacBook-Pro.local 19.6.0 Darwin Kernel Version 19.6.0: Thu Oct 29 22:56:45 PDT 2020; root:xnu-6153.141.2.2~1/RELEASE_X86_64 x86_64
INI actual  : /Users/jirimihal/tmp/v8js/tmp-php.ini
More .INIs  :   
---------------------------------------------------------------------
PHP         : /usr/local/Cellar/php/7.4.13/bin/phpdbg 
PHP_SAPI    : phpdbg
PHP_VERSION : 7.4.13
ZEND_VERSION: 3.4.0
PHP_OS      : Darwin - Darwin Jiris-MacBook-Pro.local 19.6.0 Darwin Kernel Version 19.6.0: Thu Oct 29 22:56:45 PDT 2020; root:xnu-6153.141.2.2~1/RELEASE_X86_64 x86_64
INI actual  : /Users/jirimihal/tmp/v8js/tmp-php.ini
More .INIs  : 
---------------------------------------------------------------------
CWD         : /Users/jirimihal/tmp/v8js
Extra dirs  : 
VALGRIND    : Not used
=====================================================================
TIME START 2020-11-27 17:22:33
=====================================================================
FAIL Test V8::executeString() : Check ArrayAccess interface wrapping [tests/array_access.phpt] 
FAIL Test V8::executeString() : Check ArrayAccess live binding [tests/array_access_001.phpt] 
FAIL Test V8::executeString() : Use ArrayAccess with JavaScript native push method [tests/array_access_002.phpt] 
FAIL Test V8::executeString() : Export PHP methods on ArrayAccess objects [tests/array_access_003.phpt] 
FAIL Test V8::executeString() : Export PHP properties on ArrayAccess objects [tests/array_access_004.phpt] 
FAIL Test V8::executeString() : Export __invoke method on ArrayAccess objects [tests/array_access_005.phpt] 
FAIL Test V8::executeString() : Enumerate ArrayAccess keys [tests/array_access_006.phpt] 
FAIL Test V8::executeString() : Delete (unset) ArrayAccess keys [tests/array_access_007.phpt] 
FAIL Test V8::executeString() : in array (isset) behaviour of ArrayAccess [tests/array_access_008.phpt] 
FAIL Test V8::executeString() : Check array access setter behaviour [tests/array_access_basic2.phpt] 
FAIL Test V8::executeString() : Check passing array from JS to PHP [tests/array_pass.phpt] 
FAIL Test V8::executeString() : Check passing array from JS to PHP (using force array flag) [tests/array_pass_flags.phpt] 
FAIL Test V8::executeString() : export of recursive array [tests/array_recursive.phpt] 
FAIL Test V8::executeString() : Simple test [tests/basic.phpt] 
FAIL Test V8::executeString() : Call JS from PHP [tests/callbacks.phpt] 
FAIL Test V8::executeString() : Script validator test [tests/checkstring.phpt] 
FAIL Test V8::executeString() : Script validator test using compileString [tests/checkstring_compile.phpt] 
FAIL Test V8::executeString() : Simple test [tests/closures_basic.phpt] 
FAIL Test V8::executeString() : Dynamic closure call test [tests/closures_dynamic.phpt] 
FAIL Test V8Js::setModuleLoader : Returned modules are cached [tests/commonjs_caching_001.phpt] 
FAIL Test V8Js::setModuleLoader : module cache seperated per isolate [tests/commonjs_caching_002.phpt] 
FAIL Test V8Js::setModuleNormaliser : Custom normalisation #001 [tests/commonjs_cust_normalise_001.phpt] 
FAIL Test V8Js::setModuleNormaliser : Custom normalisation #002 [tests/commonjs_cust_normalise_002.phpt] 
FAIL Test V8Js::setModuleNormaliser : Custom normalisation #003 [tests/commonjs_cust_normalise_003.phpt] 
FAIL Test V8Js::setModuleNormaliser : Custom normalisation #004 [tests/commonjs_cust_normalise_004.phpt] 
FAIL Test V8Js::setModuleLoader : Forward exceptions [tests/commonjs_exception_001.phpt] 
FAIL Test V8Js::setModuleNormaliser : Forward exceptions [tests/commonjs_exception_002.phpt] 
FAIL Test V8Js::setModuleLoader : Handle fatal errors gracefully [tests/commonjs_fatal_error.phpt] 
FAIL Test V8Js::setModuleLoader : CommonJS modules [tests/commonjs_modules.phpt] 
FAIL Test V8Js::setModuleLoader : Assign result multiple times [tests/commonjs_multiassign.phpt] 
FAIL Test V8Js::setModuleLoader : Native Module basic behaviour [tests/commonjs_native_basic.phpt] 
FAIL Test V8Js::setModuleLoader : this === module.exports [tests/commonjs_node_compat_001.phpt] 
FAIL Test V8Js::setModuleLoader : modules can return arbitrary values [tests/commonjs_node_compat_002.phpt] 
FAIL Test V8Js::setModuleLoader : delete module.exports yields undefined [tests/commonjs_node_compat_003.phpt] 
FAIL Test V8Js::setModuleLoader : exports/module.exports behaviour [tests/commonjs_node_compat_basic.phpt] 
FAIL Test V8Js::setModuleLoader : Path normalisation #001 [tests/commonjs_normalise_001.phpt] 
FAIL Test V8Js::setModuleLoader : Path normalisation #002 [tests/commonjs_normalise_002.phpt] 
FAIL Test V8Js::setModuleLoader : Path normalisation #003 [tests/commonjs_normalise_003.phpt] 
FAIL Test V8Js::setModuleLoader : Path normalisation #004 [tests/commonjs_normalise_004.phpt] 
FAIL Test V8Js::setModuleLoader : Path normalisation #005 [tests/commonjs_normalise_005.phpt] 
FAIL Test V8Js::setModuleLoader : Module source naming [tests/commonjs_source_naming.phpt] 
FAIL Test V8::compileString() : Compile and run a script [tests/compile_string.phpt] 
FAIL Test V8::compileString() : Check compiled script isolate processing [tests/compile_string_isolate.phpt] 
FAIL Test V8::executeString() : Calling construct twice [tests/construct.phpt] 
FAIL Test V8::executeString() : test context preserving [tests/context_preserving.phpt] 
FAIL Test V8::executeString() : test context separation [tests/context_separation.phpt] 
FAIL Test V8::executeString() : correct temp context construction [tests/context_temp_creation.phpt] 
FAIL Test V8Js::createSnapshot() : Basic snapshot creation & re-use [tests/create_snapshot_basic.phpt] 
FAIL Test V8::executeString() : Testing lifespan of V8Js context objects [tests/ctx_lifetime.phpt] 
FAIL Test V8::executeString() : Pass JS date to PHP [tests/datetime_pass.phpt] 
FAIL Test V8::executeString() : Properties on derived class [tests/derived_class_properties.phpt] 
FAIL Test V8::executeString() : Extra properties on derived class [tests/derived_class_properties_extra.phpt] 
FAIL Test V8::executeString() : Initialized properties on derived class [tests/derived_class_properties_init.phpt] 
FAIL Test V8::executeString() : Protected and private properties on derived class [tests/derived_class_properties_protected.phpt] 
FAIL Test V8::executeString() : Handle die() gracefully [tests/die.phpt] 
FAIL Test V8::executeString() : direct construction is prohibited [tests/direct_construct.phpt] 
FAIL Test V8::executeString() : V8JsScriptException [tests/exception.phpt] 
FAIL Test V8::executeString() : Exception clearing test [tests/exception_clearing.phpt] 
FAIL Test V8::executeString() : Exception propagation test 1 [tests/exception_propagation_1.phpt] 
FAIL Test V8::executeString() : Exception propagation test 2 [tests/exception_propagation_2.phpt] 
FAIL Test V8::executeString() : Exception propagation test 3 [tests/exception_propagation_3.phpt] 
FAIL Test V8::executeString() : Test getJsStartColumn on script exception [tests/exception_start_column.phpt] 
FAIL Test V8::executeString() : Forcing to arrays (return value conversion) [tests/execute_flags.phpt] 
FAIL Test V8::executeString() : Forcing to arrays (argument passing) [tests/execute_flags_args.phpt] 
FAIL Test V8::executeString() : Forcing to arrays (property writing) [tests/execute_flags_property_writing.phpt] 
FAIL Test V8::registerExtension() : Basic extension registering [tests/extensions_basic.phpt] 
FAIL Test V8::registerExtension() : Circular dependencies [tests/extensions_circular_dependency.phpt] 
FAIL Test V8::registerExtension() : Register extension with errors [tests/extensions_error.phpt] 
FAIL Test V8::executeString() : Fatal Error handler to ignore warnings [tests/fatal_error_ignore_non_fatals.phpt] 
FAIL Test V8::executeString() : Fatal Error handler not to uninstall on inner frames [tests/fatal_error_no_uninstall_inner_frame.phpt] 
FAIL Test V8::executeString() : Fatal Error with recursive executeString calls [tests/fatal_error_recursive.phpt] 
FAIL Test V8::executeString() : Fatal Error rethrowing [tests/fatal_error_rethrow.phpt] 
FAIL Test V8::executeString() : Fatal Error handler must be uninstalled when leaving outermost frame [tests/fatal_error_uninstall_in_first_frame.phpt] 
FAIL Test V8Function() : Handle fatal errors gracefully [tests/fatal_error_v8function.phpt] 
FAIL Test V8::executeString() : Call passed-back function (directly) [tests/function_call.phpt] 
FAIL Test V8::executeString() : Call passed-back function [tests/function_passback.phpt] 
FAIL Test V8::executeString() : Call passed-back function (property access) [tests/function_passback2.phpt] 
FAIL Test V8::executeString() : Set property on function [tests/function_properties.phpt] 
FAIL Test V8::executeString() : Generators V8 -> PHP (foreach) [tests/generators_from_v8_001.phpt] 
FAIL Test V8::executeString() : Generators V8 -> PHP (direct) [tests/generators_from_v8_002.phpt] 
FAIL Test V8::executeString() : Generators V8 -> PHP (rewind) [tests/generators_from_v8_003.phpt] 
FAIL Test V8::executeString() : Generators V8 -> PHP (instantiate in PHP + foreach) [tests/generators_from_v8_004.phpt] 
FAIL Test V8::executeString() : Generators V8 -> PHP (instantiate in PHP + iterate in JS) [tests/generators_from_v8_005.phpt] 
FAIL Test V8::executeString() : Generators V8 -> PHP (yield from) [tests/generators_from_v8_006.phpt] 
FAIL Test V8::executeString() : Generators V8 -> PHP (throw JS) [tests/generators_from_v8_007.phpt] 
FAIL Test V8::executeString() : Generators V8 -> PHP (throw PHP) [tests/generators_from_v8_008.phpt] 
FAIL Test V8::executeString() : Generators V8 -> PHP (fatal error) [tests/generators_from_v8_009.phpt] 
FAIL Test V8::executeString() : Generators V8 -> PHP (properties) [tests/generators_from_v8_010.phpt] 
FAIL Test V8::executeString() : Generators V8 -> PHP [tests/generators_from_v8_basic.phpt] 
FAIL Test V8::executeString() : Generators PHP -> V8 (instantite in JS) [tests/generators_to_v8_001.phpt] 
FAIL Test V8::executeString() : Generators PHP -> V8 (instantiate in JS, iterate in PHP) [tests/generators_to_v8_002.phpt] 
FAIL Test V8::executeString() : Generators PHP -> V8 (instantiate in JS, iterate in PHP) [tests/generators_to_v8_003.phpt] 
FAIL Test V8::executeString() : Generators PHP -> V8 (yield from) [tests/generators_to_v8_004.phpt] 
FAIL Test V8::executeString() : Generators PHP -> V8 [tests/generators_to_v8_basic.phpt] 
FAIL Test V8::executeString() : PHP variables via get accessor [tests/get_accessor.phpt] 
FAIL Test V8::executeString() : Get constructor method [tests/get_constructor.phpt] 
FAIL Test V8Js::executeString : Global scope links global object [tests/global_object_basic.phpt] 
FAIL Test V8::executeString() : has_property after dispose [tests/has_property_after_dispose.phpt] 
PASS Test V8Js : class inheritance [tests/inheritance_basic.phpt] 
FAIL Test V8::executeString() : Issue #116 V8Function injection into other V8Js [tests/issue_116-v8function-injection.phpt] 
FAIL Test V8Function::__call() : Check v8::TryCatch behaviour [tests/issue_127_001.phpt] 
FAIL Test V8::executeString() : Issue #160 V8Function affected by V8Js::FLAG_FORCE_ARRAY [tests/issue_160_basic.phpt] 
FAIL Test V8::executeString() : Method access on derived classes (protected) [tests/issue_183_001.phpt] 
FAIL Test V8::executeString() : Method access on derived classes (private) [tests/issue_183_002.phpt] 
FAIL Test V8::executeString() : Method access on derived classes (V8Js methods) [tests/issue_183_003.phpt] 
FAIL Test V8::executeString() : Method access on derived classes (overridden V8Js methods) [tests/issue_183_004.phpt] 
PASS Test V8::executeString() : Method access on derived classes (__sleep) [tests/issue_183_005.phpt] 
PASS Test V8::executeString() : Method access on derived classes (__wakeup) [tests/issue_183_006.phpt] 
FAIL Test V8::executeString() : Method access on derived classes [tests/issue_183_basic.phpt] 
FAIL Test V8::executeString() : Issue #185 this on direct invocation of method [tests/issue_185_001.phpt] 
FAIL Test V8::executeString() : Issue #185 this on function invocation [tests/issue_185_002.phpt] 
FAIL Test V8::executeString() : Issue #185 Wrong this on V8Object method invocation [tests/issue_185_basic.phpt] 
FAIL Test V8::executeString() : Handle Z_TYPE == IS_REFERENCE (issue #246) [tests/issue_246_001.phpt] 
FAIL Test V8::executeString() : Issue #250 (early free of array) [tests/issue_250_001.phpt] 
FAIL Test V8::executeString() : Issue #250 (early free of array) [tests/issue_250_002.phpt] 
FAIL Test V8::executeString() : Issue #306 V8 crashing on toLocaleString() [tests/issue_306_basic.phpt] 
FAIL Test V8::executeString() : Issue #316 endless property iteration [tests/issue_316_basic.phpt] 
FAIL Test V8Js::setModuleNormaliser : Custom normalisation #005 [tests/issue_349_basic.phpt] 
FAIL Test V8::executeString() : Method access from multiple derived classes [tests/issue_410_basic.phpt] 
FAIL Test V8::executeString() : Test PHP object construction controlled by JavaScript (simple) [tests/js-construct-basic.phpt] 
FAIL Test V8::executeString() : Test PHP object construction controlled by JavaScript (non-construction call) [tests/js-construct-direct-call.phpt] 
FAIL Test V8::executeString() : Test PHP object construction controlled by JavaScript (protected ctor) [tests/js-construct-protected-ctor.phpt] 
FAIL Test V8::executeString() : Test PHP object construction controlled by JavaScript (with ctor) [tests/js-construct-with-ctor.phpt] 
FAIL Test V8::executeString() : Test for leaked PHP object if passed back multiple times [tests/leak-php-object.phpt] 
FAIL Test V8::executeString() : Check long integer handling from PHP to JS [tests/long.phpt] 
FAIL Test V8::executeString() : Check long 64-bit export from PHP to JS [tests/long_int64.phpt] 
FAIL Test V8::executeString() : Memory limit [tests/memory_limit.phpt] 
FAIL Test V8::executeString() : Use multiple V8js instances with objects [tests/multi-object.phpt] 
FAIL Test V8::executeString() : Use multiple V8js instances [tests/multi.phpt] 
FAIL Test V8::executeString() : Pass strings with null-bytes [tests/null_byte_string.phpt] 
FAIL Test V8::executeString() : Object passed from PHP [tests/object.phpt] 
FAIL Test V8::executeString() : DOM object passed from PHP [tests/object_dom.phpt] 
FAIL Test V8::executeString() : Calling methods of object passed from PHP [tests/object_method_call.phpt] 
FAIL Test V8::executeString() : Object passing PHP > JS > PHP [tests/object_passback.phpt] 
FAIL Test V8::executeString() : Object passing JS > PHP > JS [tests/object_passback_002.phpt] 
FAIL Test V8::executeString() : Prototype with PHP callbacks [tests/object_prototype.phpt] 
FAIL Test V8::executeString() : Test PHP object reusage [tests/object_reuse.phpt] 
FAIL Test V8::executeString() : PHP Exception handling (repeated) [tests/php_exceptions_001.phpt] 
FAIL Test V8::executeString() : PHP Exception handling (multi-level) [tests/php_exceptions_002.phpt] 
FAIL Test V8::executeString() : PHP Exception handling (basic JS propagation) [tests/php_exceptions_003.phpt] 
FAIL Test V8::executeString() : PHP Exception handling (PHP->JS->PHP back propagation) [tests/php_exceptions_004.phpt] 
FAIL Test V8::executeString() : PHP Exception handling (JS throw PHP-exception) [tests/php_exceptions_005.phpt] 
FAIL Test V8::executeString() : PHP Exception handling (JS throws normal PHP-object) [tests/php_exceptions_006.phpt] 
FAIL Test V8::executeString() : PHP Exception handling (basic) [tests/php_exceptions_basic.phpt] 
FAIL Test V8::executeString() : property_exists/isset/empty on wrapped JS objects [tests/property_exists.phpt] 
FAIL Test V8::executeString() : Property visibility - delete [tests/property_visibility-delete.phpt] 
FAIL Test V8::executeString() : Property visibility - enumerate [tests/property_visibility-enumerate.phpt] 
FAIL Test V8::executeString() : Property visibility - has property [tests/property_visibility-has-property.phpt] 
FAIL Test V8::executeString() : Property visibility - set [tests/property_visibility-set.phpt] 
FAIL Test V8::executeString() : Property visibility [tests/property_visibility.phpt] 
FAIL Test V8::executeString() : Property visibility __get [tests/property_visibility__get.phpt] 
FAIL Test V8::executeString() : Property visibility __set [tests/property_visibility__set.phpt] 
SKIP Test V8::executeString() : Pthreads test #1 [tests/pthreads_001.phpt] reason: pthreads extension required
FAIL Test V8::executeString() : Regression #121 Z_ADDREF_P [tests/regression_121.phpt] 
FAIL Test V8::executeString() : return this (aka fluent setters, JS-side) [tests/return_this_001.phpt] 
FAIL Test V8::executeString() : return $this (aka fluent setters) [tests/return_this_basic.phpt] 
FAIL Test V8::executeString() : Return values [tests/return_value.phpt] 
FAIL Test serialize(V8Object) : __sleep and __wakeup throw [tests/serialize_001.phpt] 
FAIL Test serialize(V8Function) : __sleep and __wakeup throw [tests/serialize_002.phpt] 
FAIL Test serialize(V8Js) : __sleep and __wakeup throw [tests/serialize_basic.phpt] 
FAIL Test V8::setAverageObjectSize() : Average object size can be set on V8Js object [tests/set_average_object_size_basic.phpt] 
FAIL Test V8::setMemoryLimit() : Memory limit applied to V8Function calls [tests/set_memory_limit_001.phpt] 
FAIL Test V8::setMemoryLimit() : Memory limit can be imposed later [tests/set_memory_limit_003.phpt] 
FAIL Test V8::setMemoryLimit() : Memory limit can be set on V8Js object [tests/set_memory_limit_basic.phpt] 
FAIL Test V8::setTimeLimit() : Time limit applied to V8Function calls [tests/set_time_limit_001.phpt] 
FAIL Test V8::setTimeLimit() : Time limit can be changed [tests/set_time_limit_002.phpt] 
FAIL Test V8::setTimeLimit() : Time limit can be imposed later on [tests/set_time_limit_003.phpt] 
FAIL Test V8::setTimeLimit() : Time limit can be prolonged [tests/set_time_limit_004.phpt] 
FAIL Test V8::setTimeLimit() : Time limit can be set on V8Js object [tests/set_time_limit_basic.phpt] 
FAIL Test V8::executeString() : Time limit [tests/time_limit.phpt] 
SKIP Test V8::executeString() : Check timezone handling [tests/timezones.phpt] reason: test currently broken, see #378
FAIL Test V8::executeString() : Check if imported code works with umlauts [tests/unicode.phpt] 
FAIL Test V8::executeString() : Use after dispose [tests/use_after_dispose.phpt] 
FAIL Test V8::executeString() : unset property on V8Object [tests/v8_unset_property.phpt] 
FAIL Test V8::executeString() : write property on V8Object [tests/v8_write_property.phpt] 
FAIL Test V8::executeString() : var_dump [tests/var_dump.phpt] 
FAIL Test V8::executeString() : simple variables passed from PHP [tests/variable_passing.phpt] 
=====================================================================
TIME END 2020-11-27 17:22:52

=====================================================================
TEST RESULT SUMMARY
---------------------------------------------------------------------
Exts skipped    :    0
Exts tested     :   65
---------------------------------------------------------------------

Number of tests :  177               175
Tests skipped   :    2 (  1.1%) --------
Tests warned    :    0 (  0.0%) (  0.0%)
Tests failed    :  172 ( 97.2%) ( 98.3%)
Tests passed    :    3 (  1.7%) (  1.7%)
---------------------------------------------------------------------
Time taken      :   19 seconds
=====================================================================

=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
Test V8::executeString() : Check ArrayAccess interface wrapping [tests/array_access.phpt]
Test V8::executeString() : Check ArrayAccess live binding [tests/array_access_001.phpt]
Test V8::executeString() : Use ArrayAccess with JavaScript native push method [tests/array_access_002.phpt]
Test V8::executeString() : Export PHP methods on ArrayAccess objects [tests/array_access_003.phpt]
Test V8::executeString() : Export PHP properties on ArrayAccess objects [tests/array_access_004.phpt]
Test V8::executeString() : Export __invoke method on ArrayAccess objects [tests/array_access_005.phpt]
Test V8::executeString() : Enumerate ArrayAccess keys [tests/array_access_006.phpt]
Test V8::executeString() : Delete (unset) ArrayAccess keys [tests/array_access_007.phpt]
Test V8::executeString() : in array (isset) behaviour of ArrayAccess [tests/array_access_008.phpt]
Test V8::executeString() : Check array access setter behaviour [tests/array_access_basic2.phpt]
Test V8::executeString() : Check passing array from JS to PHP [tests/array_pass.phpt]
Test V8::executeString() : Check passing array from JS to PHP (using force array flag) [tests/array_pass_flags.phpt]
Test V8::executeString() : export of recursive array [tests/array_recursive.phpt]
Test V8::executeString() : Simple test [tests/basic.phpt]
Test V8::executeString() : Call JS from PHP [tests/callbacks.phpt]
Test V8::executeString() : Script validator test [tests/checkstring.phpt]
Test V8::executeString() : Script validator test using compileString [tests/checkstring_compile.phpt]
Test V8::executeString() : Simple test [tests/closures_basic.phpt]
Test V8::executeString() : Dynamic closure call test [tests/closures_dynamic.phpt]
Test V8Js::setModuleLoader : Returned modules are cached [tests/commonjs_caching_001.phpt]
Test V8Js::setModuleLoader : module cache seperated per isolate [tests/commonjs_caching_002.phpt]
Test V8Js::setModuleNormaliser : Custom normalisation #001 [tests/commonjs_cust_normalise_001.phpt]
Test V8Js::setModuleNormaliser : Custom normalisation #002 [tests/commonjs_cust_normalise_002.phpt]
Test V8Js::setModuleNormaliser : Custom normalisation #003 [tests/commonjs_cust_normalise_003.phpt]
Test V8Js::setModuleNormaliser : Custom normalisation #004 [tests/commonjs_cust_normalise_004.phpt]
Test V8Js::setModuleLoader : Forward exceptions [tests/commonjs_exception_001.phpt]
Test V8Js::setModuleNormaliser : Forward exceptions [tests/commonjs_exception_002.phpt]
Test V8Js::setModuleLoader : Handle fatal errors gracefully [tests/commonjs_fatal_error.phpt]
Test V8Js::setModuleLoader : CommonJS modules [tests/commonjs_modules.phpt]
Test V8Js::setModuleLoader : Assign result multiple times [tests/commonjs_multiassign.phpt]
Test V8Js::setModuleLoader : Native Module basic behaviour [tests/commonjs_native_basic.phpt]
Test V8Js::setModuleLoader : this === module.exports [tests/commonjs_node_compat_001.phpt]
Test V8Js::setModuleLoader : modules can return arbitrary values [tests/commonjs_node_compat_002.phpt]
Test V8Js::setModuleLoader : delete module.exports yields undefined [tests/commonjs_node_compat_003.phpt]
Test V8Js::setModuleLoader : exports/module.exports behaviour [tests/commonjs_node_compat_basic.phpt]
Test V8Js::setModuleLoader : Path normalisation #001 [tests/commonjs_normalise_001.phpt]
Test V8Js::setModuleLoader : Path normalisation #002 [tests/commonjs_normalise_002.phpt]
Test V8Js::setModuleLoader : Path normalisation #003 [tests/commonjs_normalise_003.phpt]
Test V8Js::setModuleLoader : Path normalisation #004 [tests/commonjs_normalise_004.phpt]
Test V8Js::setModuleLoader : Path normalisation #005 [tests/commonjs_normalise_005.phpt]
Test V8Js::setModuleLoader : Module source naming [tests/commonjs_source_naming.phpt]
Test V8::compileString() : Compile and run a script [tests/compile_string.phpt]
Test V8::compileString() : Check compiled script isolate processing [tests/compile_string_isolate.phpt]
Test V8::executeString() : Calling construct twice [tests/construct.phpt]
Test V8::executeString() : test context preserving [tests/context_preserving.phpt]
Test V8::executeString() : test context separation [tests/context_separation.phpt]
Test V8::executeString() : correct temp context construction [tests/context_temp_creation.phpt]
Test V8Js::createSnapshot() : Basic snapshot creation & re-use [tests/create_snapshot_basic.phpt]
Test V8::executeString() : Testing lifespan of V8Js context objects [tests/ctx_lifetime.phpt]
Test V8::executeString() : Pass JS date to PHP [tests/datetime_pass.phpt]
Test V8::executeString() : Properties on derived class [tests/derived_class_properties.phpt]
Test V8::executeString() : Extra properties on derived class [tests/derived_class_properties_extra.phpt]
Test V8::executeString() : Initialized properties on derived class [tests/derived_class_properties_init.phpt]
Test V8::executeString() : Protected and private properties on derived class [tests/derived_class_properties_protected.phpt]
Test V8::executeString() : Handle die() gracefully [tests/die.phpt]
Test V8::executeString() : direct construction is prohibited [tests/direct_construct.phpt]
Test V8::executeString() : V8JsScriptException [tests/exception.phpt]
Test V8::executeString() : Exception clearing test [tests/exception_clearing.phpt]
Test V8::executeString() : Exception propagation test 1 [tests/exception_propagation_1.phpt]
Test V8::executeString() : Exception propagation test 2 [tests/exception_propagation_2.phpt]
Test V8::executeString() : Exception propagation test 3 [tests/exception_propagation_3.phpt]
Test V8::executeString() : Test getJsStartColumn on script exception [tests/exception_start_column.phpt]
Test V8::executeString() : Forcing to arrays (return value conversion) [tests/execute_flags.phpt]
Test V8::executeString() : Forcing to arrays (argument passing) [tests/execute_flags_args.phpt]
Test V8::executeString() : Forcing to arrays (property writing) [tests/execute_flags_property_writing.phpt]
Test V8::registerExtension() : Basic extension registering [tests/extensions_basic.phpt]
Test V8::registerExtension() : Circular dependencies [tests/extensions_circular_dependency.phpt]
Test V8::registerExtension() : Register extension with errors [tests/extensions_error.phpt]
Test V8::executeString() : Fatal Error handler to ignore warnings [tests/fatal_error_ignore_non_fatals.phpt]
Test V8::executeString() : Fatal Error handler not to uninstall on inner frames [tests/fatal_error_no_uninstall_inner_frame.phpt]
Test V8::executeString() : Fatal Error with recursive executeString calls [tests/fatal_error_recursive.phpt]
Test V8::executeString() : Fatal Error rethrowing [tests/fatal_error_rethrow.phpt]
Test V8::executeString() : Fatal Error handler must be uninstalled when leaving outermost frame [tests/fatal_error_uninstall_in_first_frame.phpt]
Test V8Function() : Handle fatal errors gracefully [tests/fatal_error_v8function.phpt]
Test V8::executeString() : Call passed-back function (directly) [tests/function_call.phpt]
Test V8::executeString() : Call passed-back function [tests/function_passback.phpt]
Test V8::executeString() : Call passed-back function (property access) [tests/function_passback2.phpt]
Test V8::executeString() : Set property on function [tests/function_properties.phpt]
Test V8::executeString() : Generators V8 -> PHP (foreach) [tests/generators_from_v8_001.phpt]
Test V8::executeString() : Generators V8 -> PHP (direct) [tests/generators_from_v8_002.phpt]
Test V8::executeString() : Generators V8 -> PHP (rewind) [tests/generators_from_v8_003.phpt]
Test V8::executeString() : Generators V8 -> PHP (instantiate in PHP + foreach) [tests/generators_from_v8_004.phpt]
Test V8::executeString() : Generators V8 -> PHP (instantiate in PHP + iterate in JS) [tests/generators_from_v8_005.phpt]
Test V8::executeString() : Generators V8 -> PHP (yield from) [tests/generators_from_v8_006.phpt]
Test V8::executeString() : Generators V8 -> PHP (throw JS) [tests/generators_from_v8_007.phpt]
Test V8::executeString() : Generators V8 -> PHP (throw PHP) [tests/generators_from_v8_008.phpt]
Test V8::executeString() : Generators V8 -> PHP (fatal error) [tests/generators_from_v8_009.phpt]
Test V8::executeString() : Generators V8 -> PHP (properties) [tests/generators_from_v8_010.phpt]
Test V8::executeString() : Generators V8 -> PHP [tests/generators_from_v8_basic.phpt]
Test V8::executeString() : Generators PHP -> V8 (instantite in JS) [tests/generators_to_v8_001.phpt]
Test V8::executeString() : Generators PHP -> V8 (instantiate in JS, iterate in PHP) [tests/generators_to_v8_002.phpt]
Test V8::executeString() : Generators PHP -> V8 (instantiate in JS, iterate in PHP) [tests/generators_to_v8_003.phpt]
Test V8::executeString() : Generators PHP -> V8 (yield from) [tests/generators_to_v8_004.phpt]
Test V8::executeString() : Generators PHP -> V8 [tests/generators_to_v8_basic.phpt]
Test V8::executeString() : PHP variables via get accessor [tests/get_accessor.phpt]
Test V8::executeString() : Get constructor method [tests/get_constructor.phpt]
Test V8Js::executeString : Global scope links global object [tests/global_object_basic.phpt]
Test V8::executeString() : has_property after dispose [tests/has_property_after_dispose.phpt]
Test V8::executeString() : Issue #116 V8Function injection into other V8Js [tests/issue_116-v8function-injection.phpt]
Test V8Function::__call() : Check v8::TryCatch behaviour [tests/issue_127_001.phpt]
Test V8::executeString() : Issue #160 V8Function affected by V8Js::FLAG_FORCE_ARRAY [tests/issue_160_basic.phpt]
Test V8::executeString() : Method access on derived classes (protected) [tests/issue_183_001.phpt]
Test V8::executeString() : Method access on derived classes (private) [tests/issue_183_002.phpt]
Test V8::executeString() : Method access on derived classes (V8Js methods) [tests/issue_183_003.phpt]
Test V8::executeString() : Method access on derived classes (overridden V8Js methods) [tests/issue_183_004.phpt]
Test V8::executeString() : Method access on derived classes [tests/issue_183_basic.phpt]
Test V8::executeString() : Issue #185 this on direct invocation of method [tests/issue_185_001.phpt]
Test V8::executeString() : Issue #185 this on function invocation [tests/issue_185_002.phpt]
Test V8::executeString() : Issue #185 Wrong this on V8Object method invocation [tests/issue_185_basic.phpt]
Test V8::executeString() : Handle Z_TYPE == IS_REFERENCE (issue #246) [tests/issue_246_001.phpt]
Test V8::executeString() : Issue #250 (early free of array) [tests/issue_250_001.phpt]
Test V8::executeString() : Issue #250 (early free of array) [tests/issue_250_002.phpt]
Test V8::executeString() : Issue #306 V8 crashing on toLocaleString() [tests/issue_306_basic.phpt]
Test V8::executeString() : Issue #316 endless property iteration [tests/issue_316_basic.phpt]
Test V8Js::setModuleNormaliser : Custom normalisation #005 [tests/issue_349_basic.phpt]
Test V8::executeString() : Method access from multiple derived classes [tests/issue_410_basic.phpt]
Test V8::executeString() : Test PHP object construction controlled by JavaScript (simple) [tests/js-construct-basic.phpt]
Test V8::executeString() : Test PHP object construction controlled by JavaScript (non-construction call) [tests/js-construct-direct-call.phpt]
Test V8::executeString() : Test PHP object construction controlled by JavaScript (protected ctor) [tests/js-construct-protected-ctor.phpt]
Test V8::executeString() : Test PHP object construction controlled by JavaScript (with ctor) [tests/js-construct-with-ctor.phpt]
Test V8::executeString() : Test for leaked PHP object if passed back multiple times [tests/leak-php-object.phpt]
Test V8::executeString() : Check long integer handling from PHP to JS [tests/long.phpt]
Test V8::executeString() : Check long 64-bit export from PHP to JS [tests/long_int64.phpt]
Test V8::executeString() : Memory limit [tests/memory_limit.phpt]
Test V8::executeString() : Use multiple V8js instances with objects [tests/multi-object.phpt]
Test V8::executeString() : Use multiple V8js instances [tests/multi.phpt]
Test V8::executeString() : Pass strings with null-bytes [tests/null_byte_string.phpt]
Test V8::executeString() : Object passed from PHP [tests/object.phpt]
Test V8::executeString() : DOM object passed from PHP [tests/object_dom.phpt]
Test V8::executeString() : Calling methods of object passed from PHP [tests/object_method_call.phpt]
Test V8::executeString() : Object passing PHP > JS > PHP [tests/object_passback.phpt]
Test V8::executeString() : Object passing JS > PHP > JS [tests/object_passback_002.phpt]
Test V8::executeString() : Prototype with PHP callbacks [tests/object_prototype.phpt]
Test V8::executeString() : Test PHP object reusage [tests/object_reuse.phpt]
Test V8::executeString() : PHP Exception handling (repeated) [tests/php_exceptions_001.phpt]
Test V8::executeString() : PHP Exception handling (multi-level) [tests/php_exceptions_002.phpt]
Test V8::executeString() : PHP Exception handling (basic JS propagation) [tests/php_exceptions_003.phpt]
Test V8::executeString() : PHP Exception handling (PHP->JS->PHP back propagation) [tests/php_exceptions_004.phpt]
Test V8::executeString() : PHP Exception handling (JS throw PHP-exception) [tests/php_exceptions_005.phpt]
Test V8::executeString() : PHP Exception handling (JS throws normal PHP-object) [tests/php_exceptions_006.phpt]
Test V8::executeString() : PHP Exception handling (basic) [tests/php_exceptions_basic.phpt]
Test V8::executeString() : property_exists/isset/empty on wrapped JS objects [tests/property_exists.phpt]
Test V8::executeString() : Property visibility - delete [tests/property_visibility-delete.phpt]
Test V8::executeString() : Property visibility - enumerate [tests/property_visibility-enumerate.phpt]
Test V8::executeString() : Property visibility - has property [tests/property_visibility-has-property.phpt]
Test V8::executeString() : Property visibility - set [tests/property_visibility-set.phpt]
Test V8::executeString() : Property visibility [tests/property_visibility.phpt]
Test V8::executeString() : Property visibility __get [tests/property_visibility__get.phpt]
Test V8::executeString() : Property visibility __set [tests/property_visibility__set.phpt]
Test V8::executeString() : Regression #121 Z_ADDREF_P [tests/regression_121.phpt]
Test V8::executeString() : return this (aka fluent setters, JS-side) [tests/return_this_001.phpt]
Test V8::executeString() : return $this (aka fluent setters) [tests/return_this_basic.phpt]
Test V8::executeString() : Return values [tests/return_value.phpt]
Test serialize(V8Object) : __sleep and __wakeup throw [tests/serialize_001.phpt]
Test serialize(V8Function) : __sleep and __wakeup throw [tests/serialize_002.phpt]
Test serialize(V8Js) : __sleep and __wakeup throw [tests/serialize_basic.phpt]
Test V8::setAverageObjectSize() : Average object size can be set on V8Js object [tests/set_average_object_size_basic.phpt]
Test V8::setMemoryLimit() : Memory limit applied to V8Function calls [tests/set_memory_limit_001.phpt]
Test V8::setMemoryLimit() : Memory limit can be imposed later [tests/set_memory_limit_003.phpt]
Test V8::setMemoryLimit() : Memory limit can be set on V8Js object [tests/set_memory_limit_basic.phpt]
Test V8::setTimeLimit() : Time limit applied to V8Function calls [tests/set_time_limit_001.phpt]
Test V8::setTimeLimit() : Time limit can be changed [tests/set_time_limit_002.phpt]
Test V8::setTimeLimit() : Time limit can be imposed later on [tests/set_time_limit_003.phpt]
Test V8::setTimeLimit() : Time limit can be prolonged [tests/set_time_limit_004.phpt]
Test V8::setTimeLimit() : Time limit can be set on V8Js object [tests/set_time_limit_basic.phpt]
Test V8::executeString() : Time limit [tests/time_limit.phpt]
Test V8::executeString() : Check if imported code works with umlauts [tests/unicode.phpt]
Test V8::executeString() : Use after dispose [tests/use_after_dispose.phpt]
Test V8::executeString() : unset property on V8Object [tests/v8_unset_property.phpt]
Test V8::executeString() : write property on V8Object [tests/v8_write_property.phpt]
Test V8::executeString() : var_dump [tests/var_dump.phpt]
Test V8::executeString() : simple variables passed from PHP [tests/variable_passing.phpt]
=====================================================================

You may have found a problem in PHP.
This report can be automatically sent to the PHP QA team at
http://qa.php.net/reports and http://news.php.net/php.qa.reports
This gives us a better understanding of PHP's behavior.
If you don't want to send the report immediately you can choose
option "s" to save it.	You can then email it to qa-reports@lists.php.net later.
Do you want to send this report now? [Yns]: n
make: *** [test] Error 1

created time in 21 hours

delete branch wikimedia/research-similar-users

delete branch : metrics

delete time in a day

push eventwikimedia/research-similar-users

Hugh Nowlan

commit sha 821acb6666f02e37783e9ac2305f63097dece2a8

Freeze library versions, fix venv creation

view details

Hugh Nowlan

commit sha b20071f54571407f9bdc39e6d5e48e9ae7ea8801

Emit basic performance metrics and count number of matches

view details

Hugh Nowlan

commit sha 9eb3506d0b8a0b938270e9b7f6ce3c46e737ed2a

Add healthcheck endpoint, remove unused config option

view details

Hugh Nowlan

commit sha d55e97a0b37666c1550bccc95447d697f525bc9f

Emit metric when results field is missing from response JSON

view details

Hugh Nowlan

commit sha e6a74063a26b0354553f70fd1b5f5a94654dffaf

Fix loading of anon status in user data. Enhance logging Make log level configurable via config file, use the application logger, add more debug logging. Previously we incorrectly cast booleans based on the string truthiness which was incorrect when the eval previously used was correct. Use distutils's boolean loading instead.

view details

Hugh Nowlan

commit sha 9ac5d0ed33867bd30324a1caf243ed1282a48322

Merge pull request #6 from wikimedia/metrics Add basic metrics

view details

push time in a day

PR merged wikimedia/research-similar-users

Reviewers
Add basic metrics

Add some basic Prometheus metrics. These metrics can be queried at /metrics - we get a bunch of useful metrics for free, and I have added a counter which will give us basic insight into the number of matches we are seeing per request to the service.

Here's some sample metrics from the development docker container:

# HELP python_gc_objects_collected_total Objects collected during gc
# TYPE python_gc_objects_collected_total counter
python_gc_objects_collected_total{generation="0"} 339635.0
python_gc_objects_collected_total{generation="1"} 34255.0
python_gc_objects_collected_total{generation="2"} 808.0
# HELP python_gc_objects_uncollectable_total Uncollectable object found during GC
# TYPE python_gc_objects_uncollectable_total counter
python_gc_objects_uncollectable_total{generation="0"} 0.0
python_gc_objects_uncollectable_total{generation="1"} 0.0
python_gc_objects_uncollectable_total{generation="2"} 0.0
# HELP python_gc_collections_total Number of times this generation was collected
# TYPE python_gc_collections_total counter
python_gc_collections_total{generation="0"} 634.0
python_gc_collections_total{generation="1"} 57.0
python_gc_collections_total{generation="2"} 2.0
# HELP python_info Python platform information
# TYPE python_info gauge
python_info{implementation="CPython",major="3",minor="7",patchlevel="3",version="3.7.3"} 1.0
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 8.57710592e+08
# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 8.6491136e+07
# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1.60632241239e+09
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 2.0300000000000002
# HELP process_open_fds Number of open file descriptors.
# TYPE process_open_fds gauge
process_open_fds 6.0
# HELP process_max_fds Maximum number of open file descriptors.
# TYPE process_max_fds gauge
process_max_fds 1.048576e+06
# HELP flask_exporter_info Information about the Prometheus Flask exporter
# TYPE flask_exporter_info gauge
flask_exporter_info{version="0.18.1"} 1.0
# HELP flask_http_request_duration_seconds Flask HTTP request duration in seconds
# TYPE flask_http_request_duration_seconds histogram
flask_http_request_duration_seconds_bucket{le="0.005",method="GET",path="/similarusers",status="200"} 0.0
flask_http_request_duration_seconds_bucket{le="0.01",method="GET",path="/similarusers",status="200"} 0.0
flask_http_request_duration_seconds_bucket{le="0.025",method="GET",path="/similarusers",status="200"} 0.0
flask_http_request_duration_seconds_bucket{le="0.05",method="GET",path="/similarusers",status="200"} 0.0
flask_http_request_duration_seconds_bucket{le="0.075",method="GET",path="/similarusers",status="200"} 0.0
flask_http_request_duration_seconds_bucket{le="0.1",method="GET",path="/similarusers",status="200"} 0.0
flask_http_request_duration_seconds_bucket{le="0.25",method="GET",path="/similarusers",status="200"} 0.0
flask_http_request_duration_seconds_bucket{le="0.5",method="GET",path="/similarusers",status="200"} 1.0
flask_http_request_duration_seconds_bucket{le="0.75",method="GET",path="/similarusers",status="200"} 2.0
flask_http_request_duration_seconds_bucket{le="1.0",method="GET",path="/similarusers",status="200"} 2.0
flask_http_request_duration_seconds_bucket{le="2.5",method="GET",path="/similarusers",status="200"} 2.0
flask_http_request_duration_seconds_bucket{le="5.0",method="GET",path="/similarusers",status="200"} 2.0
flask_http_request_duration_seconds_bucket{le="7.5",method="GET",path="/similarusers",status="200"} 2.0
flask_http_request_duration_seconds_bucket{le="10.0",method="GET",path="/similarusers",status="200"} 2.0
flask_http_request_duration_seconds_bucket{le="+Inf",method="GET",path="/similarusers",status="200"} 2.0
flask_http_request_duration_seconds_count{method="GET",path="/similarusers",status="200"} 2.0
flask_http_request_duration_seconds_sum{method="GET",path="/similarusers",status="200"} 1.1595558080002775
# HELP flask_http_request_duration_seconds_created Flask HTTP request duration in seconds
# TYPE flask_http_request_duration_seconds_created gauge
flask_http_request_duration_seconds_created{method="GET",path="/similarusers",status="200"} 1.6063224464266794e+09
# HELP flask_http_request_total Total number of HTTP requests
# TYPE flask_http_request_total counter
flask_http_request_total{method="GET",status="200"} 2.0
# HELP flask_http_request_created Total number of HTTP requests
# TYPE flask_http_request_created gauge
flask_http_request_created{method="GET",status="200"} 1.6063224464267576e+09
# HELP flask_http_request_exceptions_total Total number of HTTP requests which resulted in an exception
# TYPE flask_http_request_exceptions_total counter
# HELP similar_users_total Number of calls to similarusers
# TYPE similar_users_total counter
similar_users_total{similar_count="3"} 1.0
similar_users_total{similar_count="0"} 1.0
# HELP similar_users_created Number of calls to similarusers
# TYPE similar_users_created gauge
similar_users_created{similar_count="3"} 1.6063224464264638e+09
similar_users_created{similar_count="0"} 1.6063225965471826e+09

Under the similar_users_total counter we can see that there has been 1 call to the service where there have been 3 similar users, and 1 call where there has been 0 users. All other metrics we get for free.

+39 -14

0 comment

3 changed files

nosmo

pr closed time in a day

Pull request review commentwikimedia/research-similar-users

Add basic metrics

 def main():     args = parse_args()     # TODO move app creation to its own function rather than using it as a     # global-    app.config.update(yaml.safe_load(open(args.config)))+    config_yaml = yaml.safe_load(open(args.config))+    app.config.update(config_yaml)++    logging.basicConfig(level=logging.getLevelName(config_yaml["LOG_LEVEL"]))

Flask itself uses the base logging logging module within its own logging, so changing this loglevel has effect within Flask too as far as I understand.

nosmo

comment created time in a day

push eventwikimedia/mediawiki-extensions-BlueSpiceSMWConnector

Dejan Savuljesku

commit sha b0b6093642faea478ea5e2bffa968f0736f87c82

Allow configuration of SMW prop list in ExtendedSearch [3.1.x] ERM 21685 Change-Id: I43d1182f2cb858cfce99b05e90171fd8c1425ff9

view details

push time in a day

push eventwikimedia/mediawiki-extensions

jenkins-bot

commit sha d708b4c0b050f01b3a98e314d90110de069a787a

Update git submodules * Update Wikibase from branch 'master' to d9cd6b9f82513d233f09d2e16d8ade618c10857b - Merge "Widen UpdateRepo argument from User to UserIdentity" - Widen UpdateRepo argument from User to UserIdentity The only method we call is getName(), and that one is available on the UserIdentity interface as well, so if the hook received some other kind of UserIdentity value, there’s no need to turn it into a full User. (We can’t do the same thing for the Title argument(s) because the LinkTarget interface only knows about the namespace ID of the title, and by calling getPrefixedText() we ask for the namespace *name*.) Change-Id: I8b80ba450dbd79b1f6d49adc9bd69aa7a3846cf2

view details

Dejan Savuljesku

commit sha 5568e5695922d579e475a3b9a360b7ed84daf81c

Update git submodules * Update BlueSpiceSMWConnector from branch 'master' to b0b6093642faea478ea5e2bffa968f0736f87c82 - Allow configuration of SMW prop list in ExtendedSearch [3.1.x] ERM 21685 Change-Id: I43d1182f2cb858cfce99b05e90171fd8c1425ff9

view details

push time in a day

push eventwikimedia/mediawiki-extensions

jenkins-bot

commit sha 544c5f5548b2cb6e19d59fcefc63b130c4b7e07f

Update git submodules * Update Wikibase from branch 'master' to ae7544217869f2411b40aebd424ae830e668d25e - Merge "Delete sitelink when moving to excluded namespace without redirect" - Delete sitelink when moving to excluded namespace without redirect When a page was being moved to an excluded namespace, the hook handler would previously abort immediately, leaving the item sitelink to the moved page as it is. That’s fine if a redirect was left behind (it’s better to link to the redirect than to nothing at all, if we don’t want to link to the excluded namespace), but if the creation of the redirect was suppressed, then we want the repo sitelink to be deleted. Fortunately, this is fairly straightforward to implement thanks to page moves and deletions being handled very similarly: we can reuse the same code as for the case where the page was actually deleted. (We also extract an applyUpdateRepo() method to reduce duplicate code.) While we’re at it, also modernize the tests a bit, with named arguments in the data provider and better type declarations. Also, set the dynamic wikibasePushedMoveToRepo property on the parameter we received ($newLinkTarget), not the value we created ourselves ($nt). This fix really belongs with T268135, but it becomes necessary here because in the “excluded namespace” branch, $nt does not exist, and it doesn’t really hurt to fix this now either. Bug: T261275 Change-Id: I5f6cd230d3f407a795ca08df3ce1959f66118825 Co-Authored-By: Noa Rave <noa.rave@wikimedia.de>

view details

push time in a day

push eventwikimedia/mediawiki-extensions

Dejan Savuljesku

commit sha 4b4416ed865e5ff0b2fc7f04dd1ea47b3af69d1a

Update git submodules * Update BlueSpiceSMWConnector from branch 'REL1_31' to d590316eba4b34d1d4f61e2ae0a409f551681835 - Allow configuration of SMW prop list in ExtendedSearch [3.1.x] ERM 21685 Change-Id: I43d1182f2cb858cfce99b05e90171fd8c1425ff9

view details

push time in a day

push eventwikimedia/mediawiki-extensions

Dejan Savuljesku

commit sha 877933e2e78eef0fac690dfa40b8545656a003f2

Update git submodules * Update BlueSpiceSMWConnector from branch 'REL1_35' to 44c9a3931ca8f2e89623e2c4c445b3ddca1b0b4a - Allow configuration of SMW prop list in ExtendedSearch [3.1.x] ERM 21685 Change-Id: I43d1182f2cb858cfce99b05e90171fd8c1425ff9

view details

push time in a day

push eventwikimedia/mediawiki-extensions-BlueSpiceSMWConnector

Dejan Savuljesku

commit sha 44c9a3931ca8f2e89623e2c4c445b3ddca1b0b4a

Allow configuration of SMW prop list in ExtendedSearch [3.1.x] ERM 21685 Change-Id: I43d1182f2cb858cfce99b05e90171fd8c1425ff9

view details

push time in a day

push eventwikimedia/mediawiki-extensions-BlueSpiceSMWConnector

Dejan Savuljesku

commit sha b294dddf6e0bb0d329bb23974726ce84ab48b8f4

Allow configuration of SMW prop list in ExtendedSearch [3.1.x] ERM 21685 Change-Id: I43d1182f2cb858cfce99b05e90171fd8c1425ff9

view details

push time in a day

more