# WSL 1 vs WSL 2

**URL:** https://discourse.julialang.org/t/wsl-1-vs-wsl-2/133599
**Category:** Offtopic
**Created:** [November 2, 2025, 1:54am UTC](https://discourse.julialang.org/t/wsl-1-vs-wsl-2/133599 "2025-11-02T01:54:24Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)
#### Post date: [November 2, 2025, 1:54am UTC](https://discourse.julialang.org/t/wsl-1-vs-wsl-2/133599/1 "2025-11-02T01:54:24Z")

</div>

I’m curious which you use since Julia only supports WSL 2 (tier 2), but I think works for both.

Note, WSL 1 still supported, and neither is clearly better. " WSL 2 is “ **20x faster** compared to WSL 1” for file access, but that flips around for file access to /mnt/c, i.e. C drive, maybe only downside of WSL 2.

WSL 1 ~~has(?)~~/had small issues with floating point ( ~~I’m don’t think fixed and maybe never will~~ ).

> <https://github.com/microsoft/WSL/issues/1748>
>
> Here's a Linux program to print the x87 FPU control word:
> \`\`\`c
> \#include \<stdio….h\>
> \#include \<fpu\_control.h\>
> 
> int main(int argc, char\*\* argv) {
> fpu\_control\_t cw;
> \_FPU\_GETCW(cw);
> printf("0x%x\\n", cw);
> }
> \`\`\`
> 
> On WSL it prints \`0x27f\`. On real Linux it prints \`0x37f\`. The difference is in the precision control field (bits 8-9): on Windows it's set to 0x2 = 64-bit double precision mode, and on Linux it's set to 0x3 = 80 bit extended precision mode.
> 
> This is not a very surprising bug; these are the standard settings for the control word in the Windows and Linux ABIs, respectively. But WSL should match the Linux ABI, not the Windows ABI :-). The effect is that Linux programs that use \`long double\` will produce incorrect results under WSL (and it'll cause small rounding differences in floating point code in general).
> 
> Originally discovered due to incorrect results when using numpy's \`longdouble\` type under WSL:
> https://github.com/numpy/numpy/issues/8726

Maybe actually both outdated: [BUG: float128 loses precision on windows subsystem for linux · Issue #8726 · numpy/numpy · GitHub](https://github.com/numpy/numpy/issues/8726) and [Failed to build with musl libc in WSL 1 · Issue #512 · radiator-software/p5-net-ssleay · GitHub](https://github.com/radiator-software/p5-net-ssleay/issues/512)

WSL 2 has slow file I/O performance, but WSL 1 as fast as possible to /mnt/c since WSL 2 uses 9P from Plan9 intriguingly… For I/O otherwise WSL 2 is claimed near-native speed, not sure if it reverses for WSL 1 outside of /mnt/c

I’m assuming my info (from AI) is still valid:

> Benchmarks consistently show a stark contrast depending on the workload:
> 
> | Operation | Scenario | WSL 2 (via 9P to `/mnt/c/`) | WSL 2 (native ext4 filesystem) | Performance Difference (approx.) |
> | --- | --- | --- | --- | --- |
> | **Small File Write** | `npm install` (many small files) | **Very Slow** | Very Fast | **10x - 50x slower** on 9P |
> | **Large File Transfer** | Copying a 1GB ISO file | **Fast** | Very Fast | **~1.5x - 2x slower** on 9P |
> | **Small File Read** | `git status` on a large repo | **Slow** | Fast | **5x - 10x slower** on 9P |

Also out of curiosity the reverse, what are people’s experience with running Windows Julia in Wine on Linux? There’s probably no read use for it expect for testing (e.g. I don’t have Windows, and want to test something Windows specific soon). Is that also the reason people use WSL for Julia?

---

<div class="post-metadata">

### Author: ![photor](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/photor/32/14343_2.png) [@photor](https://discourse.julialang.org/u/photor)
#### Post date: [November 2, 2025, 5:38am UTC](https://discourse.julialang.org/t/wsl-1-vs-wsl-2/133599/2 "2025-11-02T05:38:39Z")

</div>

A naive question: what is 9P?

---

<div class="post-metadata">

### Author: ![Wen-Wei\_Tseng](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/wen-wei_tseng/32/28839_2.png) [@Wen-Wei\_Tseng](https://discourse.julialang.org/u/Wen-Wei_Tseng)
#### Post date: [November 2, 2025, 5:46am UTC](https://discourse.julialang.org/t/wsl-1-vs-wsl-2/133599/3 "2025-11-02T05:46:19Z")

</div>

AFAIK its an network protocol connecting the Linux VM and the Windows VM.

> **[9P (protocol)](https://en.wikipedia.org/wiki/9P_(protocol))**
>
> 9P (or the Plan 9 Filesystem Protocol or Styx) is a network protocol developed for the Plan 9 from Bell Labs distributed operating system as the means of connecting the components of a Plan 9 system. Files are key objects in Plan 9. They represent windows, network connections, processes, and almost anything else available in the operating system.
> 9P was revised for the 4th edition of Plan 9 under the name 9P2000, containing various improvements. Some of the improvements made are the removal of c...

---

<div class="post-metadata">

### Author: ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)
#### Post date: [November 2, 2025, 4:50pm UTC](https://discourse.julialang.org/t/wsl-1-vs-wsl-2/133599/4 "2025-11-02T16:50:28Z")

</div>

Good question, since it’s a “chatty” (according to AI conversation, thus slower) non-ideal networking protocol, used by WSL in non-networking (the Linux kernel talking to the Windows kernel in internal to the CPU “networking”), to mount the C drive (maybe more so networking actually useful?), and was likely chosen as non-GPL. It’s strange they didn’t use e.g. SMB/SAMBA or NFS…

---

<div class="post-metadata">

### Author: ![hexaeder](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hexaeder/32/24403_2.png) [@hexaeder](https://discourse.julialang.org/u/hexaeder)
#### Post date: [November 2, 2025, 5:50pm UTC](https://discourse.julialang.org/t/wsl-1-vs-wsl-2/133599/5 "2025-11-02T17:50:52Z")

</div>

I do nearly all of my dev work in WSL2 sind around 2 years now and am quite happy with it. In nearly never access the mounted c drive. Occasionally, I do it the other way around, for looking at images in a git folder with windows tools for example. Therefore, I never had any performance problems and it felt quite stable. From what i‘ve heard, wsl2 is what most people use nowadays and most of the guides you find (for stuff like gui applications, cuda within wsl, …) will explain stuff for wsl2.

---

<div class="post-metadata">

### Author: ![gvanuxem](https://avatars.discourse-cdn.com/v4/letter/g/a587f6/32.png) [@gvanuxem](https://discourse.julialang.org/u/gvanuxem)
#### Post date: [November 3, 2025, 3:26am UTC](https://discourse.julialang.org/t/wsl-1-vs-wsl-2/133599/6 "2025-11-03T03:26:26Z")

</div>

If you speak about filesystem access performance. I have seen a big improvement in this regard when switching to WSL2. See [Announcing WSL 2](https://devblogs.microsoft.com/commandline/announcing-wsl-2/) for information about what M$ introduced in WSL2. Working in /mnt/c from WSL2 is a non-sense for me. I use Windows directly.
