diff --git a/.gitignore b/.gitignore index 2286b59..8cec1dc 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,11 @@ swig-2.0.0.tar.gz /swig-4.0.0.tar.gz /swig-4.0.1.tar.gz /swig-4.0.2.tar.gz +/swig-4.1.0.tar.gz +/swig-4.1.1.tar.gz +/swig-4.2.0.tar.gz +/swig-4.2.1.tar.gz +/swig-4.3.0.tar.gz +/swig-4.3.1.tar.gz +/swig-4.4.0.tar.gz +/swig-4.4.1.tar.gz diff --git a/sources b/sources index f9f798f..f6fe3ce 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (swig-4.0.2.tar.gz) = 05e7da70ce6d9a733b96c0bcfa3c1b82765bd859f48c74759bbf4bb1467acb1809caa310cba5e2b3280cd704fca249eaa0624821dffae1d2a75097c7f55d14ed +SHA512 (swig-4.4.1.tar.gz) = 103ddb4a5914f28e6739a006d35042c701e55ba05066acff3f3609befb5f43f253ea717fc41d06c93d8fb187ded4399c12c94665b93dc06d0fb835069391c7c7 diff --git a/swig-Upgrade-to-support-newer-NodeJS.patch b/swig-Upgrade-to-support-newer-NodeJS.patch deleted file mode 100644 index e3338ef..0000000 --- a/swig-Upgrade-to-support-newer-NodeJS.patch +++ /dev/null @@ -1,1863 +0,0 @@ -From 5e1bdcfd6e5bd8353993433bd0efb4a3cb3ca639 Mon Sep 17 00:00:00 2001 -From: Alexandre Lissy -Date: Thu, 25 Apr 2019 12:29:19 +0200 -Subject: [PATCH] Upgrade SWIG to support NodeJS v12, v13 / V8 v7.6, v7.8 - runtime - ---- - .travis.yml | 35 ++++++++ - Examples/test-suite/javascript/Makefile.in | 15 +++- - .../javascript/abstract_access_runme.js | 4 +- - .../javascript/abstract_inherit_runme.js | 4 +- - .../javascript/abstract_typedef2_runme.js | 4 +- - .../javascript/abstract_typedef_runme.js | 4 +- - .../javascript/abstract_virtual_runme.js | 4 +- - .../javascript/array_member_runme.js | 4 +- - .../javascript/arrays_global_runme.js | 4 +- - .../test-suite/javascript/callback_runme.js | 4 +- - .../javascript/char_binary_runme.js | 4 +- - .../javascript/char_strings_runme.js | 4 +- - .../javascript/class_ignore_runme.js | 4 +- - .../javascript/class_scope_weird_runme.js | 4 +- - .../javascript/complextest_runme.js | 4 +- - .../test-suite/javascript/constover_runme.js | 4 +- - .../javascript/constructor_copy_runme.js | 4 +- - ...cpp11_strongly_typed_enumerations_runme.js | 4 +- - .../test-suite/javascript/cpp_enum_runme.js | 4 +- - .../javascript/cpp_namespace_runme.js | 4 +- - .../test-suite/javascript/cpp_static_runme.js | 4 +- - .../javascript/director_alternating_runme.js | 4 +- - .../test-suite/javascript/disown_runme.js | 4 +- - .../javascript/dynamic_cast_runme.js | 4 +- - .../test-suite/javascript/empty_c_runme.js | 4 +- - Examples/test-suite/javascript/empty_runme.js | 3 +- - .../javascript/enum_template_runme.js | 4 +- - .../test-suite/javascript/infinity_runme.js | 4 +- - .../namespace_virtual_method_runme.js | 4 +- - .../javascript/native_directive_runme.js | 4 +- - .../javascript/nspace_extend_runme.js | 4 +- - .../test-suite/javascript/nspace_runme.js | 4 +- - .../javascript/null_pointer_runme.js | 4 +- - .../javascript/overload_copy_runme.js | 4 +- - .../javascript/overload_null_runme.js | 4 +- - .../javascript/preproc_include_runme.js | 4 +- - .../test-suite/javascript/preproc_runme.js | 4 +- - .../test-suite/javascript/rename1_runme.js | 4 +- - .../test-suite/javascript/rename2_runme.js | 4 +- - .../test-suite/javascript/rename3_runme.js | 4 +- - .../test-suite/javascript/rename4_runme.js | 4 +- - .../javascript/rename_scope_runme.js | 4 +- - .../javascript/rename_simple_runme.js | 4 +- - .../javascript/ret_by_value_runme.js | 4 +- - .../javascript/string_simple_runme.js | 4 +- - .../javascript/struct_value_runme.js | 4 +- - .../javascript/swig_exception_runme.js | 4 +- - .../javascript/template_static_runme.js | 4 +- - .../javascript/typedef_class_runme.js | 4 +- - .../javascript/typedef_inherit_runme.js | 4 +- - .../javascript/typedef_scope_runme.js | 4 +- - .../javascript/typemap_arrays_runme.js | 4 +- - .../javascript/typemap_delete_runme.js | 4 +- - .../javascript/typemap_namespace_runme.js | 4 +- - .../javascript/typemap_ns_using_runme.js | 4 +- - .../test-suite/javascript/using1_runme.js | 4 +- - .../test-suite/javascript/using2_runme.js | 4 +- - .../test-suite/javascript/varargs_runme.js | 4 +- - Lib/javascript/v8/javascriptcode.swg | 30 ++++--- - Lib/javascript/v8/javascriptcomplex.swg | 10 +-- - Lib/javascript/v8/javascripthelpers.swg | 26 +++--- - Lib/javascript/v8/javascriptinit.swg | 4 +- - Lib/javascript/v8/javascriptprimtypes.swg | 28 +++---- - Lib/javascript/v8/javascriptrun.swg | 80 +++++++++++++------ - Lib/javascript/v8/javascriptruntime.swg | 5 ++ - Lib/javascript/v8/javascriptstrings.swg | 10 +-- - Lib/javascript/v8/javascripttypemaps.swg | 2 +- - Source/Modules/javascript.cxx | 4 +- - Tools/javascript/v8_shell.cxx | 18 ++--- - Tools/testflags.py | 5 +- - Tools/travis-linux-install.sh | 7 +- - 71 files changed, 358 insertions(+), 144 deletions(-) - -diff --git a/.travis.yml b/.travis.yml -index 32c6656dd2..a53da19f68 100644 ---- a/.travis.yml -+++ b/.travis.yml -@@ -112,6 +112,41 @@ matrix: - env: SWIGLANG=javascript ENGINE=node VER=10 CPP11=1 - sudo: required - dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=node VER=12.8.1 CPP11=1 -+ sudo: required -+ dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=node VER=12.10.0 CPP11=1 -+ sudo: required -+ dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=node VER=12.14.1 CPP11=1 -+ sudo: required -+ dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=node VER=13.1.0 CPP11=1 -+ sudo: required -+ dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=node VER=13.6.0 CPP11=1 -+ sudo: required -+ dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=electron VER=12.14.1 ELECTRON_VER=7.0.1 CPP11=1 -+ sudo: required -+ dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=electron VER=12.14.1 ELECTRON_VER=7.1.8 CPP11=1 -+ sudo: required -+ dist: xenial - - compiler: gcc - os: linux - env: SWIGLANG=javascript ENGINE=jsc -diff --git a/Examples/test-suite/javascript/Makefile.in b/Examples/test-suite/javascript/Makefile.in -index 8127415f12..b780a9e9cf 100644 ---- a/Examples/test-suite/javascript/Makefile.in -+++ b/Examples/test-suite/javascript/Makefile.in -@@ -16,6 +16,17 @@ top_builddir = @top_builddir@ - SWIGEXE = $(top_builddir)/swig - SWIG_LIB_DIR = $(top_srcdir)/Lib - -+ifeq (electron, $(ENGINE)) -+NODE_DISTURL = --disturl=https://electronjs.org/headers -+NODE_RUNTIME = --runtime=electron -+NODE_ABI_TARGET = --target=${ELECTRON_VER} -+ENGINE = -+NODEJS = electron -+else -+NODE_DISTURL = -+NODE_RUNTIME = -+endif -+ - ifneq (, $(ENGINE)) - JSENGINE=$(ENGINE) - else -@@ -66,14 +77,14 @@ ifeq (node,$(JSENGINE)) - $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' \ - SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \ - SWIGOPT='-javascript $(SWIGOPT) -o $*_wrap.cxx $(srcdir)/../$*.i' swiginvoke && \ -- MAKEFLAGS= $(COMPILETOOL) $(NODEGYP) --loglevel=silent --directory $* configure build 1>>/dev/null -+ MAKEFLAGS= $(COMPILETOOL) $(NODEGYP) $(NODE_ABI_TARGET) $(NODE_DISTURL) $(NODE_RUNTIME) --loglevel=silent --directory $* configure build 1>>/dev/null - - swig_and_compile_cpp = \ - $(setup_node) && \ - $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' \ - SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \ - SWIGOPT='-c++ -javascript $(SWIGOPT) $(srcdir)/../$*.i' swiginvoke && \ -- MAKEFLAGS= $(COMPILETOOL) $(NODEGYP) --loglevel=silent --directory $* configure build 1>>/dev/null -+ MAKEFLAGS= $(COMPILETOOL) $(NODEGYP) $(NODE_ABI_TARGET) $(NODE_DISTURL) $(NODE_RUNTIME) --loglevel=silent --directory $* configure build 1>>/dev/null - - run_testcase = \ - if [ -f $(srcdir)/$*$(SCRIPTSUFFIX) ]; then \ -diff --git a/Examples/test-suite/javascript/abstract_access_runme.js b/Examples/test-suite/javascript/abstract_access_runme.js -index f61bb4358b..b2b5e95fb4 100644 ---- a/Examples/test-suite/javascript/abstract_access_runme.js -+++ b/Examples/test-suite/javascript/abstract_access_runme.js -@@ -1,6 +1,8 @@ --var abstract_access = require("abstract_access"); -+var abstract_access = require("./abstract_access"); - - var d = new abstract_access.D() - if (d.do_x() != 1) { - throw "Error"; - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/abstract_inherit_runme.js b/Examples/test-suite/javascript/abstract_inherit_runme.js -index f732e87673..6f58400373 100644 ---- a/Examples/test-suite/javascript/abstract_inherit_runme.js -+++ b/Examples/test-suite/javascript/abstract_inherit_runme.js -@@ -1,4 +1,4 @@ --var abstract_inherit = require("abstract_inherit"); -+var abstract_inherit = require("./abstract_inherit"); - - // Shouldn't be able to instantiate any of these classes - // since none of them implements the pure virtual function -@@ -38,3 +38,5 @@ try { - if (!caughtException) { - throw new Error("Spam should be instantiated as it is abstract"); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/abstract_typedef2_runme.js b/Examples/test-suite/javascript/abstract_typedef2_runme.js -index d8a533ab1d..f1c293818d 100644 ---- a/Examples/test-suite/javascript/abstract_typedef2_runme.js -+++ b/Examples/test-suite/javascript/abstract_typedef2_runme.js -@@ -1,6 +1,8 @@ --var abstract_typedef2 = require("abstract_typedef2"); -+var abstract_typedef2 = require("./abstract_typedef2"); - - var a = new abstract_typedef2.A_UF(); - - if (a == undefined) - throw "Error"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/abstract_typedef_runme.js b/Examples/test-suite/javascript/abstract_typedef_runme.js -index 286328fa8c..09b271218c 100644 ---- a/Examples/test-suite/javascript/abstract_typedef_runme.js -+++ b/Examples/test-suite/javascript/abstract_typedef_runme.js -@@ -1,4 +1,4 @@ --var abstract_typedef = require("abstract_typedef"); -+var abstract_typedef = require("./abstract_typedef"); - - var e = new abstract_typedef.Engine(); - var a = new abstract_typedef.A() -@@ -6,3 +6,5 @@ var a = new abstract_typedef.A() - if (a.write(e) != 1) { - throw "Error"; - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/abstract_virtual_runme.js b/Examples/test-suite/javascript/abstract_virtual_runme.js -index 9a9ce99885..f0d505d922 100644 ---- a/Examples/test-suite/javascript/abstract_virtual_runme.js -+++ b/Examples/test-suite/javascript/abstract_virtual_runme.js -@@ -1,4 +1,4 @@ --var abstract_virtual = require("abstract_virtual"); -+var abstract_virtual = require("./abstract_virtual"); - - d = new abstract_virtual.D() - -@@ -9,3 +9,5 @@ e = new abstract_virtual.E() - - if (e == undefined) - throw "Error"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/array_member_runme.js b/Examples/test-suite/javascript/array_member_runme.js -index 3d9bb0e5b3..64d158df59 100644 ---- a/Examples/test-suite/javascript/array_member_runme.js -+++ b/Examples/test-suite/javascript/array_member_runme.js -@@ -1,4 +1,4 @@ --var array_member = require("array_member"); -+var array_member = require("./array_member"); - - var f = new array_member.Foo(); - f.data = array_member.global_data; -@@ -20,3 +20,5 @@ for (var i=0; i<8; i++){ - throw "Bad array assignment (2)"; - } - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/arrays_global_runme.js b/Examples/test-suite/javascript/arrays_global_runme.js -index 0cbb28efba..db4ac20526 100644 ---- a/Examples/test-suite/javascript/arrays_global_runme.js -+++ b/Examples/test-suite/javascript/arrays_global_runme.js -@@ -1,4 +1,4 @@ --var arrays_global = require("arrays_global"); -+var arrays_global = require("./arrays_global"); - - arrays_global.array_i = arrays_global.array_const_i; - -@@ -16,3 +16,5 @@ arrays_global.BeginString_FIX44f; - arrays_global.test_a("hello","hi","chello","chi"); - - arrays_global.test_b("1234567","hi"); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/callback_runme.js b/Examples/test-suite/javascript/callback_runme.js -index 0218886419..aa22cd21fd 100644 ---- a/Examples/test-suite/javascript/callback_runme.js -+++ b/Examples/test-suite/javascript/callback_runme.js -@@ -1,4 +1,4 @@ --var callback = require("callback"); -+var callback = require("./callback"); - - if (callback.foo(2) !== 2) { - throw new Error("Failed."); -@@ -28,3 +28,5 @@ var a = new callback.A(); - if (callback.foobarm(3, a, callback.A.foom_cb_ptr) != a.foom(3)) { - throw new Error("Failed."); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/char_binary_runme.js b/Examples/test-suite/javascript/char_binary_runme.js -index 01b72ebe14..8b7e400349 100644 ---- a/Examples/test-suite/javascript/char_binary_runme.js -+++ b/Examples/test-suite/javascript/char_binary_runme.js -@@ -1,4 +1,4 @@ --var char_binary = require("char_binary"); -+var char_binary = require("./char_binary"); - - var t = new char_binary.Test(); - if (t.strlen('hile') != 4) { -@@ -46,3 +46,5 @@ if (char_binary.var_namet != "hola") { - throw("bad pointer case (2)"); - } - char_binary.delete_pchar(pc); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/char_strings_runme.js b/Examples/test-suite/javascript/char_strings_runme.js -index fe17cb9827..0cbe81e542 100644 ---- a/Examples/test-suite/javascript/char_strings_runme.js -+++ b/Examples/test-suite/javascript/char_strings_runme.js -@@ -1,4 +1,4 @@ --var char_strings = require("char_strings"); -+var char_strings = require("./char_strings"); - - var assertIsEqual = function(expected, actual) { - if (expected !== actual) { -@@ -9,3 +9,5 @@ var assertIsEqual = function(expected, actual) { - assertIsEqual("hi there", char_strings.CharPingPong("hi there")); - assertIsEqual("hi there", char_strings.CharArrayPingPong("hi there")); - assertIsEqual("hi there", char_strings.CharArrayDimsPingPong("hi there")); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/class_ignore_runme.js b/Examples/test-suite/javascript/class_ignore_runme.js -index ffbe021c71..938a19fc8d 100644 ---- a/Examples/test-suite/javascript/class_ignore_runme.js -+++ b/Examples/test-suite/javascript/class_ignore_runme.js -@@ -1,6 +1,8 @@ --var class_ignore = require("class_ignore"); -+var class_ignore = require("./class_ignore"); - - a = new class_ignore.Bar(); - - if (class_ignore.do_blah(a) != "Bar::blah") - throw "Error"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/class_scope_weird_runme.js b/Examples/test-suite/javascript/class_scope_weird_runme.js -index 73c118d617..325fefbac5 100644 ---- a/Examples/test-suite/javascript/class_scope_weird_runme.js -+++ b/Examples/test-suite/javascript/class_scope_weird_runme.js -@@ -1,6 +1,8 @@ --var class_scope_weird = require("class_scope_weird"); -+var class_scope_weird = require("./class_scope_weird"); - - f = new class_scope_weird.Foo(); - g = new class_scope_weird.Foo(3); - if (f.bar(3) != 3) - throw RuntimeError; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/complextest_runme.js b/Examples/test-suite/javascript/complextest_runme.js -index 1d9825f3b2..7e3e3e984b 100644 ---- a/Examples/test-suite/javascript/complextest_runme.js -+++ b/Examples/test-suite/javascript/complextest_runme.js -@@ -1,4 +1,4 @@ --var complextest = require("complextest"); -+var complextest = require("./complextest"); - - a = [-1,2]; - -@@ -29,3 +29,5 @@ v.add(1); - // TODO: how to check validity? - complextest.CopyHalf(v); - complextest.CopyHalfRef(v); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/constover_runme.js b/Examples/test-suite/javascript/constover_runme.js -index 9b192b5ff7..bae3344072 100644 ---- a/Examples/test-suite/javascript/constover_runme.js -+++ b/Examples/test-suite/javascript/constover_runme.js -@@ -1,4 +1,4 @@ --var constover = require("constover"); -+var constover = require("./constover"); - - p = constover.test("test"); - if (p != "test") { -@@ -31,3 +31,5 @@ p = f.test_pconstm("test"); - if (p != "test_pconstmethod") { - throw "member-test_pconstm failed!"; - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/constructor_copy_runme.js b/Examples/test-suite/javascript/constructor_copy_runme.js -index 179b9fb406..0d811470f1 100644 ---- a/Examples/test-suite/javascript/constructor_copy_runme.js -+++ b/Examples/test-suite/javascript/constructor_copy_runme.js -@@ -1,4 +1,4 @@ --var constructor_copy = require("constructor_copy"); -+var constructor_copy = require("./constructor_copy"); - - f1 = new constructor_copy.Foo1(3); - f11 = new constructor_copy.Foo1(f1); -@@ -40,3 +40,5 @@ try { - if (good == 0) { - throw "Error: should not allow calling copy ctor for Bard"; - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/cpp11_strongly_typed_enumerations_runme.js b/Examples/test-suite/javascript/cpp11_strongly_typed_enumerations_runme.js -index ad9d4e8833..241e38b768 100644 ---- a/Examples/test-suite/javascript/cpp11_strongly_typed_enumerations_runme.js -+++ b/Examples/test-suite/javascript/cpp11_strongly_typed_enumerations_runme.js -@@ -1,4 +1,4 @@ --var cpp11_strongly_typed_enumerations = require("cpp11_strongly_typed_enumerations"); -+var cpp11_strongly_typed_enumerations = require("./cpp11_strongly_typed_enumerations"); - - function enumCheck(actual, expected) { - if (actual != expected) { -@@ -163,3 +163,5 @@ enumCheck(class1.class1Test2(cpp11_strongly_typed_enumerations.Class1.Enum12_Val - enumCheck(cpp11_strongly_typed_enumerations.globalTest1(cpp11_strongly_typed_enumerations.Enum1_Val5a), 13); - enumCheck(cpp11_strongly_typed_enumerations.globalTest2(cpp11_strongly_typed_enumerations.Class1.Enum12_Val5c), 1121); - //enumCheck(globalTest3(cpp11_strongly_typed_enumerations.Class1.Struct1_Enum12_Val5f), 3121); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/cpp_enum_runme.js b/Examples/test-suite/javascript/cpp_enum_runme.js -index 8a248c372a..990f703c39 100644 ---- a/Examples/test-suite/javascript/cpp_enum_runme.js -+++ b/Examples/test-suite/javascript/cpp_enum_runme.js -@@ -1,4 +1,4 @@ --var cpp_enum = require("cpp_enum"); -+var cpp_enum = require("./cpp_enum"); - - var f = new cpp_enum.Foo() - -@@ -26,3 +26,5 @@ if(cpp_enum.Foo.hi != cpp_enum.Hello){ - throw "Error"; - } - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/cpp_namespace_runme.js b/Examples/test-suite/javascript/cpp_namespace_runme.js -index a6ab799646..69e74ae4ed 100644 ---- a/Examples/test-suite/javascript/cpp_namespace_runme.js -+++ b/Examples/test-suite/javascript/cpp_namespace_runme.js -@@ -1,4 +1,4 @@ --var cpp_namespace = require("cpp_namespace"); -+var cpp_namespace = require("./cpp_namespace"); - - var n = cpp_namespace.fact(4); - if (n != 24){ -@@ -45,3 +45,5 @@ if (cpp_namespace.do_method3(t4,40) != "Test4::method"){ - if (cpp_namespace.do_method3(t5,40) != "Test5::method"){ - throw ("Bad return value error!"); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/cpp_static_runme.js b/Examples/test-suite/javascript/cpp_static_runme.js -index c7917e12ea..e78b7016bd 100644 ---- a/Examples/test-suite/javascript/cpp_static_runme.js -+++ b/Examples/test-suite/javascript/cpp_static_runme.js -@@ -1,4 +1,4 @@ --var cpp_static = require("cpp_static"); -+var cpp_static = require("./cpp_static"); - - cpp_static.StaticFunctionTest.static_func(); - cpp_static.StaticFunctionTest.static_func_2(1); -@@ -7,3 +7,5 @@ cpp_static.StaticMemberTest.static_int = 10; - if (cpp_static.StaticMemberTest.static_int != 10) - throw "error"; - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/director_alternating_runme.js b/Examples/test-suite/javascript/director_alternating_runme.js -index cff288d35c..40da25af0c 100644 ---- a/Examples/test-suite/javascript/director_alternating_runme.js -+++ b/Examples/test-suite/javascript/director_alternating_runme.js -@@ -1,5 +1,7 @@ --var director_alternating = require("director_alternating"); -+var director_alternating = require("./director_alternating"); - - id = director_alternating.getBar().id(); - if (id != director_alternating.idFromGetBar()) - throw ("Error, Got wrong id: " + str(id)); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/disown_runme.js b/Examples/test-suite/javascript/disown_runme.js -index ea742b51e5..1950a2fb6c 100644 ---- a/Examples/test-suite/javascript/disown_runme.js -+++ b/Examples/test-suite/javascript/disown_runme.js -@@ -1,4 +1,4 @@ --var disown = require("disown"); -+var disown = require("./disown"); - - var a = new disown.A(); - var tmp = a.thisown; -@@ -20,3 +20,5 @@ b.acquire(a); - if (a.thisown) { - throw new Error("Failed."); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/dynamic_cast_runme.js b/Examples/test-suite/javascript/dynamic_cast_runme.js -index 32eabcf8b0..b807a93ca2 100644 ---- a/Examples/test-suite/javascript/dynamic_cast_runme.js -+++ b/Examples/test-suite/javascript/dynamic_cast_runme.js -@@ -1,4 +1,4 @@ --var dynamic_cast = require("dynamic_cast"); -+var dynamic_cast = require("./dynamic_cast"); - - var f = new dynamic_cast.Foo(); - var b = new dynamic_cast.Bar(); -@@ -10,3 +10,5 @@ var a = dynamic_cast.do_test(y); - if (a != "Bar::test") { - throw new Error("Failed."); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/empty_c_runme.js b/Examples/test-suite/javascript/empty_c_runme.js -index 1cc22e4ce7..61d57853bf 100644 ---- a/Examples/test-suite/javascript/empty_c_runme.js -+++ b/Examples/test-suite/javascript/empty_c_runme.js -@@ -1 +1,3 @@ --var empty_c = require("empty_c"); -+var empty_c = require("./empty_c"); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/empty_runme.js b/Examples/test-suite/javascript/empty_runme.js -index 7894379bee..a16eed15a1 100644 ---- a/Examples/test-suite/javascript/empty_runme.js -+++ b/Examples/test-suite/javascript/empty_runme.js -@@ -1 +1,2 @@ --var empty = require("empty"); -\ No newline at end of file -+var empty = require("./empty"); -+process.exit(0); -diff --git a/Examples/test-suite/javascript/enum_template_runme.js b/Examples/test-suite/javascript/enum_template_runme.js -index 1e71e5f640..c44b813644 100644 ---- a/Examples/test-suite/javascript/enum_template_runme.js -+++ b/Examples/test-suite/javascript/enum_template_runme.js -@@ -1,4 +1,4 @@ --var enum_template = require("enum_template"); -+var enum_template = require("./enum_template"); - - if (enum_template.MakeETest() != 1) - throw "RuntimeError"; -@@ -6,3 +6,5 @@ if (enum_template.MakeETest() != 1) - if (enum_template.TakeETest(0) != null) - throw "RuntimeError"; - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/infinity_runme.js b/Examples/test-suite/javascript/infinity_runme.js -index 8ebe496a6b..4bef97a1c1 100644 ---- a/Examples/test-suite/javascript/infinity_runme.js -+++ b/Examples/test-suite/javascript/infinity_runme.js -@@ -1,5 +1,7 @@ --var infinity = require("infinity"); -+var infinity = require("./infinity"); - - infinity.initialise_MYINFINITY(); - var my_infinity = infinity.INFINITY; - var ret_val = infinity.use_infinity(my_infinity); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/namespace_virtual_method_runme.js b/Examples/test-suite/javascript/namespace_virtual_method_runme.js -index 4f1e05c848..9dfe33a3ea 100644 ---- a/Examples/test-suite/javascript/namespace_virtual_method_runme.js -+++ b/Examples/test-suite/javascript/namespace_virtual_method_runme.js -@@ -1,3 +1,5 @@ --var namespace_virtual_method = require("namespace_virtual_method"); -+var namespace_virtual_method = require("./namespace_virtual_method"); - - x = new namespace_virtual_method.Spam(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/native_directive_runme.js b/Examples/test-suite/javascript/native_directive_runme.js -index 5c1d69cf17..c7573cf7d8 100644 ---- a/Examples/test-suite/javascript/native_directive_runme.js -+++ b/Examples/test-suite/javascript/native_directive_runme.js -@@ -1,4 +1,4 @@ --var native_directive = require("native_directive"); -+var native_directive = require("./native_directive"); - - (function main() { - var s = "abc.DEF-123"; -@@ -7,3 +7,5 @@ var native_directive = require("native_directive"); - if (native_directive.CountAlphaCharacters(s) !== 6) - throw "CountAlphaCharacters failed"; - })(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/nspace_extend_runme.js b/Examples/test-suite/javascript/nspace_extend_runme.js -index 8cabfe9457..b7daf883a9 100644 ---- a/Examples/test-suite/javascript/nspace_extend_runme.js -+++ b/Examples/test-suite/javascript/nspace_extend_runme.js -@@ -1,4 +1,4 @@ --var nspace_extend = require("nspace_extend"); -+var nspace_extend = require("./nspace_extend"); - - // constructors and destructors - var color1 = new nspace_extend.Outer.Inner1.Color(); -@@ -25,3 +25,5 @@ created = nspace_extend.Outer.Inner2.Color.create(); - var col1 = new nspace_extend.Outer.Inner1.Color(); - var col2 = nspace_extend.Outer.Inner2.Color.create(); - col2.colors(col1, col1, col2, col2, col2); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/nspace_runme.js b/Examples/test-suite/javascript/nspace_runme.js -index 993610dd62..5402b13af9 100644 ---- a/Examples/test-suite/javascript/nspace_runme.js -+++ b/Examples/test-suite/javascript/nspace_runme.js -@@ -1,4 +1,4 @@ --var nspace = require("nspace"); -+var nspace = require("./nspace"); - - var color1 = new nspace.Outer.Inner1.Color(); - var color = new nspace.Outer.Inner1.Color(color1); -@@ -74,3 +74,5 @@ var blue3 = new nspace.Outer.Inner3.Blue(); - blue3.blueInstanceMethod(); - var blue4 = new nspace.Outer.Inner4.Blue(); - blue4.blueInstanceMethod(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/null_pointer_runme.js b/Examples/test-suite/javascript/null_pointer_runme.js -index 8a9b611867..25d1e535f4 100644 ---- a/Examples/test-suite/javascript/null_pointer_runme.js -+++ b/Examples/test-suite/javascript/null_pointer_runme.js -@@ -1,4 +1,4 @@ --var null_pointer = require("null_pointer"); -+var null_pointer = require("./null_pointer"); - - if (!null_pointer.funk(null)) { - throw new Error("Javascript 'null' should be converted into NULL."); -@@ -7,3 +7,5 @@ if (!null_pointer.funk(null)) { - if (null_pointer.getnull() != null) { - throw new Error("NULL should be converted into Javascript 'null'."); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/overload_copy_runme.js b/Examples/test-suite/javascript/overload_copy_runme.js -index e2f6107884..a1e1459317 100644 ---- a/Examples/test-suite/javascript/overload_copy_runme.js -+++ b/Examples/test-suite/javascript/overload_copy_runme.js -@@ -1,4 +1,6 @@ --var overload_copy = require("overload_copy"); -+var overload_copy = require("./overload_copy"); - - f = new overload_copy.Foo(); - g = new overload_copy.Foo(f); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/overload_null_runme.js b/Examples/test-suite/javascript/overload_null_runme.js -index f1e35cac76..74d855248e 100644 ---- a/Examples/test-suite/javascript/overload_null_runme.js -+++ b/Examples/test-suite/javascript/overload_null_runme.js -@@ -1,6 +1,6 @@ - // There are no typecheck typemaps in Javascript yet, so most of this test - // does not actually worked - the check functions have thus been commented out. --var overload_null = require("overload_null"); -+var overload_null = require("./overload_null"); - - var check = function(expected, actual) { - if (expected !== actual) { -@@ -47,3 +47,5 @@ check(20, o.byval2forwardptr(x)); - check(21, o.byval1forwardref(x)); - - check(22, o.byval2forwardref(x)); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/preproc_include_runme.js b/Examples/test-suite/javascript/preproc_include_runme.js -index 5ec72b842d..8d4e8601f6 100644 ---- a/Examples/test-suite/javascript/preproc_include_runme.js -+++ b/Examples/test-suite/javascript/preproc_include_runme.js -@@ -1,4 +1,4 @@ --var preproc_include = require("preproc_include"); -+var preproc_include = require("./preproc_include"); - - if (preproc_include.multiply10(10) != 100) - throw "RuntimeError"; -@@ -21,3 +21,5 @@ if (preproc_include.multiply60(10) != 600) - if (preproc_include.multiply70(10) != 700) - throw "RuntimeError"; - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/preproc_runme.js b/Examples/test-suite/javascript/preproc_runme.js -index 167ca5ac1c..15e026d8a6 100644 ---- a/Examples/test-suite/javascript/preproc_runme.js -+++ b/Examples/test-suite/javascript/preproc_runme.js -@@ -1,4 +1,4 @@ --var preproc = require("preproc"); -+var preproc = require("./preproc"); - - if (preproc.endif != 1) - throw "RuntimeError"; -@@ -12,3 +12,5 @@ if (preproc.defined != 1) - if (2*preproc.one != preproc.two) - throw "RuntimeError"; - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/rename1_runme.js b/Examples/test-suite/javascript/rename1_runme.js -index 7b2ac37b6d..4741673c90 100644 ---- a/Examples/test-suite/javascript/rename1_runme.js -+++ b/Examples/test-suite/javascript/rename1_runme.js -@@ -1,4 +1,4 @@ --var rename = require("rename1"); -+var rename = require("./rename1"); - - function part1() { - var xyz = new rename.XYZInt(); -@@ -62,3 +62,5 @@ part2(); - part3(); - part4(); - part5(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/rename2_runme.js b/Examples/test-suite/javascript/rename2_runme.js -index 040c798bb5..6f6a7d3814 100644 ---- a/Examples/test-suite/javascript/rename2_runme.js -+++ b/Examples/test-suite/javascript/rename2_runme.js -@@ -1,4 +1,4 @@ --var rename = require("rename2"); -+var rename = require("./rename2"); - - function part1() { - var xyz = new rename.XYZInt(); -@@ -62,3 +62,5 @@ part2(); - part3(); - part4(); - part5(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/rename3_runme.js b/Examples/test-suite/javascript/rename3_runme.js -index fb9393b037..fcac4dfe02 100644 ---- a/Examples/test-suite/javascript/rename3_runme.js -+++ b/Examples/test-suite/javascript/rename3_runme.js -@@ -1,4 +1,4 @@ --var rename = require("rename3"); -+var rename = require("./rename3"); - - function part1() { - var xyz = new rename.XYZInt(); -@@ -62,3 +62,5 @@ part2(); - part3(); - part4(); - part5(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/rename4_runme.js b/Examples/test-suite/javascript/rename4_runme.js -index 1c3d8e77f5..9bf1c45a24 100644 ---- a/Examples/test-suite/javascript/rename4_runme.js -+++ b/Examples/test-suite/javascript/rename4_runme.js -@@ -1,4 +1,4 @@ --var rename = require("rename4"); -+var rename = require("./rename4"); - - function part1() { - var xyz = new rename.XYZInt(); -@@ -62,3 +62,5 @@ part2(); - part3(); - part4(); - part5(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/rename_scope_runme.js b/Examples/test-suite/javascript/rename_scope_runme.js -index fea4d2ca99..dffbcded7d 100644 ---- a/Examples/test-suite/javascript/rename_scope_runme.js -+++ b/Examples/test-suite/javascript/rename_scope_runme.js -@@ -1,4 +1,4 @@ --var rename_scope = require("rename_scope"); -+var rename_scope = require("./rename_scope"); - - var a = new rename_scope.Natural_UP(); - var b = new rename_scope.Natural_BP(); -@@ -15,3 +15,5 @@ var f = rename_scope.equals; - if (f === undefined) { - throw new Error("Equality operator has not been renamed."); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/rename_simple_runme.js b/Examples/test-suite/javascript/rename_simple_runme.js -index 21350cd3ee..9d39f1a62e 100644 ---- a/Examples/test-suite/javascript/rename_simple_runme.js -+++ b/Examples/test-suite/javascript/rename_simple_runme.js -@@ -1,4 +1,4 @@ --var rename_simple = require("rename_simple"); -+var rename_simple = require("./rename_simple"); - var NewStruct = rename_simple.NewStruct; - - var s = new NewStruct(); -@@ -48,3 +48,5 @@ rename_simple.NewGlobalVariable = 6666; - if (rename_simple.NewGlobalVariable !== 6666) { - throw new Error("rename_simple.NewGlobalVariable: Expected 6666, was " + rename_simple.NewGlobalVariable); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/ret_by_value_runme.js b/Examples/test-suite/javascript/ret_by_value_runme.js -index 9d0840602a..e0eec07cf7 100644 ---- a/Examples/test-suite/javascript/ret_by_value_runme.js -+++ b/Examples/test-suite/javascript/ret_by_value_runme.js -@@ -1,4 +1,4 @@ --var ret_by_value = require("ret_by_value"); -+var ret_by_value = require("./ret_by_value"); - - a = ret_by_value.get_test(); - if (a.myInt != 100) -@@ -6,3 +6,5 @@ if (a.myInt != 100) - - if (a.myShort != 200) - throw "RuntimeError"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/string_simple_runme.js b/Examples/test-suite/javascript/string_simple_runme.js -index 71fbb7bd07..21668fc05f 100644 ---- a/Examples/test-suite/javascript/string_simple_runme.js -+++ b/Examples/test-suite/javascript/string_simple_runme.js -@@ -1,4 +1,4 @@ --var string_simple = require("string_simple"); -+var string_simple = require("./string_simple"); - - // Test unicode string - var str = "olé"; -@@ -8,3 +8,5 @@ var copy = string_simple.copy_str(str); - if (str !== copy) { - throw "Error: copy is not equal: original="+str+", copy="+copy; - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/struct_value_runme.js b/Examples/test-suite/javascript/struct_value_runme.js -index 5b171b8fed..d277481ed0 100644 ---- a/Examples/test-suite/javascript/struct_value_runme.js -+++ b/Examples/test-suite/javascript/struct_value_runme.js -@@ -1,4 +1,4 @@ --var struct_value = require("struct_value"); -+var struct_value = require("./struct_value"); - - b = new struct_value.Bar(); - -@@ -9,3 +9,5 @@ throw "RuntimeError"; - b.b.x = 3; - if (b.b.x != 3) - throw "RuntimeError" -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/swig_exception_runme.js b/Examples/test-suite/javascript/swig_exception_runme.js -index 55435e9477..257dedc8fc 100644 ---- a/Examples/test-suite/javascript/swig_exception_runme.js -+++ b/Examples/test-suite/javascript/swig_exception_runme.js -@@ -1,4 +1,4 @@ --var swig_exception = require("swig_exception"); -+var swig_exception = require("./swig_exception"); - - var c = new swig_exception.Circle(10); - var s = new swig_exception.Square(10); -@@ -28,3 +28,5 @@ if (swig_exception.Shape.nshapes != 0) { - throw "Shape.nshapes should be 0, actually " + swig_exception.Shape.nshapes; - } - */ -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/template_static_runme.js b/Examples/test-suite/javascript/template_static_runme.js -index d6106138ae..aa3e548b8d 100644 ---- a/Examples/test-suite/javascript/template_static_runme.js -+++ b/Examples/test-suite/javascript/template_static_runme.js -@@ -1,3 +1,5 @@ --var template_static = require("template_static"); -+var template_static = require("./template_static"); - - template_static.Foo.bar_double(1); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typedef_class_runme.js b/Examples/test-suite/javascript/typedef_class_runme.js -index 64e0051c37..5d6df5b6b7 100644 ---- a/Examples/test-suite/javascript/typedef_class_runme.js -+++ b/Examples/test-suite/javascript/typedef_class_runme.js -@@ -1,7 +1,9 @@ --var typedef_class = require("typedef_class"); -+var typedef_class = require("./typedef_class"); - - a = new typedef_class.RealA(); - a.a = 3; - - b = new typedef_class.B(); - b.testA(a); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typedef_inherit_runme.js b/Examples/test-suite/javascript/typedef_inherit_runme.js -index 7590e1e6ec..b13c59a030 100644 ---- a/Examples/test-suite/javascript/typedef_inherit_runme.js -+++ b/Examples/test-suite/javascript/typedef_inherit_runme.js -@@ -1,4 +1,4 @@ --var typedef_inherit = require("typedef_inherit"); -+var typedef_inherit = require("./typedef_inherit"); - - a = new typedef_inherit.Foo(); - b = new typedef_inherit.Bar(); -@@ -21,3 +21,5 @@ if (x != "Spam::blah") - x = typedef_inherit.do_blah2(d); - if (x != "Grok::blah") - print ("Whoa! Bad return" + x); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typedef_scope_runme.js b/Examples/test-suite/javascript/typedef_scope_runme.js -index 5c1368ab78..e8b2a8255c 100644 ---- a/Examples/test-suite/javascript/typedef_scope_runme.js -+++ b/Examples/test-suite/javascript/typedef_scope_runme.js -@@ -1,4 +1,4 @@ --var typedef_scope = require("typedef_scope"); -+var typedef_scope = require("./typedef_scope"); - - b = new typedef_scope.Bar(); - x = b.test1(42,"hello"); -@@ -10,3 +10,5 @@ if (x != "hello") - print("Failed!!"); - - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typemap_arrays_runme.js b/Examples/test-suite/javascript/typemap_arrays_runme.js -index 610ecdd9c7..c333f43930 100644 ---- a/Examples/test-suite/javascript/typemap_arrays_runme.js -+++ b/Examples/test-suite/javascript/typemap_arrays_runme.js -@@ -1,5 +1,7 @@ --var typemap_arrays = require("typemap_arrays"); -+var typemap_arrays = require("./typemap_arrays"); - - if (typemap_arrays.sumA(null) != 60) - throw "RuntimeError, Sum is wrong"; - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typemap_delete_runme.js b/Examples/test-suite/javascript/typemap_delete_runme.js -index 1d42ce4daf..72252fe013 100644 ---- a/Examples/test-suite/javascript/typemap_delete_runme.js -+++ b/Examples/test-suite/javascript/typemap_delete_runme.js -@@ -1,5 +1,7 @@ --var typemap_delete = require("typemap_delete"); -+var typemap_delete = require("./typemap_delete"); - - r = new typemap_delete.Rect(123); - if (r.val != 123) - throw "RuntimeError"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typemap_namespace_runme.js b/Examples/test-suite/javascript/typemap_namespace_runme.js -index 2aa3580249..962e54afa4 100644 ---- a/Examples/test-suite/javascript/typemap_namespace_runme.js -+++ b/Examples/test-suite/javascript/typemap_namespace_runme.js -@@ -1,7 +1,9 @@ --var typemap_namespace = require("typemap_namespace"); -+var typemap_namespace = require("./typemap_namespace"); - - if (typemap_namespace.test1("hello") != "hello") - throw "RuntimeError"; - - if (typemap_namespace.test2("hello") != "hello") - throw "RuntimeError"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typemap_ns_using_runme.js b/Examples/test-suite/javascript/typemap_ns_using_runme.js -index 7e4019ab24..e97ea473c6 100644 ---- a/Examples/test-suite/javascript/typemap_ns_using_runme.js -+++ b/Examples/test-suite/javascript/typemap_ns_using_runme.js -@@ -1,4 +1,6 @@ --var typemap_ns_using = require("typemap_ns_using"); -+var typemap_ns_using = require("./typemap_ns_using"); - - if (typemap_ns_using.spam(37) != 37) - throw "RuntimeError"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/using1_runme.js b/Examples/test-suite/javascript/using1_runme.js -index 2415156f08..68917b0156 100644 ---- a/Examples/test-suite/javascript/using1_runme.js -+++ b/Examples/test-suite/javascript/using1_runme.js -@@ -1,4 +1,6 @@ --var using1 = require("using1"); -+var using1 = require("./using1"); - - if (using1.spam(37) != 37) - throw "RuntimeError"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/using2_runme.js b/Examples/test-suite/javascript/using2_runme.js -index 2ef08faca1..001f551403 100644 ---- a/Examples/test-suite/javascript/using2_runme.js -+++ b/Examples/test-suite/javascript/using2_runme.js -@@ -1,4 +1,6 @@ --var using2 = require("using2"); -+var using2 = require("./using2"); - - if (using2.spam(37) != 37) - throw "RuntimeError"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/varargs_runme.js b/Examples/test-suite/javascript/varargs_runme.js -index fc6d945c1a..66348f2983 100644 ---- a/Examples/test-suite/javascript/varargs_runme.js -+++ b/Examples/test-suite/javascript/varargs_runme.js -@@ -1,4 +1,4 @@ --var varargs = require("varargs"); -+var varargs = require("./varargs"); - - if (varargs.test("Hello") != "Hello") { - throw new Error("Failed"); -@@ -42,3 +42,5 @@ try { - if (!thrown) { - throw new Error("Failed"); - } -+ -+process.exit(0); -diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg -index c4aaf3db0c..c2aacc61a5 100644 ---- a/Lib/javascript/v8/javascriptcode.swg -+++ b/Lib/javascript/v8/javascriptcode.swg -@@ -11,7 +11,7 @@ - static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle self = args.Holder(); -+ v8::Local self = args.Holder(); - $jslocals - if(args.Length() != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper."); - $jscode -@@ -53,7 +53,7 @@ static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args) { - SWIGV8_HANDLESCOPE(); - - OverloadErrorHandler errorHandler; -- v8::Handle self; -+ v8::Local self; - - // switch all cases by means of series of if-returns. - $jsdispatchcases -@@ -78,7 +78,7 @@ fail: - static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args, V8ErrorHandler &SWIGV8_ErrorHandler) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle self = args.Holder(); -+ v8::Local self = args.Holder(); - $jslocals - if(args.Length() != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper."); - $jscode -@@ -226,7 +226,7 @@ static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8Pr - #endif - SWIGV8_HANDLESCOPE(); - -- v8::Handle jsresult; -+ v8::Local jsresult; - $jslocals - $jscode - SWIGV8_RETURN_INFO(jsresult, info); -@@ -271,7 +271,7 @@ fail: - static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle jsresult; -+ v8::Local jsresult; - $jslocals - if(args.Length() != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper."); - -@@ -296,7 +296,7 @@ fail: - static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle jsresult; -+ v8::Local jsresult; - OverloadErrorHandler errorHandler; - $jscode - -@@ -320,7 +320,7 @@ static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args, V8ErrorHandler - { - SWIGV8_HANDLESCOPE(); - -- v8::Handle jsresult; -+ v8::Local jsresult; - $jslocals - $jscode - SWIGV8_RETURN(jsresult); -@@ -374,7 +374,7 @@ fail: - %fragment("jsv8_define_class_template", "templates") - %{ - /* Name: $jsmangledname, Type: $jsmangledtype, Dtor: $jsdtor */ -- v8::Handle $jsmangledname_class = SWIGV8_CreateClassTemplate("$jsmangledname"); -+ v8::Local $jsmangledname_class = SWIGV8_CreateClassTemplate("$jsmangledname"); - SWIGV8_SET_CLASS_TEMPL($jsmangledname_clientData.class_templ, $jsmangledname_class); - $jsmangledname_clientData.dtor = $jsdtor; - if (SWIGTYPE_$jsmangledtype->clientdata == 0) { -@@ -420,11 +420,15 @@ fail: - %fragment("jsv8_create_class_instance", "templates") - %{ - /* Class: $jsname ($jsmangledname) */ -- v8::Handle $jsmangledname_class_0 = SWIGV8_CreateClassTemplate("$jsname"); -+ v8::Local $jsmangledname_class_0 = SWIGV8_CreateClassTemplate("$jsname"); - $jsmangledname_class_0->SetCallHandler($jsctor); - $jsmangledname_class_0->Inherit($jsmangledname_class); -+#if (SWIG_V8_VERSION < 0x0705) - $jsmangledname_class_0->SetHiddenPrototype(true); -- v8::Handle $jsmangledname_obj = $jsmangledname_class_0->GetFunction(); -+ v8::Local $jsmangledname_obj = $jsmangledname_class_0->GetFunction(); -+#else -+ v8::Local $jsmangledname_obj = $jsmangledname_class_0->GetFunction(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked(); -+#endif - %} - - /* ----------------------------------------------------------------------------- -@@ -435,7 +439,11 @@ fail: - * ----------------------------------------------------------------------------- */ - %fragment("jsv8_register_class", "templates") - %{ -+#if (SWIG_V8_VERSION < 0x0706) - $jsparent_obj->Set(SWIGV8_SYMBOL_NEW("$jsname"), $jsmangledname_obj); -+#else -+ $jsparent_obj->Set(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW("$jsname"), $jsmangledname_obj); -+#endif - %} - - /* ----------------------------------------------------------------------------- -@@ -444,7 +452,7 @@ fail: - * ----------------------------------------------------------------------------- */ - %fragment("jsv8_create_namespace", "templates") - %{ -- v8::Handle $jsmangledname_obj = SWIGV8_OBJECT_NEW(); -+ v8::Local $jsmangledname_obj = SWIGV8_OBJECT_NEW(); - %} - - /* ----------------------------------------------------------------------------- -diff --git a/Lib/javascript/v8/javascriptcomplex.swg b/Lib/javascript/v8/javascriptcomplex.swg -index d3b4aaffa6..533e548131 100644 ---- a/Lib/javascript/v8/javascriptcomplex.swg -+++ b/Lib/javascript/v8/javascriptcomplex.swg -@@ -12,7 +12,7 @@ - %fragment(SWIG_From_frag(Type),"header", - fragment=SWIG_From_frag(double)) - { --SWIGINTERNINLINE v8::Handle -+SWIGINTERNINLINE v8::Local - SWIG_From_dec(Type)(%ifcplusplus(const Type&, Type) c) - { - SWIGV8_HANDLESCOPE_ESC(); -@@ -32,12 +32,12 @@ SWIG_From_dec(Type)(%ifcplusplus(const Type&, Type) c) - fragment=SWIG_AsVal_frag(double)) - { - SWIGINTERN int --SWIG_AsVal_dec(Type) (v8::Handle o, Type* val) -+SWIG_AsVal_dec(Type) (v8::Local o, Type* val) - { - SWIGV8_HANDLESCOPE(); - - if (o->IsArray()) { -- v8::Handle array = v8::Handle::Cast(o); -+ v8::Local array = v8::Local::Cast(o); - - if(array->Length() != 2) SWIG_Error(SWIG_TypeError, "Illegal argument for complex: must be array[2]."); - double re, im; -@@ -74,12 +74,12 @@ SWIG_AsVal_dec(Type) (v8::Handle o, Type* val) - %fragment(SWIG_AsVal_frag(Type),"header", - fragment=SWIG_AsVal_frag(float)) { - SWIGINTERN int --SWIG_AsVal_dec(Type) (v8::Handle o, Type* val) -+SWIG_AsVal_dec(Type) (v8::Local o, Type* val) - { - SWIGV8_HANDLESCOPE(); - - if (o->IsArray()) { -- v8::Handle array = v8::Handle::Cast(o); -+ v8::Local array = v8::Local::Cast(o); - - if(array->Length() != 2) SWIG_Error(SWIG_TypeError, "Illegal argument for complex: must be array[2]."); - double re, im; -diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg -index 80fbd7aa1a..0cd24a1942 100644 ---- a/Lib/javascript/v8/javascripthelpers.swg -+++ b/Lib/javascript/v8/javascripthelpers.swg -@@ -21,19 +21,19 @@ typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfoVoid; - /** - * Creates a class template for a class with specified initialization function. - */ --SWIGRUNTIME v8::Handle SWIGV8_CreateClassTemplate(const char* symbol) { -+SWIGRUNTIME v8::Local SWIGV8_CreateClassTemplate(const char* symbol) { - SWIGV8_HANDLESCOPE_ESC(); - - v8::Local class_templ = SWIGV8_FUNCTEMPLATE_NEW_VOID(); - class_templ->SetClassName(SWIGV8_SYMBOL_NEW(symbol)); - -- v8::Handle inst_templ = class_templ->InstanceTemplate(); -+ v8::Local inst_templ = class_templ->InstanceTemplate(); - inst_templ->SetInternalFieldCount(1); - -- v8::Handle equals_templ = class_templ->PrototypeTemplate(); -+ v8::Local equals_templ = class_templ->PrototypeTemplate(); - equals_templ->Set(SWIGV8_SYMBOL_NEW("equals"), SWIGV8_FUNCTEMPLATE_NEW(_SWIGV8_wrap_equals)); - -- v8::Handle cptr_templ = class_templ->PrototypeTemplate(); -+ v8::Local cptr_templ = class_templ->PrototypeTemplate(); - cptr_templ->Set(SWIGV8_SYMBOL_NEW("getCPtr"), SWIGV8_FUNCTEMPLATE_NEW(_wrap_getCPtr)); - - SWIGV8_ESCAPE(class_templ); -@@ -42,33 +42,39 @@ SWIGRUNTIME v8::Handle SWIGV8_CreateClassTemplate(const ch - /** - * Registers a class method with given name for a given class template. - */ --SWIGRUNTIME void SWIGV8_AddMemberFunction(v8::Handle class_templ, const char* symbol, -+SWIGRUNTIME void SWIGV8_AddMemberFunction(v8::Local class_templ, const char* symbol, - SwigV8FunctionCallback _func) { -- v8::Handle proto_templ = class_templ->PrototypeTemplate(); -+ v8::Local proto_templ = class_templ->PrototypeTemplate(); - proto_templ->Set(SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)); - } - - /** - * Registers a class property with given name for a given class template. - */ --SWIGRUNTIME void SWIGV8_AddMemberVariable(v8::Handle class_templ, const char* symbol, -+SWIGRUNTIME void SWIGV8_AddMemberVariable(v8::Local class_templ, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { -- v8::Handle proto_templ = class_templ->InstanceTemplate(); -+ v8::Local proto_templ = class_templ->InstanceTemplate(); - proto_templ->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); - } - - /** - * Registers a class method with given name for a given object. - */ --SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle obj, const char* symbol, -+SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Local obj, const char* symbol, - const SwigV8FunctionCallback& _func) { -+#if (SWIG_V8_VERSION < 0x0705) - obj->Set(SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)->GetFunction()); -+#elif (SWIG_V8_VERSION < 0x0706) -+ obj->Set(SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)->GetFunction(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked()); -+#else -+ obj->Set(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)->GetFunction(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked()); -+#endif - } - - /** - * Registers a class method with given name for a given object. - */ --SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle obj, const char* symbol, -+SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Local obj, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { - #if (V8_MAJOR_VERSION-0) < 5 - obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); -diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg -index 8faf2dd8e1..450aa9c6d9 100644 ---- a/Lib/javascript/v8/javascriptinit.swg -+++ b/Lib/javascript/v8/javascriptinit.swg -@@ -70,14 +70,14 @@ extern "C" - #if (NODE_MODULE_VERSION < 0x000C) - void SWIGV8_INIT (v8::Handle exports) - #else --void SWIGV8_INIT (v8::Handle exports, v8::Handle /*module*/) -+void SWIGV8_INIT (v8::Local exports, v8::Local /*module*/) - #endif - { - SWIG_InitializeModule(static_cast(&exports)); - - SWIGV8_HANDLESCOPE(); - -- v8::Handle exports_obj = exports; -+ v8::Local exports_obj = exports; - %} - - -diff --git a/Lib/javascript/v8/javascriptprimtypes.swg b/Lib/javascript/v8/javascriptprimtypes.swg -index f76be983b1..24f5daf7c5 100644 ---- a/Lib/javascript/v8/javascriptprimtypes.swg -+++ b/Lib/javascript/v8/javascriptprimtypes.swg -@@ -6,7 +6,7 @@ - - %fragment(SWIG_From_frag(bool),"header") { - SWIGINTERNINLINE --v8::Handle -+v8::Local - SWIG_From_dec(bool)(bool value) - { - return SWIGV8_BOOLEAN_NEW(value); -@@ -16,7 +16,7 @@ SWIG_From_dec(bool)(bool value) - %fragment(SWIG_AsVal_frag(bool),"header", - fragment=SWIG_AsVal_frag(long)) { - SWIGINTERN --int SWIG_AsVal_dec(bool)(v8::Handle obj, bool *val) -+int SWIG_AsVal_dec(bool)(v8::Local obj, bool *val) - { - if(!obj->IsBoolean()) { - return SWIG_ERROR; -@@ -31,7 +31,7 @@ int SWIG_AsVal_dec(bool)(v8::Handle obj, bool *val) - - %fragment(SWIG_From_frag(int),"header") { - SWIGINTERNINLINE --v8::Handle SWIG_From_dec(int)(int value) -+v8::Local SWIG_From_dec(int)(int value) - { - return SWIGV8_INT32_NEW(value); - } -@@ -39,7 +39,7 @@ v8::Handle SWIG_From_dec(int)(int value) - - %fragment(SWIG_AsVal_frag(int),"header") { - SWIGINTERN --int SWIG_AsVal_dec(int)(v8::Handle valRef, int* val) -+int SWIG_AsVal_dec(int)(v8::Local valRef, int* val) - { - if (!valRef->IsNumber()) { - return SWIG_TypeError; -@@ -54,7 +54,7 @@ int SWIG_AsVal_dec(int)(v8::Handle valRef, int* val) - - %fragment(SWIG_From_frag(long),"header") { - SWIGINTERNINLINE --v8::Handle SWIG_From_dec(long)(long value) -+v8::Local SWIG_From_dec(long)(long value) - { - return SWIGV8_NUMBER_NEW(value); - } -@@ -63,7 +63,7 @@ v8::Handle SWIG_From_dec(long)(long value) - %fragment(SWIG_AsVal_frag(long),"header", - fragment="SWIG_CanCastAsInteger") { - SWIGINTERN --int SWIG_AsVal_dec(long)(v8::Handle obj, long* val) -+int SWIG_AsVal_dec(long)(v8::Local obj, long* val) - { - if (!obj->IsNumber()) { - return SWIG_TypeError; -@@ -79,7 +79,7 @@ int SWIG_AsVal_dec(long)(v8::Handle obj, long* val) - %fragment(SWIG_From_frag(unsigned long),"header", - fragment=SWIG_From_frag(long)) { - SWIGINTERNINLINE --v8::Handle SWIG_From_dec(unsigned long)(unsigned long value) -+v8::Local SWIG_From_dec(unsigned long)(unsigned long value) - { - return (value > LONG_MAX) ? - SWIGV8_INTEGER_NEW_UNS(value) : SWIGV8_INTEGER_NEW(%numeric_cast(value,long)); -@@ -89,7 +89,7 @@ v8::Handle SWIG_From_dec(unsigned long)(unsigned long value) - %fragment(SWIG_AsVal_frag(unsigned long),"header", - fragment="SWIG_CanCastAsInteger") { - SWIGINTERN --int SWIG_AsVal_dec(unsigned long)(v8::Handle obj, unsigned long *val) -+int SWIG_AsVal_dec(unsigned long)(v8::Local obj, unsigned long *val) - { - if(!obj->IsNumber()) { - return SWIG_TypeError; -@@ -115,7 +115,7 @@ int SWIG_AsVal_dec(unsigned long)(v8::Handle obj, unsigned long *val) - fragment="SWIG_LongLongAvailable") { - %#ifdef SWIG_LONG_LONG_AVAILABLE - SWIGINTERNINLINE --v8::Handle SWIG_From_dec(long long)(long long value) -+v8::Local SWIG_From_dec(long long)(long long value) - { - return SWIGV8_NUMBER_NEW(value); - } -@@ -128,7 +128,7 @@ v8::Handle SWIG_From_dec(long long)(long long value) - fragment="SWIG_LongLongAvailable") { - %#ifdef SWIG_LONG_LONG_AVAILABLE - SWIGINTERN --int SWIG_AsVal_dec(long long)(v8::Handle obj, long long* val) -+int SWIG_AsVal_dec(long long)(v8::Local obj, long long* val) - { - if (!obj->IsNumber()) { - return SWIG_TypeError; -@@ -148,7 +148,7 @@ int SWIG_AsVal_dec(long long)(v8::Handle obj, long long* val) - fragment="SWIG_LongLongAvailable") { - %#ifdef SWIG_LONG_LONG_AVAILABLE - SWIGINTERNINLINE --v8::Handle SWIG_From_dec(unsigned long long)(unsigned long long value) -+v8::Local SWIG_From_dec(unsigned long long)(unsigned long long value) - { - return (value > LONG_MAX) ? - SWIGV8_INTEGER_NEW_UNS(value) : SWIGV8_INTEGER_NEW(%numeric_cast(value,long)); -@@ -162,7 +162,7 @@ v8::Handle SWIG_From_dec(unsigned long long)(unsigned long long value - fragment="SWIG_LongLongAvailable") { - %#ifdef SWIG_LONG_LONG_AVAILABLE - SWIGINTERN --int SWIG_AsVal_dec(unsigned long long)(v8::Handle obj, unsigned long long *val) -+int SWIG_AsVal_dec(unsigned long long)(v8::Local obj, unsigned long long *val) - { - if(!obj->IsNumber()) { - return SWIG_TypeError; -@@ -185,7 +185,7 @@ int SWIG_AsVal_dec(unsigned long long)(v8::Handle obj, unsigned long - - %fragment(SWIG_From_frag(double),"header") { - SWIGINTERN --v8::Handle SWIG_From_dec(double) (double val) -+v8::Local SWIG_From_dec(double) (double val) - { - return SWIGV8_NUMBER_NEW(val); - } -@@ -193,7 +193,7 @@ v8::Handle SWIG_From_dec(double) (double val) - - %fragment(SWIG_AsVal_frag(double),"header") { - SWIGINTERN --int SWIG_AsVal_dec(double)(v8::Handle obj, double *val) -+int SWIG_AsVal_dec(double)(v8::Local obj, double *val) - { - if(!obj->IsNumber()) { - return SWIG_TypeError; -diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg -index 2452f4040d..db6299a84e 100644 ---- a/Lib/javascript/v8/javascriptrun.swg -+++ b/Lib/javascript/v8/javascriptrun.swg -@@ -10,7 +10,11 @@ - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031803) - #define SWIGV8_STRING_NEW2(cstr, len) v8::String::New(cstr, len) - #else -+#if (SWIG_V8_VERSION < 0x0706) - #define SWIGV8_STRING_NEW2(cstr, len) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), cstr, v8::String::kNormalString, len) -+#else -+#define SWIGV8_STRING_NEW2(cstr, len) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), cstr, v8::NewStringType::kNormal, len)).ToLocalChecked() -+#endif - #endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) -@@ -47,12 +51,18 @@ typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfo; - #define SWIGV8_THROW_EXCEPTION(err) v8::ThrowException(err) - #define SWIGV8_STRING_NEW(str) v8::String::New(str) - #define SWIGV8_SYMBOL_NEW(sym) v8::String::NewSymbol(sym) -+#elif (SWIG_V8_VERSION < 0x0706) -+#define SWIGV8_ADJUST_MEMORY(size) v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(size) -+#define SWIGV8_CURRENT_CONTEXT() v8::Isolate::GetCurrent()->GetCurrentContext() -+#define SWIGV8_THROW_EXCEPTION(err) v8::Isolate::GetCurrent()->ThrowException(err) -+#define SWIGV8_STRING_NEW(str) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str, v8::String::kNormalString) -+#define SWIGV8_SYMBOL_NEW(sym) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), sym, v8::String::kNormalString) - #else - #define SWIGV8_ADJUST_MEMORY(size) v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(size) - #define SWIGV8_CURRENT_CONTEXT() v8::Isolate::GetCurrent()->GetCurrentContext() - #define SWIGV8_THROW_EXCEPTION(err) v8::Isolate::GetCurrent()->ThrowException(err) --#define SWIGV8_STRING_NEW(str) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str) --#define SWIGV8_SYMBOL_NEW(sym) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), sym) -+#define SWIGV8_STRING_NEW(str) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str, v8::NewStringType::kNormal)).ToLocalChecked() -+#define SWIGV8_SYMBOL_NEW(sym) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), sym, v8::NewStringType::kNormal)).ToLocalChecked() - #endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032318) -@@ -107,7 +117,7 @@ typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfo; - #define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue() - #define SWIGV8_WRITE_UTF8(handle, buffer, len) (handle)->WriteUtf8(buffer, len) - #define SWIGV8_UTF8_LENGTH(handle) (handle)->Utf8Length() --#else -+#elif (SWIG_V8_VERSION < 0x0706) - #define SWIGV8_TO_OBJECT(handle) (handle)->ToObject(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked() - #define SWIGV8_TO_STRING(handle) (handle)->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked() - #define SWIGV8_NUMBER_VALUE(handle) (handle)->NumberValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() -@@ -115,6 +125,14 @@ typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfo; - #define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() - #define SWIGV8_WRITE_UTF8(handle, buffer, len) (handle)->WriteUtf8(v8::Isolate::GetCurrent(), buffer, len) - #define SWIGV8_UTF8_LENGTH(handle) (handle)->Utf8Length(v8::Isolate::GetCurrent()) -+#else -+#define SWIGV8_TO_OBJECT(handle) (handle)->ToObject(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked() -+#define SWIGV8_TO_STRING(handle) (handle)->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked() -+#define SWIGV8_NUMBER_VALUE(handle) (handle)->NumberValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() -+#define SWIGV8_INTEGER_VALUE(handle) (handle)->IntegerValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() -+#define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue(v8::Isolate::GetCurrent()) -+#define SWIGV8_WRITE_UTF8(handle, buffer, len) (handle)->WriteUtf8(v8::Isolate::GetCurrent(), buffer, len) -+#define SWIGV8_UTF8_LENGTH(handle) (handle)->Utf8Length(v8::Isolate::GetCurrent()) - #endif - - /* --------------------------------------------------------------------------- -@@ -163,7 +181,7 @@ public: - SWIGV8_THROW_EXCEPTION(err); - } - } -- v8::Handle err; -+ v8::Local err; - }; - - /* --------------------------------------------------------------------------- -@@ -228,13 +246,13 @@ public: - - SWIGRUNTIME v8::Persistent SWIGV8_SWIGTYPE_Proxy_class_templ; - --SWIGRUNTIME int SWIG_V8_ConvertInstancePtr(v8::Handle objRef, void **ptr, swig_type_info *info, int flags) { -+SWIGRUNTIME int SWIG_V8_ConvertInstancePtr(v8::Local objRef, void **ptr, swig_type_info *info, int flags) { - SWIGV8_HANDLESCOPE(); - - if(objRef->InternalFieldCount() < 1) return SWIG_ERROR; - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) -- v8::Handle cdataRef = objRef->GetInternalField(0); -+ v8::Local cdataRef = objRef->GetInternalField(0); - SWIGV8_Proxy *cdata = static_cast(v8::External::Unwrap(cdataRef)); - #else - SWIGV8_Proxy *cdata = static_cast(objRef->GetAlignedPointerFromInternalField(0)); -@@ -280,11 +298,11 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo valRef, void **ptr) { -+SWIGRUNTIME int SWIG_V8_GetInstancePtr(v8::Local valRef, void **ptr) { - if(!valRef->IsObject()) { - return SWIG_TypeError; - } -- v8::Handle objRef = SWIGV8_TO_OBJECT(valRef); -+ v8::Local objRef = SWIGV8_TO_OBJECT(valRef); - - if(objRef->InternalFieldCount() < 1) return SWIG_ERROR; - -@@ -304,7 +322,7 @@ SWIGRUNTIME int SWIG_V8_GetInstancePtr(v8::Handle valRef, void **ptr) - return SWIG_OK; - } - --SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle obj, void *ptr, swig_type_info *info, int flags) { -+SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Local obj, void *ptr, swig_type_info *info, int flags) { - SWIGV8_Proxy *cdata = new SWIGV8_Proxy(); - cdata->swigCObject = ptr; - cdata->swigCMemOwn = (flags & SWIG_POINTER_OWN) ? 1 : 0; -@@ -361,13 +379,15 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle obj, void *ptr, sw - cdata->handle.MarkIndependent(); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) - cdata->handle.MarkIndependent(v8::Isolate::GetCurrent()); --#else -+#elif (SWIG_V8_VERSION < 0x0706) - cdata->handle.MarkIndependent(); -+// Looks like future versions do not require that anymore: -+// https://monorail-prod.appspot.com/p/chromium/issues/detail?id=923361#c11 - #endif - - } - --SWIGRUNTIME int SWIG_V8_ConvertPtr(v8::Handle valRef, void **ptr, swig_type_info *info, int flags) { -+SWIGRUNTIME int SWIG_V8_ConvertPtr(v8::Local valRef, void **ptr, swig_type_info *info, int flags) { - SWIGV8_HANDLESCOPE(); - - /* special case: JavaScript null => C NULL pointer */ -@@ -378,14 +398,14 @@ SWIGRUNTIME int SWIG_V8_ConvertPtr(v8::Handle valRef, void **ptr, swi - if(!valRef->IsObject()) { - return SWIG_TypeError; - } -- v8::Handle objRef = SWIGV8_TO_OBJECT(valRef); -+ v8::Local objRef = SWIGV8_TO_OBJECT(valRef); - return SWIG_V8_ConvertInstancePtr(objRef, ptr, info, flags); - } - --SWIGRUNTIME v8::Handle SWIG_V8_NewPointerObj(void *ptr, swig_type_info *info, int flags) { -+SWIGRUNTIME v8::Local SWIG_V8_NewPointerObj(void *ptr, swig_type_info *info, int flags) { - SWIGV8_HANDLESCOPE_ESC(); - -- v8::Handle class_templ; -+ v8::Local class_templ; - - if (ptr == NULL) { - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) -@@ -412,8 +432,11 @@ SWIGRUNTIME v8::Handle SWIG_V8_NewPointerObj(void *ptr, swig_type_inf - } - #endif - --// v8::Handle result = class_templ->InstanceTemplate()->NewInstance(); -+#if (SWIG_V8_VERSION < 0x0705) - v8::Local result = class_templ->InstanceTemplate()->NewInstance(); -+#else -+ v8::Local result = class_templ->InstanceTemplate()->NewInstance(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked(); -+#endif - SWIGV8_SetPrivateData(result, ptr, info, flags); - - SWIGV8_ESCAPE(result); -@@ -433,7 +456,7 @@ SWIGRUNTIME v8::Handle SWIG_V8_NewPointerObj(void *ptr, swig_type_inf - SWIGRUNTIME SwigV8ReturnValue _SWIGV8_wrap_equals(const SwigV8Arguments &args) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle jsresult; -+ v8::Local jsresult; - void *arg1 = (void *) 0 ; - void *arg2 = (void *) 0 ; - bool result; -@@ -463,7 +486,7 @@ fail: - SWIGRUNTIME SwigV8ReturnValue _wrap_getCPtr(const SwigV8Arguments &args) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle jsresult; -+ v8::Local jsresult; - void *arg1 = (void *) 0 ; - long result; - int res1; -@@ -502,10 +525,10 @@ public: - }; - - SWIGRUNTIMEINLINE --int SwigV8Packed_Check(v8::Handle valRef) { -+int SwigV8Packed_Check(v8::Local valRef) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle objRef = SWIGV8_TO_OBJECT(valRef); -+ v8::Local objRef = SWIGV8_TO_OBJECT(valRef); - if(objRef->InternalFieldCount() < 1) return false; - #if (V8_MAJOR_VERSION-0) < 5 - v8::Handle flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__")); -@@ -519,13 +542,13 @@ int SwigV8Packed_Check(v8::Handle valRef) { - } - - SWIGRUNTIME --swig_type_info *SwigV8Packed_UnpackData(v8::Handle valRef, void *ptr, size_t size) { -+swig_type_info *SwigV8Packed_UnpackData(v8::Local valRef, void *ptr, size_t size) { - if (SwigV8Packed_Check(valRef)) { - SWIGV8_HANDLESCOPE(); - - SwigV8PackedData *sobj; - -- v8::Handle objRef = SWIGV8_TO_OBJECT(valRef); -+ v8::Local objRef = SWIGV8_TO_OBJECT(valRef); - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) - v8::Handle cdataRef = objRef->GetInternalField(0); -@@ -542,7 +565,7 @@ swig_type_info *SwigV8Packed_UnpackData(v8::Handle valRef, void *ptr, - } - - SWIGRUNTIME --int SWIGV8_ConvertPacked(v8::Handle valRef, void *ptr, size_t sz, swig_type_info *ty) { -+int SWIGV8_ConvertPacked(v8::Local valRef, void *ptr, size_t sz, swig_type_info *ty) { - swig_type_info *to = SwigV8Packed_UnpackData(valRef, ptr, sz); - if (!to) return SWIG_ERROR; - if (ty) { -@@ -590,7 +613,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo SWIGV8_NewPackedObj(void *data, size_t size, swig_type_info *type) { -+v8::Local SWIGV8_NewPackedObj(void *data, size_t size, swig_type_info *type) { - SWIGV8_HANDLESCOPE_ESC(); - - SwigV8PackedData *cdata = new SwigV8PackedData(data, size, type); -@@ -636,8 +659,10 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf - cdata->handle.MarkIndependent(); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) - cdata->handle.MarkIndependent(v8::Isolate::GetCurrent()); --#else -+#elif (SWIG_V8_VERSION < 0x0706) - cdata->handle.MarkIndependent(); -+// Looks like future versions do not require that anymore: -+// https://monorail-prod.appspot.com/p/chromium/issues/detail?id=923361#c11 - #endif - - SWIGV8_ESCAPE(obj); -@@ -657,7 +682,7 @@ SWIGRUNTIME - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) - v8::Handle SWIGV8_AppendOutput(v8::Handle result, v8::Handle obj) { - #else --v8::Handle SWIGV8_AppendOutput(v8::Local result, v8::Handle obj) { -+v8::Local SWIGV8_AppendOutput(v8::Local result, v8::Local obj) { - #endif - SWIGV8_HANDLESCOPE_ESC(); - -@@ -669,7 +694,12 @@ v8::Handle SWIGV8_AppendOutput(v8::Local result, v8::Handl - #else - v8::Local arr = v8::Local::Cast(result); - #endif -+ -+#if (SWIG_V8_VERSION < 0x0706) - arr->Set(arr->Length(), obj); -+#else -+ arr->Set(SWIGV8_CURRENT_CONTEXT(), arr->Length(), obj); -+#endif - - SWIGV8_ESCAPE(arr); - } -diff --git a/Lib/javascript/v8/javascriptruntime.swg b/Lib/javascript/v8/javascriptruntime.swg -index c78e04efbb..773014f2a5 100644 ---- a/Lib/javascript/v8/javascriptruntime.swg -+++ b/Lib/javascript/v8/javascriptruntime.swg -@@ -56,6 +56,11 @@ - %insert(runtime) %{ - #include - -+#if defined(V8_MAJOR_VERSION) && defined(V8_MINOR_VERSION) -+#undef SWIG_V8_VERSION -+#define SWIG_V8_VERSION (V8_MAJOR_VERSION * 256 + V8_MINOR_VERSION) -+#endif -+ - #include - #include - #include -diff --git a/Lib/javascript/v8/javascriptstrings.swg b/Lib/javascript/v8/javascriptstrings.swg -index e767a6d662..61a937fa52 100644 ---- a/Lib/javascript/v8/javascriptstrings.swg -+++ b/Lib/javascript/v8/javascriptstrings.swg -@@ -4,10 +4,10 @@ - * ------------------------------------------------------------ */ - %fragment("SWIG_AsCharPtrAndSize", "header", fragment="SWIG_pchar_descriptor") { - SWIGINTERN int --SWIG_AsCharPtrAndSize(v8::Handle valRef, char** cptr, size_t* psize, int *alloc) -+SWIG_AsCharPtrAndSize(v8::Local valRef, char** cptr, size_t* psize, int *alloc) - { - if(valRef->IsString()) { -- v8::Handle js_str = SWIGV8_TO_STRING(valRef); -+ v8::Local js_str = SWIGV8_TO_STRING(valRef); - - size_t len = SWIGV8_UTF8_LENGTH(js_str) + 1; - char* cstr = new char[len]; -@@ -20,7 +20,7 @@ SWIG_AsCharPtrAndSize(v8::Handle valRef, char** cptr, size_t* psize, - return SWIG_OK; - } else { - if(valRef->IsObject()) { -- v8::Handle obj = SWIGV8_TO_OBJECT(valRef); -+ v8::Local obj = SWIGV8_TO_OBJECT(valRef); - // try if the object is a wrapped char[] - swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); - if (pchar_descriptor) { -@@ -41,7 +41,7 @@ SWIG_AsCharPtrAndSize(v8::Handle valRef, char** cptr, size_t* psize, - } - - %fragment("SWIG_FromCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { --SWIGINTERNINLINE v8::Handle -+SWIGINTERNINLINE v8::Local - SWIG_FromCharPtrAndSize(const char* carray, size_t size) - { - if (carray) { -@@ -49,7 +49,7 @@ SWIG_FromCharPtrAndSize(const char* carray, size_t size) - // TODO: handle extra long strings - return SWIGV8_UNDEFINED(); - } else { -- v8::Handle js_str = SWIGV8_STRING_NEW2(carray, size); -+ v8::Local js_str = SWIGV8_STRING_NEW2(carray, size); - return js_str; - } - } else { -diff --git a/Lib/javascript/v8/javascripttypemaps.swg b/Lib/javascript/v8/javascripttypemaps.swg -index 4601698e03..fbe7849cd2 100644 ---- a/Lib/javascript/v8/javascripttypemaps.swg -+++ b/Lib/javascript/v8/javascripttypemaps.swg -@@ -25,7 +25,7 @@ - - /* Javascript types */ - --#define SWIG_Object v8::Handle -+#define SWIG_Object v8::Local - #define VOID_Object SWIGV8_UNDEFINED() - - /* Overload of the output/constant/exception/dirout handling */ -diff --git a/Source/Modules/javascript.cxx b/Source/Modules/javascript.cxx -index d2b33b1b42..450ebbd497 100644 ---- a/Source/Modules/javascript.cxx -+++ b/Source/Modules/javascript.cxx -@@ -548,7 +548,7 @@ void JAVASCRIPT::main(int argc, char *argv[]) { - } - Swig_mark_arg(i); - engine = JSEmitter::JavascriptCore; -- } else if (strcmp(argv[i], "-node") == 0) { -+ } else if ((strcmp(argv[i], "-node") == 0) || (strcmp(argv[i], "-electron") == 0)) { - if (engine != -1) { - Printf(stderr, ERR_MSG_ONLY_ONE_ENGINE_PLEASE); - SWIG_exit(-1); -@@ -594,7 +594,7 @@ void JAVASCRIPT::main(int argc, char *argv[]) { - } - default: - { -- Printf(stderr, "SWIG Javascript: Unknown engine. Please specify one of '-jsc', '-v8' or '-node'.\n"); -+ Printf(stderr, "SWIG Javascript: Unknown engine. Please specify one of '-jsc', '-v8' or '-node/-electron'.\n"); - SWIG_exit(-1); - break; - } -diff --git a/Tools/javascript/v8_shell.cxx b/Tools/javascript/v8_shell.cxx -index 5001bc25a6..8067247a41 100644 ---- a/Tools/javascript/v8_shell.cxx -+++ b/Tools/javascript/v8_shell.cxx -@@ -9,7 +9,7 @@ - - #include "js_shell.h" - --typedef int (*V8ExtensionInitializer) (v8::Handle module); -+typedef int (*V8ExtensionInitializer) (v8::Local module); - - // Note: these typedefs and defines are used to deal with v8 API changes since version 3.19.00 - -@@ -87,7 +87,7 @@ class V8Shell: public JSShell { - - private: - -- v8::Handle Import(const std::string &moduleName); -+ v8::Local Import(const std::string &moduleName); - - SwigV8Context CreateShellContext(); - -@@ -135,7 +135,7 @@ bool V8Shell::RunScript(const std::string &scriptPath) { - - // Store a pointer to this shell for later use - -- v8::Handle global = context->Global(); -+ v8::Local global = context->Global(); - v8::Local __shell__ = SWIGV8_EXTERNAL_NEW((void*) (long) this); - - global->SetHiddenValue(SWIGV8_STRING_NEW("__shell__"), __shell__); -@@ -215,7 +215,7 @@ bool V8Shell::ExecuteScript(const std::string &source, const std::string &name) - SWIGV8_HANDLESCOPE(); - - v8::TryCatch try_catch; -- v8::Handle script = v8::Script::Compile(SWIGV8_STRING_NEW(source.c_str()), SWIGV8_STRING_NEW(name.c_str())); -+ v8::Local script = v8::Script::Compile(SWIGV8_STRING_NEW(source.c_str()), SWIGV8_STRING_NEW(name.c_str())); - - // Stop if script is empty - if (script.IsEmpty()) { -@@ -224,7 +224,7 @@ bool V8Shell::ExecuteScript(const std::string &source, const std::string &name) - return false; - } - -- v8::Handle result = script->Run(); -+ v8::Local result = script->Run(); - - // Print errors that happened during execution. - if (try_catch.HasCaught()) { -@@ -241,7 +241,7 @@ bool V8Shell::DisposeEngine() { - - SwigV8Context V8Shell::CreateShellContext() { - // Create a template for the global object. -- v8::Handle global = v8::ObjectTemplate::New(); -+ v8::Local global = v8::ObjectTemplate::New(); - - // Bind global functions - global->Set(SWIGV8_STRING_NEW("print"), SWIGV8_FUNCTEMPLATE_NEW(V8Shell::Print)); -@@ -258,7 +258,7 @@ SwigV8Context V8Shell::CreateShellContext() { - #endif - } - --v8::Handle V8Shell::Import(const std::string &module_path) -+v8::Local V8Shell::Import(const std::string &module_path) - { - SWIGV8_HANDLESCOPE_ESC(); - -@@ -319,7 +319,7 @@ SwigV8ReturnValue V8Shell::Require(const SwigV8Arguments &args) { - v8::Local __shell__ = v8::Local::Cast(hidden); - V8Shell *_this = (V8Shell *) (long) __shell__->Value(); - -- v8::Handle module = _this->Import(moduleName); -+ v8::Local module = _this->Import(moduleName); - - SWIGV8_RETURN(module); - } -@@ -345,7 +345,7 @@ void V8Shell::ReportException(v8::TryCatch *try_catch) { - - v8::String::Utf8Value exception(try_catch->Exception()); - const char *exception_string = V8Shell::ToCString(exception); -- v8::Handle message = try_catch->Message(); -+ v8::Local message = try_catch->Message(); - if (message.IsEmpty()) { - // V8 didn't provide any extra information about this error; just - // print the exception. -diff --git a/Tools/testflags.py b/Tools/testflags.py -index f3d216b59a..64528d6925 100755 ---- a/Tools/testflags.py -+++ b/Tools/testflags.py -@@ -41,7 +41,10 @@ def get_cxxflags(language, std, compiler): - "go":"-Werror " + cxx_common, - "guile":"-Werror " + cxx_common, - "java":"-Werror " + cxx_common, -- "javascript":"-Werror " + cxx_common + " -Wno-error=unused-function", # Until overload_rename is fixed for node -+ "javascript":"-Werror " + cxx_common + -+ " -Wno-error=unused-function" + # Until overload_rename is fixed for node -+ " -Wno-error=unused-result -Wno-unused-result", # Until proper update of latest NodeJS / V8 -+ # " -Wno-error=cast-function-type" + Only in GCC 8.x+ - "lua":"-Werror " + cxx_common, - "mzscheme":"-Werror " + cxx_common, - "ocaml":"-Werror " + cxx_common, -diff --git a/Tools/travis-linux-install.sh b/Tools/travis-linux-install.sh -index c8347d27a4..04683572af 100755 ---- a/Tools/travis-linux-install.sh -+++ b/Tools/travis-linux-install.sh -@@ -33,7 +33,7 @@ case "$SWIGLANG" in - ;; - "javascript") - case "$ENGINE" in -- "node") -+ "node"|"electron") - travis_retry wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.10/install.sh | bash - export NVM_DIR="$HOME/.nvm" - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" -@@ -45,6 +45,11 @@ case "$SWIGLANG" in - else - travis_retry npm install -g node-gyp - fi -+ -+ if [ ! -z "$ELECTRON_VER" ] ; then -+ travis_retry npm install -g electron@$ELECTRON_VER -+ fi -+ - ;; - "jsc") - travis_retry sudo apt-get install -qq libwebkitgtk-dev - diff --git a/swig-python-Python-3.14-support.patch b/swig-python-Python-3.14-support.patch new file mode 100644 index 0000000..ceee305 --- /dev/null +++ b/swig-python-Python-3.14-support.patch @@ -0,0 +1,153 @@ +From 50e1cc8bc0d090164762ec166439f8b0f3855308 Mon Sep 17 00:00:00 2001 +From: Julien Schueller +Date: Thu, 10 Apr 2025 17:22:15 +0200 +Subject: [PATCH 1/3] Python: Handle __package__ removal + +Closes #2967 +--- + Doc/Manual/Python.html | 6 +++--- + Source/Modules/python.cxx | 8 +++++--- + 2 files changed, 8 insertions(+), 6 deletions(-) + +diff --git a/Doc/Manual/Python.html b/Doc/Manual/Python.html +index 23587e5dbcc..01fc449a68a 100644 +--- a/Doc/Manual/Python.html ++++ b/Doc/Manual/Python.html +@@ -6552,7 +6552,7 @@

