From c451cd763a3d4ae8df76b987e98556fe56c0461e Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Wed, 22 Jul 2026 16:16:10 +0800 Subject: [PATCH] websocket, wpt: Improve websocket WPT results + flakiness 1 - Blocks connection to "bad" ports 2 - new WebSocket('...'); mostly returns the instance, and errors are emitted in a close event (1) 3 - More validation (no # allowed, ...); 4 - http -> ws, https -> wss (yes, per spec) There's also some groundwork for better float16 support, but it turns out this will require a new v8 build to complete. So I left the harmless float16 mapping in (but, without the matching Float16Array, it doesn't help much). (1) Some things cause an exception to be raised, but most don't --- src/browser/js/Local.zig | 3 +- src/browser/js/Value.zig | 4 + src/browser/tests/net/websocket.html | 54 +++++++++++++ src/browser/webapi/net/WebSocket.zig | 112 ++++++++++++++++++++------- src/network/http.zig | 99 +++++++++++++++++++++++ 5 files changed, 242 insertions(+), 30 deletions(-) diff --git a/src/browser/js/Local.zig b/src/browser/js/Local.zig index 55baa597c..f77a0fb5c 100644 --- a/src/browser/js/Local.zig +++ b/src/browser/js/Local.zig @@ -623,7 +623,8 @@ pub fn jsValueToZig(self: *const Local, comptime T: type, js_val: js.Value) !T { return try self.jsValueToZig(o.child, js_val); }, .float => |f| switch (f.bits) { - 0...32 => return js_val.toF32(), + 0...16 => return js_val.toF16(), + 17...32 => return js_val.toF32(), 33...64 => return js_val.toF64(), else => {}, }, diff --git a/src/browser/js/Value.zig b/src/browser/js/Value.zig index 95dc641dc..c6089a277 100644 --- a/src/browser/js/Value.zig +++ b/src/browser/js/Value.zig @@ -234,6 +234,10 @@ pub fn typeOf(self: Value) js.String { return js.String{ .local = self.local, .handle = str_handle }; } +pub fn toF16(self: Value) !f16 { + return @floatCast(try self.toF64()); +} + pub fn toF32(self: Value) !f32 { return @floatCast(try self.toF64()); } diff --git a/src/browser/tests/net/websocket.html b/src/browser/tests/net/websocket.html index 6c326a502..052c928ac 100644 --- a/src/browser/tests/net/websocket.html +++ b/src/browser/tests/net/websocket.html @@ -562,6 +562,60 @@ } + + + +