diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 66308ef7..25d186b6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,12 +52,12 @@ jobs: variant: release cargo: cargo - - os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }} + - os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-24.04-xl' || 'ubuntu-24.04' }} target: x86_64-unknown-linux-gnu variant: debug cargo: cargo - - os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }} + - os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-24.04-xl' || 'ubuntu-24.04' }} target: x86_64-unknown-linux-gnu variant: release cargo: cargo @@ -67,12 +67,12 @@ jobs: variant: release # Note: we do not support windows debug builds. cargo: cargo - - os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }} + - os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-24.04-xl' || 'ubuntu-24.04' }} target: aarch64-unknown-linux-gnu variant: debug cargo: cargo - - os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }} + - os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-24.04-xl' || 'ubuntu-24.04' }} target: aarch64-unknown-linux-gnu variant: release cargo: cargo @@ -103,6 +103,11 @@ jobs: python-version: 3.11.x architecture: x64 + - name: Install ubuntu deps + if: startsWith(matrix.config.os, 'ubuntu') + run: | + sudo apt-get install -y glib2.0 + - name: Install cross compilation toolchain if: matrix.config.target == 'aarch64-unknown-linux-gnu' run: | @@ -111,7 +116,7 @@ jobs: sudo apt update sudo apt install -yq --no-install-suggests --no-install-recommends \ binfmt-support g++-10-aarch64-linux-gnu g++-10-multilib \ - gcc-10-aarch64-linux-gnu libc6-arm64-cross qemu qemu-user \ + gcc-10-aarch64-linux-gnu libc6-arm64-cross qemu-system qemu-user \ qemu-user-binfmt sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 \ @@ -232,7 +237,7 @@ jobs: publish: needs: build - runs-on: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }} + runs-on: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-24.04-xl' || 'ubuntu-24.04' }} if: github.repository == 'denoland/rusty_v8' && startsWith(github.ref, 'refs/tags/') steps: - name: Configure git diff --git a/.gitmodules b/.gitmodules index 2e50dce0..44ef796a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -18,7 +18,7 @@ url = https://chromium.googlesource.com/chromium/src/buildtools.git [submodule "third_party/icu"] path = third_party/icu - url = https://github.com/denoland/icu.git + url = https://chromium.googlesource.com/chromium/deps/icu.git [submodule "third_party/abseil-cpp"] path = third_party/abseil-cpp url = https://chromium.googlesource.com/chromium/src/third_party/abseil-cpp.git @@ -34,3 +34,6 @@ [submodule "third_party/libunwind/src"] path = third_party/libunwind/src url = https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git +[submodule "third_party/fast_float/src"] + path = third_party/fast_float/src + url = https://chromium.googlesource.com/external/github.com/fastfloat/fast_float.git diff --git a/.gn b/.gn index 1c2b2ce5..50532a67 100644 --- a/.gn +++ b/.gn @@ -78,7 +78,7 @@ default_args = { # Enable V8 object print for debugging. # v8_enable_object_print = true - + # V8 12.3 added google/fuzztest as a third party dependency. # https://chromium.googlesource.com/v8/v8.git/+/d5acece0c9b89b18716c177d1fcc8f734191e1e2%5E%21/#F4 # @@ -92,4 +92,7 @@ default_args = { v8_enable_v8_checks = false use_relative_vtables_abi = false + + v8_depend_on_icu_data_file = false + icu_copy_icudata_to_root_build_dir = false } diff --git a/README.md b/README.md index a2a3741b..3bbc742e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Rusty V8 Binding -V8 Version: 12.9.202.18 +V8 Version: 13.0.245.12 [![ci](https://github.com/denoland/rusty_v8/workflows/ci/badge.svg?branch=main)](https://github.com/denoland/rusty_v8/actions) [![crates](https://img.shields.io/crates/v/v8.svg)](https://crates.io/crates/v8) diff --git a/build b/build index c6d44e62..d0a7da7e 160000 --- a/build +++ b/build @@ -1 +1 @@ -Subproject commit c6d44e625aa64fa89cbdc971dfd301353bee04f3 +Subproject commit d0a7da7e88ffc90355cc94f44d3b5e9084b8381e diff --git a/buildtools b/buildtools index 60a59090..a7a84ac6 160000 --- a/buildtools +++ b/buildtools @@ -1 +1 @@ -Subproject commit 60a590902cf146c282f15242401bd8543256e2a2 +Subproject commit a7a84ac61eae5a8946807265a2fd8bd812daf384 diff --git a/rust-toolchain.toml b/rust-toolchain.toml index e92c5b6b..4906231b 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "1.80.0" +channel = "1.81.0" components = ["rustfmt", "clippy"] targets = [ "x86_64-apple-darwin", diff --git a/src/binding.cc b/src/binding.cc index 943d0092..8eac7309 100644 --- a/src/binding.cc +++ b/src/binding.cc @@ -3745,8 +3745,8 @@ void v8__CompiledWasmModule__DELETE(v8::CompiledWasmModule* self) { extern "C" { size_t icu_get_default_locale(char* output, size_t output_len) { - const icu_73::Locale& default_locale = icu::Locale::getDefault(); - icu_73::CheckedArrayByteSink sink(output, static_cast(output_len)); + const icu_74::Locale& default_locale = icu::Locale::getDefault(); + icu_74::CheckedArrayByteSink sink(output, static_cast(output_len)); UErrorCode status = U_ZERO_ERROR; default_locale.toLanguageTag(sink, status); assert(status == U_ZERO_ERROR); diff --git a/src/icu.rs b/src/icu.rs index 15c1be39..370834d9 100644 --- a/src/icu.rs +++ b/src/icu.rs @@ -5,14 +5,14 @@ use std::ffi::CString; extern "C" { fn icu_get_default_locale(output: *mut char, output_len: usize) -> usize; fn icu_set_default_locale(locale: *const char); - fn udata_setCommonData_73(this: *const u8, error_code: *mut i32); + fn udata_setCommonData_74(this: *const u8, error_code: *mut i32); } /// This function bypasses the normal ICU data loading process and allows you to force ICU's system /// data to come out of a user-specified area in memory. /// /// ICU data must be at least 8-aligned, and should be 16-aligned. See -/// https://unicode-org.github.io/icu/userguide/icudata +/// https://unicode-org.github.io/icu/userguide/icu_data/ /// /// The format of this data is that of the icu common data file, as is generated by the pkgdata /// tool with mode=common or mode=dll. You can read in a whole common mode file and pass the @@ -42,10 +42,10 @@ extern "C" { /// functionality for application data. // TODO(ry) Map error code to something useful. #[inline(always)] -pub fn set_common_data_73(data: &'static [u8]) -> Result<(), i32> { +pub fn set_common_data_74(data: &'static [u8]) -> Result<(), i32> { let mut error_code = 0i32; unsafe { - udata_setCommonData_73(data.as_ptr(), &mut error_code); + udata_setCommonData_74(data.as_ptr(), &mut error_code); } if error_code == 0 { Ok(()) diff --git a/tests/compile_fail/handle_scope_escape_to_nowhere.stderr b/tests/compile_fail/handle_scope_escape_to_nowhere.stderr index e72c13a3..3800513e 100644 --- a/tests/compile_fail/handle_scope_escape_to_nowhere.stderr +++ b/tests/compile_fail/handle_scope_escape_to_nowhere.stderr @@ -7,13 +7,13 @@ error[E0277]: the trait bound `OwnedIsolate: v8::scope::param::NewEscapableHandl | required by a bound introduced by this call | = help: the following other types implement trait `v8::scope::param::NewEscapableHandleScope<'s, 'e>`: - as v8::scope::param::NewEscapableHandleScope<'s, 'e>> - as v8::scope::param::NewEscapableHandleScope<'s, 'p>> - as v8::scope::param::NewEscapableHandleScope<'s, 'e>> - as v8::scope::param::NewEscapableHandleScope<'s, 'e>> - as v8::scope::param::NewEscapableHandleScope<'s, 'p>> - as v8::scope::param::NewEscapableHandleScope<'s, 'p>> - as v8::scope::param::NewEscapableHandleScope<'s, 'e>> + `AllowJavascriptExecutionScope<'p, P>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'e>` + `CallbackScope<'p, C>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'p>` + `ContextScope<'p, P>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'e>` + `DisallowJavascriptExecutionScope<'p, P>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'e>` + `EscapableHandleScope<'p, 'e, C>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'p>` + `HandleScope<'p, C>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'p>` + `TryCatch<'p, P>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'e>` note: required by a bound in `EscapableHandleScope::<'s, 'e>::new` --> src/scope.rs | @@ -27,10 +27,10 @@ error[E0277]: the trait bound `OwnedIsolate: v8::scope::param::NewEscapableHandl | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `v8::scope::param::NewEscapableHandleScope<'_, '_>` is not implemented for `OwnedIsolate` | = help: the following other types implement trait `v8::scope::param::NewEscapableHandleScope<'s, 'e>`: - as v8::scope::param::NewEscapableHandleScope<'s, 'e>> - as v8::scope::param::NewEscapableHandleScope<'s, 'p>> - as v8::scope::param::NewEscapableHandleScope<'s, 'e>> - as v8::scope::param::NewEscapableHandleScope<'s, 'e>> - as v8::scope::param::NewEscapableHandleScope<'s, 'p>> - as v8::scope::param::NewEscapableHandleScope<'s, 'p>> - as v8::scope::param::NewEscapableHandleScope<'s, 'e>> + `AllowJavascriptExecutionScope<'p, P>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'e>` + `CallbackScope<'p, C>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'p>` + `ContextScope<'p, P>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'e>` + `DisallowJavascriptExecutionScope<'p, P>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'e>` + `EscapableHandleScope<'p, 'e, C>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'p>` + `HandleScope<'p, C>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'p>` + `TryCatch<'p, P>` implements `v8::scope::param::NewEscapableHandleScope<'s, 'e>` diff --git a/tests/test_api.rs b/tests/test_api.rs index e1256a0d..a50c3c3a 100644 --- a/tests/test_api.rs +++ b/tests/test_api.rs @@ -45,7 +45,7 @@ mod setup { fn initialize_once() { static START: Once = Once::new(); START.call_once(|| { - assert!(v8::icu::set_common_data_73(align_data::include_aligned!( + assert!(v8::icu::set_common_data_74(align_data::include_aligned!( align_data::Align16, "../third_party/icu/common/icudtl.dat" )) @@ -9124,7 +9124,7 @@ fn icu_date() { #[test] fn icu_set_common_data_fail() { assert!( - v8::icu::set_common_data_73(&[1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0]).is_err() + v8::icu::set_common_data_74(&[1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0]).is_err() ); } diff --git a/third_party/abseil-cpp b/third_party/abseil-cpp index ed3733b9..1f7e21e3 160000 --- a/third_party/abseil-cpp +++ b/third_party/abseil-cpp @@ -1 +1 @@ -Subproject commit ed3733b91e472a1e7a641c1f0c1e6c0ea698e958 +Subproject commit 1f7e21e34c3807a8841c9562cfc8b3213eb50bfc diff --git a/third_party/fast_float/src b/third_party/fast_float/src new file mode 160000 index 00000000..3e57d8dc --- /dev/null +++ b/third_party/fast_float/src @@ -0,0 +1 @@ +Subproject commit 3e57d8dcfb0a04b5a8a26b486b54490a2e9b310f diff --git a/third_party/icu b/third_party/icu index a22a8f24..9408c6fd 160000 --- a/third_party/icu +++ b/third_party/icu @@ -1 +1 @@ -Subproject commit a22a8f24224ddda8b856437d7e8560de1da3f8e1 +Subproject commit 9408c6fd4a39e6fef0e1c4077602e1c83b15f3fb diff --git a/third_party/libc++/src b/third_party/libc++/src index f801c947..50ab693e 160000 --- a/third_party/libc++/src +++ b/third_party/libc++/src @@ -1 +1 @@ -Subproject commit f801c947082a3e0a4b48780303526b73905f6ecd +Subproject commit 50ab693ecb611942ce4440d8c9ed707ee65ed5e8 diff --git a/third_party/libc++abi/src b/third_party/libc++abi/src index eb656738..29b2e9a0 160000 --- a/third_party/libc++abi/src +++ b/third_party/libc++abi/src @@ -1 +1 @@ -Subproject commit eb6567388e89d9730c76dee71d68ac82e4a1abf6 +Subproject commit 29b2e9a0f48688da116692cb04758393053d269c diff --git a/third_party/libunwind/src b/third_party/libunwind/src index 116c20da..dc70138c 160000 --- a/third_party/libunwind/src +++ b/third_party/libunwind/src @@ -1 +1 @@ -Subproject commit 116c20dae60d84a77005697cf29f72783f81b0f9 +Subproject commit dc70138c3e68e2f946585f134e20815851e26263 diff --git a/tools/clang b/tools/clang index 63b7be17..e47c184e 160000 --- a/tools/clang +++ b/tools/clang @@ -1 +1 @@ -Subproject commit 63b7be17f8981d716ea9a0d65bb04654d79548a8 +Subproject commit e47c184ec52d50c7aa2a99cd3bd26ebcafaa94b9 diff --git a/tools/update_deps.py b/tools/update_deps.py index c89dd9bd..3745602c 100644 --- a/tools/update_deps.py +++ b/tools/update_deps.py @@ -2,7 +2,7 @@ from v8_deps import deps import subprocess def process(name, dep): - if name == 'build' or name == 'third_party/icu': + if name == 'build': # We have our own fork of this return diff --git a/v8 b/v8 index d5e5d10d..da241478 160000 --- a/v8 +++ b/v8 @@ -1 +1 @@ -Subproject commit d5e5d10dc91365077bad1ea2303c5e59ebb85ddb +Subproject commit da24147866cee8f676686056f481734c57e8a8df