33.11.6.1 Both modules + +

+ In this configuration, the pure Python module, foo.py, tries to load the C/C++ module, _foo, from the same package foo.py is +-located in. The package name is determined from the __package__ ++located in. The package name is determined from the __spec__.parent (or __package__ before Python 3.4) + attribute if available, see PEP 366. Otherwise it is derived from the __name__ + attribute given to foo.py by the Python loader that imported foo.py. + The interface file for this configuration would contain: +@@ -6675,7 +6675,7 @@

33.11.6.4 More on customizing the modu + +
+
+-if __package__ or '.' in __name__:
++if getattr(__spec__, "parent", None) or '.' in __name__:
+     from . import _foo
+ else:
+     import _foo
+@@ -6760,7 +6760,7 @@ 

33.11.6.4 More on customizing the modu + +
+
+-if __package__ or '.' in __name__:
++if getattr(__spec__, "parent", None) or '.' in __name__:
+     from ._foo import *
+ else:
+     from _foo import *
+diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx
+index 86daf131c8b..a71fc3cdb25 100644
+--- a/Source/Modules/python.cxx
++++ b/Source/Modules/python.cxx
+@@ -703,20 +703,22 @@ class PYTHON:public Language {
+ 	 * onwards (implicit relative imports raised a DeprecationWarning in 2.6,
+ 	 * and fail in 2.7 onwards).
+ 	 *
+-	 * First check for __package__ which is available from 2.6 onwards, see PEP366.
++	 * First check for __spec__.parent which is available from 3.4 onwards,
++	 * see https://docs.python.org/3/reference/import.html#spec. If not,
++	 * check for __package__, which was set before 3.14.
+ 	 * Next try determine the shadow wrapper's package based on the __name__ it
+ 	 * was given by the importer that loaded it.
+ 	 * If the module is in a package, load the low-level C/C++ module from the
+ 	 * same package, otherwise load it as a global module.
+ 	 */
+         Printv(default_import_code, "# Import the low-level C/C++ module\n", NULL);
+-        Printv(default_import_code, "if __package__ or \".\" in __name__:\n", NULL);
++        Printv(default_import_code, "if getattr(globals().get(\"__spec__\"), \"parent\", None) or globals().get(\"__package__\") or \".\" in __name__:\n", NULL);
+         Printv(default_import_code, tab4, "from . import ", module, "\n", NULL);
+         Printv(default_import_code, "else:\n", NULL);
+         Printv(default_import_code, tab4, "import ", module, "\n", NULL);
+       } else {
+         Printv(default_import_code, "# Pull in all the attributes from the low-level C/C++ module\n", NULL);
+-        Printv(default_import_code, "if __package__ or \".\" in __name__:\n", NULL);
++        Printv(default_import_code, "if getattr(globals().get(\"__spec__\"), \"parent\", None) or globals().get(\"__package__\") or \".\" in __name__:\n", NULL);
+         Printv(default_import_code, tab4, "from .", module, " import *\n", NULL);
+         Printv(default_import_code, "else:\n", NULL);
+         Printv(default_import_code, tab4, "from ", module, " import *\n", NULL);
+
+From 3bfdf13c602f877860a9949ba751a5b5a9ba70aa Mon Sep 17 00:00:00 2001
+From: Julien Schueller 
+Date: Thu, 10 Apr 2025 18:35:25 +0200
+Subject: [PATCH 2/3] Python: Add ht_token
+
+---
+ Source/Modules/python.cxx | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx
+index a71fc3cdb25..3070a94face 100644
+--- a/Source/Modules/python.cxx
++++ b/Source/Modules/python.cxx
+@@ -4374,6 +4374,11 @@ class PYTHON:public Language {
+     Printv(f, "#if PY_VERSION_HEX >= 0x030b0000\n", NIL);
+     printSlot(f, getSlot(n, "feature:python:_ht_tpname"), "_ht_tpname", "char *");
+ 
++    // void *ht_token;
++    Printv(f, "#if PY_VERSION_HEX >= 0x030e0000\n", NIL);
++    printSlot(f, getSlot(n, "feature:python:ht_token"), "ht_token", "void *");
++    Printv(f, "#endif\n", NIL);
++
+     // struct _specialization_cache _spec_cache;
+     Printf(f, "  {\n");
+     printSlot(f, getSlot(n, "feature:python:getitem"), "getitem", "PyObject *");
+
+From 55237efa7219f65a04e0ffc69a81c574b5f5e162 Mon Sep 17 00:00:00 2001
+From: Julien Schueller 
+Date: Thu, 10 Apr 2025 17:47:59 +0200
+Subject: [PATCH 3/3] Python: Amend annotations test
+
+---
+ .../python_annotations_variable_c_runme.py    | 24 +++++++++++++------
+ 1 file changed, 17 insertions(+), 7 deletions(-)
+
+diff --git a/Examples/test-suite/python/python_annotations_variable_c_runme.py b/Examples/test-suite/python/python_annotations_variable_c_runme.py
+index 153852d05e6..d1f359bbbd0 100644
+--- a/Examples/test-suite/python/python_annotations_variable_c_runme.py
++++ b/Examples/test-suite/python/python_annotations_variable_c_runme.py
+@@ -1,4 +1,17 @@
+ import sys
++import inspect
++
++
++def get_annotations(cls):
++    # Python >=3.14 removed the __annotations__ attribute
++    # retrieve it via inspect (see also annotationlib)
++    if hasattr(inspect, "get_annotations"):
++        # Python >=3.10
++        return inspect.get_annotations(cls)
++    else:
++        # Python <3.10
++        return getattr(cls, "__annotations__", {})
++
+ 
+ # Variable annotations for properties is only supported in python-3.6 and later (PEP 526)
+ if sys.version_info[0:2] >= (3, 6):
+@@ -8,17 +21,14 @@
+     annotations_supported = not(is_python_builtin() or is_python_fastproxy())
+ 
+     if annotations_supported:
+-        ts = TemplateShort()
+-        anno = ts.__annotations__
++        anno = get_annotations(TemplateShort)
+         if anno != {'member_variable': 'int'}:
+             raise RuntimeError("annotations mismatch: {}".format(anno))
+ 
+-        ts = StructWithVar()
+-        anno = ts.__annotations__
++        anno = get_annotations(StructWithVar)
+         if anno != {'member_variable': 'int'}:
+             raise RuntimeError("annotations mismatch: {}".format(anno))
+ 
+-        ts = StructWithVarNotAnnotated()
+-        if getattr(ts, "__annotations__", None) != None:
+-            anno = ts.__annotations__
++        anno = get_annotations(StructWithVarNotAnnotated)
++        if anno != {}:
+             raise RuntimeError("annotations mismatch: {}".format(anno))
+
diff --git a/swig.spec b/swig.spec
index cd1092c..0b7b0f9 100644
--- a/swig.spec
+++ b/swig.spec
@@ -3,6 +3,7 @@
 
 %if %{without testsuite}
 %global tcl 0
+%global guile 0
 %global lualang 0
 %global perllang 0
 %global phplang 0
@@ -12,51 +13,65 @@
 %global octave 0
 %global Rlang 0
 %global javalang 0
+%global ocamllang 0
 %endif
 
 %{!?tcl:%global tcl 1}
-%{!?guile:%global guile 0}
 %{!?lualang:%global lualang 1}
 %{!?perllang:%global perllang 1}
-%{!?phplang:%global phplang 1}
-# Disable Ruby test failed with swig 4.0.0 on s390
-%ifarch s390x
-%{!?rubylang:%global rubylang 0}
-%else
 %{!?rubylang:%global rubylang 1}
-%endif
 %{!?python3lang:%global python3lang 1}
 
+# PHP drop support for 32-bit builds since Fedora 41.
+%if 0%{?fedora} >= 41 || 0%{?rhel} >= 11
+%ifarch %{ix86}
+%global phplang 0
+%endif
+%endif
+%{!?phplang:%global phplang 1}
+
+# OCaml packages not built on i686 since OCaml 5 / Fedora 39.
+%ifarch %{ix86}
+%{!?ocamllang:%global ocamllang 0}
+%else
+%{!?ocamllang:%global ocamllang 1}
+%endif
+
 %if 0%{?rhel}
 %{!?golang:%global golang 0}
+%{!?guile:%global guile 0}
 %{!?octave:%global octave 0}
 %{!?Rlang:%global Rlang 0}
 %bcond_with build_ccache_swig
 %else
+%{!?guile:%global guile 1}
 %{!?octave:%global octave 1}
-%{!?Rlang:%global Rlang 1}
+# R-core requires tcl < 9.0.0
+%{!?Rlang:%global Rlang 0}
 %bcond_without build_ccache_swig
 %endif
-%ifarch aarch64 %{arm} %{mips} ppc %{power64} s390 s390x
+
+%ifarch %{ix86}
 %{!?javalang:%global javalang 0}
 %else
+# Temporary disable java tests, because they doesn't pass with java-21-openjdk
+# https://github.com/swig/swig/issues/2767
 %{!?javalang:%global javalang 1}
 %endif
 
-# Do not run Go tests, they failed with 4.0.0 on ppc64le
-%ifarch %{ix86} x86_64 %{arm} aarch64
-# Tests do not work with Go 1.15
-%{!?golang:%global golang 0}
+# Do not run Go tests, they failed with 4.0.0 on ppc64le, s390
+%ifarch x86_64 %{arm} aarch64
+%{!?golang:%global golang 1}
 %else
 %{!?golang:%global golang 0}
 %endif
 
 Summary: Connects C/C++/Objective C to some high-level programming languages
 Name:    swig
-Version: 4.0.2
-Release: 4%{?dist}
-License: GPLv3+ and BSD
-URL:     http://swig.sourceforge.net/
+Version: 4.4.1
+Release: 1%{?dist}
+License: GPL-3.0-or-later AND BSD-3-Clause
+URL:     https://www.swig.org/
 Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz
 # Define the part of man page sections
 Source1: description.h2m
@@ -66,15 +81,15 @@ Source3: ccache-swig.sh
 Source4: ccache-swig.csh
 %endif
 
-# https://github.com/swig/swig/pull/1702
-Patch0: swig-Upgrade-to-support-newer-NodeJS.patch
-
+BuildRequires: coreutils
+BuildRequires: findutils
 BuildRequires: make
-BuildRequires: perl-interpreter, pcre-devel
+BuildRequires: perl-interpreter, pcre2-devel
 BuildRequires: python%{python3_pkgversion}-devel
 BuildRequires: autoconf, automake, gawk, dos2unix
 BuildRequires: gcc-c++
 BuildRequires: help2man
+BuildRequires: sed
 BuildRequires: perl-devel
 BuildRequires: perl(base)
 BuildRequires: perl(Config)
@@ -90,7 +105,7 @@ BuildRequires: boost-devel
 # Need when Source/CParse/parser.y is patched
 BuildRequires: bison
 %if %{tcl}
-BuildRequires: tcl-devel
+BuildRequires: tcl-devel >= 9.0.0
 %endif
 %if %{guile}
 BuildRequires: guile-devel
@@ -101,7 +116,9 @@ BuildRequires: octave-devel
 %if %{golang}
 BuildRequires: golang
 BuildRequires: golang-bin
+%ifnarch s390x
 BuildRequires: golang-shared
+%endif
 BuildRequires: golang-src
 %endif
 %if %{lualang}
@@ -119,6 +136,10 @@ BuildRequires: java, java-devel
 %if %{phplang}
 BuildRequires: php, php-devel
 %endif
+%if %{ocamllang}
+BuildRequires: ocaml
+BuildRequires: ocaml-findlib
+%endif
 
 %description
 Simplified Wrapper and Interface Generator (SWIG) is a software
@@ -136,7 +157,7 @@ testing and prototyping C/C++ software.
 %if %{with build_ccache_swig}
 %package -n ccache-swig
 Summary:   Fast compiler cache
-License:   GPLv2+
+License:   GPL-2.0-or-later
 Requires:  swig
 Conflicts: swig < 3.0.8-2
 
@@ -148,7 +169,7 @@ being done again. ccache-swig is ccache plus support for SWIG.
 
 %package doc
 Summary:   Documentation files for SWIG
-License:   BSD
+License:   BSD-3-Clause
 BuildArch: noarch
 
 %description doc
@@ -156,7 +177,7 @@ This package contains documentation for SWIG and useful examples
 
 %package gdb
 Summary:   Commands for easier debugging of SWIG
-License:   BSD
+License:   BSD-3-Clause
 Requires:  swig
 
 %description gdb
@@ -178,13 +199,14 @@ done
 # Disable maximum compile warnings when octave is supported, because Octave
 # code produces lots of the warnings demanded by strict ISO C and ISO C++.
 # It causes that log had more then 600M.
-# AC_CHECK_PROGS requires just the name, so use for configure
-#   --with-python3=python3 --with-2to3=2to3
 %configure \
+%if %{ocamllang}
+  --with-ocaml \
+%else
   --without-ocaml \
+%endif
 %if %{python3lang}
   --with-python3=python3 \
-  --with-2to3=2to3 \
 %else
   --without-python3 \
 %endif
@@ -208,6 +230,9 @@ done
 %if ! %{golang}
   --without-go \
 %endif
+%if ! %{guile}
+  --without-guile \
+%endif
 %if %{octave}
   --with-octave=%{_bindir}/octave \
   --without-maximum-compile-warnings \
@@ -338,6 +363,170 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb
 %{_datadir}/%{name}/gdb
 
 %changelog
+* Mon Dec 08 2025 Jitka Plesnikova  - 4.4.1-1
+- 4.4.1 bump (rhbz#2419819, rhbz#2415440)
+
+* Tue Oct 21 2025 Jitka Plesnikova  - 4.4.0-1
+- 4.4.0 bump (rhbz#2405182)
+
+* Mon Oct 13 2025 Richard W.M. Jones  - 4.3.1-6
+- OCaml 5.4.0 rebuild
+
+* Thu Aug 07 2025 Orion Poplawski  - 4.3.1-5
+- Rebuild for Octave 10.2
+
+* Thu Jul 31 2025 Jitka Plesnikova  - 4.3.1-4
+- Fix Python DeprecationWarning
+
+* Fri Jul 25 2025 Fedora Release Engineering  - 4.3.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
+
+* Wed Jun 25 2025 Yaakov Selkowitz  - 4.3.1-2
+- Add Python 3.14 support
+
+* Wed Apr 16 2025 Jitka Plesnikova  - 4.3.1-1
+- 4.3.1 bump (rhbz#2360009)
+
+* Mon Feb 17 2025 Jitka Plesnikova  - 4.3.0-5
+- Disable R tests, because they need tcl < 9
+
+* Sun Jan 19 2025 Fedora Release Engineering  - 4.3.0-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
+
+* Thu Nov 14 2024 Orion Poplawski  - 4.3.0-3
+- Rebuild for octave 9.2
+
+* Tue Oct 29 2024 Jitka Plesnikova  - 4.3.0-2
+- Fix precedence of casts
+
+* Mon Oct 21 2024 Jitka Plesnikova  - 4.3.0-1
+- 4.3.0 bump (rhbz#2320047)
+
+* Sat Jul 20 2024 Fedora Release Engineering  - 4.2.1-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
+
+* Sun Jun 23 2024 Yaakov Selkowitz  - 4.2.1-7
+- Rebuild for Python 3.13
+
+* Wed Jun 19 2024 Richard W.M. Jones  - 4.2.1-6
+- OCaml 5.2.0 ppc64le fix
+
+* Wed May 29 2024 Richard W.M. Jones  - 4.2.1-5
+- OCaml 5.2.0 for Fedora 41
+
+* Mon Apr 29 2024 Jitka Plesnikova  - 4.2.1-4
+- Fix gcc's -Wformat-security warning in R Raise function (rhbz#2277767)
+
+* Fri Apr 12 2024 Remi Collet  - 4.2.1-3
+- disable PHP support on 32-bit
+  https://fedoraproject.org/wiki/Changes/php_no_32_bit
+
+* Tue Feb 27 2024 Jiri Vanek  - 4.2.1-2
+- Rebuilt for java-21-openjdk as system jdk
+- Temporary disable java tests (rhbz#2266693)
+
+* Mon Feb 26 2024 Jitka Plesnikova  - 4.2.1-1
+- 4.2.1 bump (rhbz#2265786)
+
+* Tue Jan 23 2024 Jitka Plesnikova  - 4.2.0-1
+- 4.2.0 bump
+
+* Mon Dec 18 2023 Richard W.M. Jones  - 4.1.1-15
+- OCaml 5.1.1 + s390x code gen fix for Fedora 40
+
+* Tue Dec 12 2023 Richard W.M. Jones  - 4.1.1-14
+- OCaml 5.1.1 rebuild for Fedora 40
+
+* Thu Dec 07 2023 Jitka Plesnikova  - 4.1.1-13
+- Fix PHP director_classes testcase failures on x86
+
+* Fri Oct 20 2023 Jitka Plesnikova  - 4.1.1-12
+- Stop using Python's 2to3
+
+* Wed Oct 11 2023 Jitka Plesnikova  - 4.1.1-11
+- Fix PHP test, it fails with PHP 8.3
+
+* Thu Oct 05 2023 Richard W.M. Jones  - 4.1.1-10
+- OCaml 5.1 rebuild for Fedora 40
+
+* Sat Jul 22 2023 Fedora Release Engineering  - 4.1.1-9
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
+
+* Wed Jul 12 2023 Jerry James  - 4.1.1-8
+- Add patch for python 3.12
+
+* Tue Jul 11 2023 Richard W.M. Jones  - 4.1.1-8
+- OCaml 5.0 rebuild for Fedora 39
+
+* Tue Jun 20 2023 Jerry James  - 4.1.1-7
+- Enable OCaml support
+- Add patch for OCaml 5.0.0
+
+* Sat Apr 08 2023 Orion Poplawski  - 4.1.1-6
+- Rebuild with octave 8.1.0
+
+* Thu Mar 16 2023 Orion Poplawski  - 4.1.1-5
+- Add patch to support octave 8.1
+
+* Thu Feb 02 2023 Jitka Plesnikova  - 4.1.1-4
+- Disable PHP test on i686
+
+* Sat Jan 21 2023 Fedora Release Engineering  - 4.1.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
+
+* Thu Jan 12 2023 Florian Weimer  - 4.1.1-2
+- Port configure script to C99
+
+* Thu Dec 01 2022 Jitka Plesnikova  - 4.1.1-1
+- Update to 4.1.1
+
+* Tue Oct 25 2022 Jitka Plesnikova  - 4.1.0-1
+- Update to 4.1.0
+
+* Thu Jul 21 2022 Maxwell G  - 4.0.2-18
+- Exclude golang extension from i686
+
+* Tue Jul 19 2022 Maxwell G  - 4.0.2-17
+- Rebuild for CVE-2022-{1705,32148,30631,30633,28131,30635,30632,30630,1962} in
+  golang
+
+* Sat Jun 18 2022 Robert-André Mauchin  - 4.0.2-16
+- Rebuilt for CVE-2022-1996, CVE-2022-24675, CVE-2022-28327, CVE-2022-27191,
+  CVE-2022-29526, CVE-2022-30629
+
+* Wed Jun 01 2022 Orion Poplawski  - 4.0.2-15
+- Rebuild for octave 7.1
+
+* Thu Feb 24 2022 Jitka Plesnikova  - 4.0.2-14
+- Disable Java tests
+
+* Sat Jan 22 2022 Jitka Plesnikova  - 4.0.2-13
+- Fix tests against GCC12, enable Guile tests
+
+* Sat Jan 22 2022 Fedora Release Engineering  - 4.0.2-12
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
+* Wed Nov 24 2021 Jitka Plesnikova  - 4.0.2-11
+- Disable PHP test, it fails with PHP 8.1
+
+* Thu Oct 07 2021 Jitka Plesnikova  - 4.0.2-10
+- Enable Python tests
+
+* Tue Aug 10 2021 Orion Poplawski  - 4.0.2-9
+- Rebuild for octave 6.3.0
+
+* Fri Jul 23 2021 Fedora Release Engineering  - 4.0.2-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Thu Jul 15 2021 Jitka Plesnikova  - 4.0.2-7
+- Disable Python tests, they fail with 3.10.0~b2
+
+* Mon May 31 2021 Orion Poplawski  - 4.0.2-6
+- Add patch for octave 6 support (bz#1919617)
+
+* Fri Mar 05 2021 Jitka Plesnikova  - 4.0.2-5
+- Backport support of PHP8 from upstream
+
 * Wed Jan 27 2021 Fedora Release Engineering  - 4.0.2-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild