Make js.Bridge aware of string.String for input parameters

Avoids having to allocate small strings when going from v8 -> Zig. Also
added a discriminatory type, string.Global which uses the arena, rather than
the call_arena, if an allocation _is_ necessary. (This is similar to a feature
we had before, but was lost in zigdom). Strings from v8 that need to be
persisted, can be allocated directly v8 -> arena, rather than v8 -> call_arena
-> arena.

I think there are a lot of places where we should use string.String - where
strings are expected to be short (e.g. attribute names). But started with just
document.querySelector and querySelectorAll.
This commit is contained in:
Karl Seguin
2026-01-22 16:54:32 +08:00
parent 1f14eb62d4
commit 54c45a0cfd
7 changed files with 92 additions and 12 deletions

View File

@@ -176,6 +176,11 @@ pub fn print(comptime fmt: []const u8, args: anytype) void {
}
}
const String = @import("string.zig").String;
pub fn newString(str: []const u8) String {
return String.init(arena_allocator, str, .{}) catch unreachable;
}
pub const Random = struct {
var instance: ?std.Random.DefaultPrng = null;