ไมโครซอฟท์ออก WSL 1.0 (อาจจะต้องเรียกว่า WSL2 1.0) หลังจากพัฒนามายาวนาน โดย WSL นั้นเปิดตัวในงาน BUILD 2016 แต่ WSL2 ที่ออกปี 2019 นั้นเปลี่ยนสถาปัตยกรรมไปมาก โดยหันไปพอร์ตเคอร์เนลลินุกซ์ทั้งก้อนมารันอยู่ใน VM ภายใต้วินโดวส์แทนการจำลอง system call
การออก WSL 1.0 ไม่ได้เปลี่ยนอะไรมากนัก แต่เวอร์ชั่นก่อนหน้านี้ก็มีการอัพเดต WSLg สำหรับโปรแกรมแบบ GUI ไป
ไมโครซอฟท์ปล่อยตัวติดตั้ง WSL 1.0 ในรูปแบบ MSIX Bundle ติดตั้งได้ทั้ง x64 และ ARM64
ที่มา - GitHub: microsoft/WSL
Comments
เรียกว่าเป็นสิ่งที่ดีที่สุดตอน dev บน windows เลย
รู้สึกว่ามาถูกทางมากๆ
+1 ใช่ครับ WSL เข้ามาช่วยชีวิต สำหรับคนอย่างผมที่ต้องทำงานกับหลายซอร์ฟแวร์ที่ทั้งรันอยู่บน Windows และ Unix (คนละ Product) 💙💙
ในขณะที่การเขียนโค๊ดทั่วๆไป ก็ย้ายไปเขียนบน Linux ได้เกือบทั้งหมด
..: เรื่อยไป
เป็นของที่ทำให้เดฟเลิกอ้างว่าเขียนโปรแกรมต้องทำบนแมคเท่านั้นได้...
ปล. ยกเว้นเขียน swift หรือแอพที่เป็น apple specific นะ
จากใจคนใช้ mac
wsl คือของดีจริง ๆ รัน linux kernel พร้อมกันกับของ windows อะไรที่สั่งรันใน wsl จะสามารถเปิดดูได้ในฝั่ง windows แถม docker บน wsl นั้น response time ดีกว่าของ mac ด้วยก็เพราะ docker ทำงานได้แค่กับ linux และ mac ก็ไม่ใช่ linux ทำให้ต้องจำลอง vm แล้ว map volume กับฝั่ง mac อีกที
หรือนี่คือสาเหตุที่คนอยากให้ MS ทำ Windows for Apple silicon 😂
หลายคนพูดตรงกันว่า Apple ทำ HW ดีแต่ SW ไม่ค่อยดีเท่าไหร่ (แต่สวย)
อย่างเรื่องนึงคือเรื่องการอัพเกรด OS ในสายมืออาชีพ (น่าจะไม่นับ SW Dev มั้ง? ไม่ชัวร์) มักจะพูดกันว่า ถ้าระบบใช้ได้อยู่แล้ว อย่าอัพเกรด มีโอกาสที่ซอฟต์แวร์พังสูง ผู้ผลิตเองก็มักจะออกมาพูดว่าซอฟต์แวร์ตัวเองยังทดสอบกับโอเอสใหม่ไม่เสร็จ อย่าเพิ่งรีบอัพ
ซึ่งฝั่งวินโดวส์จะไม่ค่อยเจอ โดยเฉพาะในช่วงหลังจาก Windows 7 ลงมานี่นิ่งมาก (จริง ๆ XP ก็นิ่งแล้วแหละ)
แต่ WSL2 ก็เป็น VM (ที่บางมากและ optimize ดีพิเศษ) นะครับ 😅
WSL2 เสียตรงอ่าน/เขียน NTFS ช้ามากนี่แหละครับ orz สั่งอะไรที่ยุ่งกับ node_modules นี่คือตาเหลือกทุกที T-T ลองเล่น Bun ก็คืออืดเป็นเรือเกลือเลยถ้าไม่ย้ายไป linux partition
wsl2 ตอนนี้เหลือแค่เรื่องอ่าน disk windows ช้า(ช้ากว่าต่อผ่าน smb ไปที่เครื่องตัวเองด้วซ้ำ) กับเรื่อง memory leak ที่ถ้าเปิดทิ้งไว้โดยไม่ตั้ง limit mem ไว้มันจะ leak ไปเรื่อย ๆ
ประเด็น memory leak นี้จริงเลยครับ ที่จริงสามารถตั้ง limit cpu/memory ใน .wslconfig ได้ และเรื่องประเด็นเมื่อ map volume ฝั่ง windows แล้วช้า ที่จริงก็แก้ปัญหาได้ด้วยการเอาไฟล์ไปเก็บไว้ใน wsl แล้ว map volume ใน wsl แทนก็จะทำให้เร็วขึ้น แต่ข้อเสียที่สำคัญของวิธีนี้คือถ้าเผลอลบ wsl นั้นทิ้งหรือ wsl พังและยังไม่ส่งไฟล์ขึ้น git ความซวยจะบังเกิด
ทั้งสองวิธีนี้เป็น best practices ที่ผู้ใช้ wsl ควรทำความเข้าใจให้ดี
ผมยังไม่ได้ลอง dev container อีกอย่าง จะช่วยแก้อะไรแบบนั้นได้มั้ยนะครับ
ผมก็ต้องจำกัด mem ไว้ที่ 32G เหมือนกันครับ
ปัญหาอีกอย่างนึงของ WSL ที่ผมเจอคือมันไม่คืนพื้นที่ disk อัตโนมัติ แม้ว่าเราจะลบไฟล์บน Linux ไปแล้วก็ตาม ไม่รู้คนอื่นเจอรึเปล่า ต้องรันคำสั่งเพิ่มเพื่อคืน disk กลับมาให้ฝั่ง Windows
..: เรื่อยไป
Docker ผมหลอนมาก build & push เสร็จต้องรีบลบออกเพราะเคยทำบวมไปร้อยกว่ากิ๊ก รอบนั้น reset Docker เลยครับ orz
มันยังมีเนื้อหาสำคัญของข่าวนี้ต่ออีกหน่อย ที่ไม่ได้เอามาลง
คือมันลง Microsoft Store ด้วย
ทำให้ feature ไม่ได้ขึ้นอยู่กับ OS update
ฉะนั้น WSL ของ Windows 10 กับ Windows 11 จะมี feature เหมือนกัน
https://learn.microsoft.com/en-us/windows/wsl/compare-versions#wsl-in-the-microsoft-store
https://devblogs.microsoft.com/commandline/the-windows-subsystem-for-linux-in-the-microsoft-store-is-now-generally-available-on-windows-10-and-11/