From 34720da3d0a4a98383639cbedcbe1aa885217ed6 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Sun, 22 Nov 2020 10:29:45 +0100 Subject: [PATCH] Apparently unix sockets are supported on Windows Starting from Windows 10 build 17063. --- lib/std/net.zig | 6 +++++- lib/std/net/test.zig | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/std/net.zig b/lib/std/net.zig index 41da4a2c46..6fe2d1cd08 100644 --- a/lib/std/net.zig +++ b/lib/std/net.zig @@ -12,7 +12,11 @@ const os = std.os; const fs = std.fs; const io = std.io; -pub const has_unix_sockets = @hasDecl(os, "sockaddr_un"); +// Windows 10 added support for unix sockets in build 17063, redstone 4 is the +// first release to support them. +pub const has_unix_sockets = @hasDecl(os, "sockaddr_un") and + (builtin.os.tag != .windows or + std.Target.current.os.version_range.windows.isAtLeast(.win10_rs4) orelse false); pub const Address = extern union { any: os.sockaddr, diff --git a/lib/std/net/test.zig b/lib/std/net/test.zig index 12eb7c6cb2..10a9c4e18b 100644 --- a/lib/std/net/test.zig +++ b/lib/std/net/test.zig @@ -258,6 +258,15 @@ test "listen on a unix socket, send bytes, receive bytes" { if (builtin.single_threaded) return error.SkipZigTest; if (!net.has_unix_sockets) return error.SkipZigTest; + if (std.builtin.os.tag == .windows) { + _ = try std.os.windows.WSAStartup(2, 2); + } + defer { + if (std.builtin.os.tag == .windows) { + std.os.windows.WSACleanup() catch unreachable; + } + } + var server = net.StreamServer.init(.{}); defer server.deinit();