v8: Expose Float16Array

Depends on https://github.com/lightpanda-io/zig-v8-fork/pull/191

If nothing else, it allows more WPT tests to pass, e.g.:
/websockets/Send-binary-arraybufferview-float16.any.html?default
This commit is contained in:
Karl Seguin
2026-07-23 10:51:48 +08:00
parent 0d77c501db
commit 084e83572d
2 changed files with 13 additions and 0 deletions

View File

@@ -931,6 +931,12 @@ fn jsValueToTypedArray(comptime T: type, js_val: js.Value) !?[]T {
return ptr[0..num_elements];
}
},
f16 => {
if (js_val.isFloat16Array()) {
const ptr = @as([*]f16, @ptrCast(@alignCast(base)));
return ptr[0..num_elements];
}
},
f32 => {
if (js_val.isFloat32Array()) {
const ptr = @as([*]f32, @ptrCast(@alignCast(base)));
@@ -1071,6 +1077,9 @@ fn probeJsValueToZig(self: *const Local, comptime T: type, js_val: js.Value) !Pr
i64 => if (js_val.isBigInt64Array()) {
return .{ .ok = {} };
},
f16 => if (js_val.isFloat16Array()) {
return .{ .ok = {} };
},
f32 => if (js_val.isFloat32Array()) {
return .{ .ok = {} };
},

View File

@@ -166,6 +166,10 @@ pub fn isBigInt64Array(self: Value) bool {
return v8.v8__Value__IsBigInt64Array(self.handle);
}
pub fn isFloat16Array(self: Value) bool {
return v8.v8__Value__IsFloat16Array(self.handle);
}
pub fn isFloat32Array(self: Value) bool {
return v8.v8__Value__IsFloat32Array(self.handle);
}