I know well Linux but nothing about WSL or Windows. I'm using Linux since 1993, but I never used Windows (and probably won't use it before my retirement, e.g. before 2024, so I am likely to never use Windows).

From a Linux programmer's perspective, what are the features (both ABI- and API- wise ...) of recent Linux that WSL does not support well? I guess it is Xorg, Wayland, systemd. But what about inotify(7) or signalfd(2) or dlopen(3) ? I guess dlopen is obviously supported by WSL , but I am not sure about inotify or signalfd?

In other words, where can I find guidance on how to write WSL friendly Linux applications? Is there some exhaustive list of system calls (from syscalls(2)...) supported in WSL? Or examples, and explanations, about Linux libraries or software not running on WSL?

The motivation might be to make my bismon project WSL friendly. I don't want to put a lot of efforts on that (and I even don't want to install Windows or WSL myself). But bismon is a Linux app, not a WSL or Windows one.

closed as too broad by Rui F Ribeiro, user88036, Thomas, Romeo Ninov, Jeff Schaller Oct 7 '18 at 21:59

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    WSL is a fake kernel, but only Microsoft know what exactly it supports. It supports most syscall and sysfs and procfs, maybe even fancy linux-specific functions like cgroups and namespace and abstract Unix domain sockets. But I'm pretty sure it doesn't support kernel-mode modules and lots of ioctl for devices. Also I think it will not support mount ext4 or btrfs or xfs, etc. – 炸鱼薯条德里克 Oct 7 '18 at 14:51
  • But do you know about a complete list of system calls (e.g. an hypothetical 4th column to the table in syscalls(2) mentionning every system call supported on WSL)? My bismon don't do device IO directly (only files and TCP & Unix sockets & pipes). It runs without root privilege. – Basile Starynkevitch Oct 7 '18 at 14:55
  • Basically, WSL was designed to run a low-level developer supplied "distro", then user applications run on this fake OS, which usually can't run Xorg or systemd, which is common in real OS. Your app, for the best, basically a service that don't need user interface. – 炸鱼薯条德里克 Oct 7 '18 at 14:57
  • My bismon uses HTTP server side (thru libonion) and temporarily GTK. Soon, I won't use GTK and only provide a web interface (thru libonion). The rest of bismon is about running command-line Linux processes (notably gcc). But dlopen is very important to me. But I use signalfd and could want to use inotify – Basile Starynkevitch Oct 7 '18 at 15:00
  • 2
    It's weird that a developer want to develop app for some platform but don't want to touch that platform but stick to a emulator – 炸鱼薯条德里克 Oct 7 '18 at 15:08