From 27ec1a13daddab94f4d7a2db93b0d16a2cfefdc8 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Tue, 8 Apr 2025 17:34:18 +0200 Subject: [PATCH 1/3] wpt: add missing renderer --- src/wpt/run.zig | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/wpt/run.zig b/src/wpt/run.zig index b152b5bd..a4a9750d 100644 --- a/src/wpt/run.zig +++ b/src/wpt/run.zig @@ -26,6 +26,7 @@ const parser = @import("netsurf"); const jsruntime = @import("jsruntime"); const Loop = jsruntime.Loop; const Env = jsruntime.Env; +const browser = @import("../browser/browser.zig"); const Window = @import("../html/window.zig").Window; const storage = @import("../storage/storage.zig"); const HttpClient = @import("../http/client.zig").Client; @@ -61,12 +62,17 @@ pub fn run(arena: *std.heap.ArenaAllocator, comptime dir: []const u8, f: []const var cookie_jar = storage.CookieJar.init(alloc); defer cookie_jar.deinit(); + var renderer = browser.Renderer.init(alloc); + defer renderer.elements.deinit(alloc); + defer renderer.positions.deinit(alloc); + var js_env: Env = undefined; Env.init(&js_env, alloc, &loop, UserContext{ .document = html_doc, .cookie_jar = &cookie_jar, .http_client = &http_client, .uri = try std.Uri.parse("https://lightpanda.io"), + .renderer = &renderer, }); defer js_env.deinit(); From d772eaf4a2385c8f4fb71fc9fd2d69c42cfe0ab3 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Tue, 8 Apr 2025 17:34:56 +0200 Subject: [PATCH 2/3] upgrade zig-jsruntime --- .github/actions/install/action.yml | 2 +- vendor/zig-js-runtime | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/install/action.yml b/.github/actions/install/action.yml index 91fa5512..2b5fa598 100644 --- a/.github/actions/install/action.yml +++ b/.github/actions/install/action.yml @@ -17,7 +17,7 @@ inputs: zig-v8: description: 'zig v8 version to install' required: false - default: 'v0.1.16' + default: 'v0.1.17' v8: description: 'v8 version to install' required: false diff --git a/vendor/zig-js-runtime b/vendor/zig-js-runtime index 6b48960a..ce1bffb8 160000 --- a/vendor/zig-js-runtime +++ b/vendor/zig-js-runtime @@ -1 +1 @@ -Subproject commit 6b48960a0664b74016c777da5e3f9129e5f041f7 +Subproject commit ce1bffb8f5b1f30ce5f085fc81c3376a114b9753 From f9c4cefe5907432e9823747029b6604521d71931 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Wed, 9 Apr 2025 09:01:04 +0800 Subject: [PATCH 3/3] Update zig-js-runtime, wait for loop on wpt error Updates zig-js-runtime to latest, reverting the loop reset change. This solves the introduced memory leak. On WPT error, call js_env.wait() to ensure all pending events are completed. Without this, on error, the code is likely to crash as the timeout callback executes AFTER env.deinit() is called. This is now possible to do safely on Mac now that cancel is pseudo-implemented. --- src/wpt/run.zig | 1 + vendor/zig-js-runtime | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/wpt/run.zig b/src/wpt/run.zig index a4a9750d..e0a0c3f0 100644 --- a/src/wpt/run.zig +++ b/src/wpt/run.zig @@ -75,6 +75,7 @@ pub fn run(arena: *std.heap.ArenaAllocator, comptime dir: []const u8, f: []const .renderer = &renderer, }); defer js_env.deinit(); + errdefer js_env.wait() catch unreachable; var storageShelf = storage.Shelf.init(alloc); defer storageShelf.deinit(); diff --git a/vendor/zig-js-runtime b/vendor/zig-js-runtime index ce1bffb8..f3a9e3d4 160000 --- a/vendor/zig-js-runtime +++ b/vendor/zig-js-runtime @@ -1 +1 @@ -Subproject commit ce1bffb8f5b1f30ce5f085fc81c3376a114b9753 +Subproject commit f3a9e3d448cd56a709ec2d101c05507e894d8e6f