Der grundlegende Unterschied zwischen WSL2 und seiner Vorgängerversion liegt in der Architektur der Software. Während das WSL1 eine Kompatibilitätsschicht zum Übersetzen der Code-Ausführung zwischen Windows und Linux bereitstellt, setzt WSL2 auf die Virtualisierung eines Linux-Betriebssystems. Die dabei zum Einsatz kommende virtuelle Maschine läuft auf dem nativen Windows-Hypervisor Hyper-V, welcher besonders performant arbeitet.
Während der Funktionsumfang der vom WSL1 bereitgestellten Linux-Schnittstelle eingeschränkt war, kommt mit WSL2 ein kompletter Linux-Kernel zum Einsatz. Dabei handelt es sich um einen in Bezug auf Größe und Leistung speziell für das WSL2 optimierten Kernel, basierend auf dem stabilen Original-Code von „kernel.org“. Im praktischen Einsatz schlägt sich der Ansatz in einer Beschleunigung der Code-Ausführung um einen Faktor von ca. zwei bis zwanzig nieder. Ferner benötigt WSL2 weniger Arbeitsspeicher als die Vorgängerversion. Besonders komfortabel für Nutzer ist der Umstand, dass der Kernel im Rahmen der regulären Windows-Updates gewartet wird.
Da das WSL1 eine Übersetzungsschicht nutzt, um zwischen Linux- und Windows-Systemaufrufen zu vermitteln, bleibt manche spezialisierte Linux-Software außen vor. Demgegenüber leistet die Kernel-Virtualisierung des WSL2 vollständige Kompatibilität von Systemaufrufen. In der Praxis bedeutet dies, dass sich auch komplexe Software wie Docker innerhalb von WSL2 betreiben lässt. Ferner erfolgt aus der Linux-Umgebung heraus Zugriff auf die GPU, was sich vor allem bei Anwendungen mit großen Datasets wie Machine Learning und Data Science bezahlt macht.
Auch wenn die Nutzung von WSL2 auf modernen Systemen empfohlen wird, lassen sich beide Versionen parallel betreiben. Für jede Linux-Distribution lässt sich einzeln festlegen, welche WSL-Version zur Steuerung zum Einsatz kommen soll.