IMO WSL robi MS preto, lebo inak by si na vyvoj server-side aplikacii (ktore su v prevaznej vacsine pripadov postavene na Linuxe) potreboval but Linux VM, alebo Linux samotny.
Momentalne aj vdaka WSL mam niekolko kolegov ktori Windows pouzivaju ako najjednoduchsi sposob ako na laptop nainstalovat "linux". A nie je to tym, ze by sa inak v Linuxe nevyznali, prave naopak su to ludia ktori kedysi pouzivali prevazne Linux.
Je to pomerne dobre integrovane VM. Nejaku dobu som to pouzival a na vela veci to bolo v pohode. Co teraz pocuvam, tak je treba zopar workaroundov na to aby to bolo dobre integrovane s windows userspace, cize ono to nie je uplne 100% nahrada linuxu. Ale napriklad kolega to pouziva s externym GPU ktore by proste v Linuxe nechodilo uspokojivo dobre, tak je jednoduchsie riesit tie workaroundy ako eGPU funkcionalitu.
Ono bohuzel plati pravidlo 80:20 procent. WSL(1) implementuje tak 20% funkcionality a to staci pro 80% aplikaci. A dal uz to ale nejde. Nakonec se ukazalo, ze plne virtualizovat cely OS je jednodussi nez implementovat jednotlive syscally.
Na WSL se uz 3 roky resi implementace mmap, ktera porad jeste neni identicka s tim jak to dela Linux kernel. Bez mmap nefunguje libdb, bez libdb nefunguje rpm a bez rpm nenainstalujete zadnou RPM-based distribuci (krome SUSE). A to je jen jediny syscall. Bez mmap nefunguje ani mysql ani PostgreSQL ani zadna dalsi databaze.
Na WSL(1) nerozjedete Docker a furu dalsich aplikaci. Existuji tisice corner-case pripadu, kdy se NT Kernel chova jinak a propojit tyhle svety by predstavovalo obrovske mnozstvi prace. Nehlede na to, ze by se musely prepsat vsechny ovladace.
29. 9. 2020, 07:55 editováno autorem komentáře
rpm prechádza na sqlite, tak v blízkej budúcnosti to možno nainštalovať pôjde. Fedora 33 by mala používať sqlite backend by default a 34 by mala vypustiť podporu bdb v rpm úplne.
No ale čo je väčšia sranda, docker nefunguje ani pod WSL2. Aktuálne odporúčané riešenie je použiť docker pre windows a akurát ho kontrolovať z cli v bežiacej WSL2 inštancii. Tentokrát to nie je spôsobené syscallom, ale initom, ktorý Microsoft používa vo WSL2 (ktorý v podstate nič nerobí, iba spustí bash).