Support for the unix socket has existed both in BSD and Linux for the longest time, but, not on Windows. On Windows, there were some alternatives for local IPC, such as named pipes. But, calling conventions are different between the named pipes and sockets, making writing low-maintenance cross-platform applications difficult. For example, one such place where these two constructs differ (other than the API) is terminating the connection. BSD Socket API provides a bidirectional close semantics using ‘shutdown’. There is no direct equivalent of that in named pipes. Such differences make it difficult to port unix socket applications from Linux to Windows and vice versa; up until now!
Build 17063 brings native support for the unix socket to Windows. Starting this build, two Win32 processes can use the AF_UNIX address family over Winsock API (which is very similar to the BSD socket API) to communicate with each other. Currently, the support only exists for the stream (SOCK_STREAM) socket type, which is a connection-oriented protocol for one-to-one communication. Support for the datagram (SOCK_DGRAM) can be considered in future depending on the adoption, feedback and scenarios.
Another step to make Windows friendlier to UNIX/Linux users and developers.
Thom Holwerda,
Call me a cynic, but I don’t imagine microsoft really cared about unix sockets until it began affecting their internal development. In other words microsoft’s developers responsible for porting and maintaining linux tools on windows were experiencing the frustrations of porting *nix software to windows.
I do wonder about the effectiveness of microsoft’s strategy of supporting linux userspace on windows to regain the server market lost to linux. I know that I have zero interest in replacing linux with microsoft products. Anyone working for a company showing interest in this?
Edited 2017-12-20 21:01 UTC
Personally think it is more about not losing any more ground than necessary… I don’t see this kind of stuff helping them regain much lost ground to be honest – Linux will always be better at running Linux Apps.
It does, however, keep you from leaving Windows in some scenarios. I don’t think it does much to attract you to adopting Windows though.
My personal theory though is this isn’t even really about servers, or even about Linux, its about web developers. The Linux Subsystem on Windows 10 is by far the most meaningful thing they have done in the last 5 years to attract web developers currently on OSX (which is an outstanding web development platform for Linux servers, arguably better than Linux itself) to switch to Windows, because for most OSX users Windows had become basically non-viable for them – everything from Git to Node to Python to Ruby was an uphill struggle on that platform. Now it is at least becoming viable again…
Edited 2017-12-20 22:29 UTC
It they allowed you to write to and delete files that other processes have open, then we are talking.
But if your stuff runs in a cloud and suddenly there’s a way of easily trying out Azure, then that would lure people in, because it wouldn’t feel like you’re replacing Linux but just choosing a different cloud provider.
kwan_e,
Yes, but even if it were no compatibility issues and it could 100% replace linux, why would I want to do that? Given microsoft’s history as a penchant for user control with a predilection for anti-competitive behavior, I see absolutely no reason for anyone to go that route given the numerous options available in linux hosting.
Admittedly, I am probably biased due to the fact that I sell linux hosting myself, but I really prefer supporting companies that have a larger incentive to work for me than exploit their power over me, as is often the case with huge companies.
Because it’s not the techs who make these decisions, but the CTO.
kwan_e,
Ain’t that the truth.
I know that what I will say is insanely crazy and many people would feel definitely uncomfortable afterwards, but I want Microsoft to make a Unix-like OS from scratch eventually.
Microsoft did have Xenix in the late 70s and during the 80s.
Unlike popular belief of some freaks there are normal people working in Microsoft, Apple, etc., not nude virgins from fantasyland. If application developers find unix sockets useful and porting of apps from linux is easier then why not support it natively ?
The only meaningful thing this will do is inspire developers to abandon (parts of) the Windows api. Now devs can develop their apps to a greater audience (easier) by AVOIDING parts of the windows api. This is a very slippery slope. There might be some web dev advantages but it makes a very big and loud statement, “don’t bother with win api, use as much POSIX as you can”.
Microsoft might as well put their UI and api on top of Linux and be done with it because that’s where their going. Lib_Metro and Lib_Win32 here we come!
Edited 2017-12-22 17:46 UTC
Which is exactly the reason I think Windows 10 is a linux distro in denial.
APIs are added at a breakneck pace (not bad in itself), but win32/win64 compatibility is sometimes broken (ain’t nobody got time for that), and you can’t opt to receive only security patches, you get upgraded to the latest version either you want it or not.
Most importantly, the win32/win64 API is treated as legacy nowadays, despite the fact it is the only API that does things like SLI/CrossFire, true full-screen apps (exclusive GPU usage), v-sync disable, stereoscopic output and the like, and even complex mouse-driven UIs, at least on Microsoft Windows and despite the fact it is the API most high-dollar Windows apps use.
Linux compatibility in Windows is good if you like linux distros, but the way Microsoft treats win32 and win64 is not good for people who like Windows, and most importantly for businesses who rely on the API stability of win32 and win64 as was offered by Windows versions previous to Windows 10.
Is Belfiore and the other Redmondian hipsters suffering from Apple-eny sure that this decision (“move fast and break things?”) was a good one? Just because something is good for a consumer OS like iOS doesn’t mean it is good for an OS like Windows which has a huge and complex hardware and software ecosystem and is used by businesses who value stability.
Let me give you a hint: How many businesses plan to upgrade to Windows 10?
Edited 2017-12-22 18:14 UTC
Well, I know at least one that does and it is a large, global company.
Now if only Windows could have filesystem semantics that behave more like UNIX than C/PM: the insistence of file locks in the NT kernel that actually lock a pathname down to a file, making it unmovable to another place on a filesystem while the file is open or has locks on it.
If only Microsoft could fix that one… I’d be most grateful!