Releases: MicrosoftDocs/WSL
17101
Build 17101
For general Windows information on build 17101 visit the Windows Blog.
WSL
- Support for signalfd. [GH 129]
- Support file-names containing illegal NTFS characters by encoding them as private Unicode characters. [GH 1514]
- Auto mount will fallback to read-only when write is not supported. [GH 2603]
- Allow pasting of Unicode surrogate pairs (like emoji characters). [GH 2765]
- Pseudo-files in /proc and /sys should return read and write ready from select, poll, epoll, et al. [GH 2838]
- Fix issue that could cause service to go into infinite loop when the registry has been tampered with or is corrupt.
- Fix netlink messages to work with newer (upstream 4.14) version of iproute2.
Console
- No fixes.
LTP Results:
Testing in progress
17093
Build 17093
For general Windows information on build 17093 visit the Windows Blog.
Important:
When starting WSL for the first time after upgrading to this build, it needs to perform some work upgrading the Linux file system directories. This may take up to several minutes, so WSL may appear to start slowly. This should only happen once for each distribution you have installed from the store.
- Improved case sensitivity support in DrvFs.
- DrvFs now supports per-directory case sensitivity. This is a new flag that can be set on directories to indicate all operations in those directories should be treated as case sensitive, which allows even Windows applications to correctly open files that differ only by case.
- DrvFs has new mount options controlling case sensitivity on a per-directory basis
- case=force: all directories are treated as case sensitive (except for the drive root). New directories created with WSL are marked as case sensitive. This is the legacy behavior except for marking new directories case sensitive.
- case=dir: only directories with the per-directory case sensitivity flag are treated as case sensitive; other directories are case insensitive. New directories created with WSL are marked as case sensitive.
- case=off: only directories with the per-directory case sensitivity flag are treated as case sensitive; other directories are case insensitive. New directories created with WSL are marked as case insensitive.
- Note: directories created by WSL in previous releases do not have this flag set, so will not be treated as case sensitive if you use the “case=dir” option. A way to set this flag on existing directories is coming soon.
- Example of mounting with these options (for existing drives, you must first unmount before you can mount with different options): sudo mount -t drvfs C: /mnt/c -o case=dir
- For now, case=force is still the default option. This will be changed to case=dir in the future.
- You can now use forward slashes in Windows paths when mounting DrvFs, e.g.: sudo mount -t drvfs //server/share /mnt/share
- WSL now processes the /etc/fstab file during instance start [GH 2636].
- This is done prior to automatically mounting DrvFs drives; any drives that were already mounted by fstab will not be remounted automatically, allowing you to change the mount point for specific drives.
- This behavior can be turned off using wsl.conf.
- The mount, mountinfo and mountstats files in /proc properly escape special characters like backslashes and spaces [GH 2799]
- Special files created with DrvFs such as WSL symbolic links, or fifos and sockets when metadata is enabled, can now be copied and moved from Windows.
WSL is more configurable with wsl.conf
We added a method for you to automatically configure certain functionality in WSL that will be applied every time you launch the subsystem. This includes automount options and network configuration. Learn more about it in our blog post at: https://aka.ms/wslconf
AF_UNIX allows socket connections between Linux processes on WSL and Windows native processes
WSL and Windows applications can now communicate with each other over Unix sockets. Imagine you want to run a service in Windows and make it available to both Windows and WSL apps. Now, that’s possible with Unix sockets. Read more in our blog post at https://aka.ms/afunixinterop
WSL
- Support mmap() with MAP_NORESERVE [GH 121, 2784]
- Support CLONE_PTRACE and CLONE_UNTRACED [GH 121, 2781]
- Handle non-SIGCHLD termination signal in clone [GH 121, 2781]
- Stub /proc/sys/fs/inotify/max_user_instances and /proc/sys/fs/inotify/max_user_watches [GH 1705]
- Error loading ELF binaries that contain load headers with non-zero offsets [GH 1884]
- Zero out trailing page bytes when loading images.
- Reduce cases where execve silently terminates process
Console
- No fixes.
LTP Results:
Testing in progress.
17083
Build 17083
For general Windows information on build 17083 visit the Windows Blog.
WSL
- Fixed bugcheck related to epoll [GH 2798, 2801, 2857]
- Fixed hangs when turning off ASLR [GH 1185, 2870]
- Ensure mmap operations appear atomic [GH 2732]
Console
- No fixes.
LTP Results:
Testing in progress.
17074
Build 17074
For general Windows information on build 17074 visit the Windows Blog.
WSL
- Fixed storage format of DrvFs metadata [GH 2777]
Important: DrvFs metadata created before this build will show up incorrectly or not at all. To fix affected files, use chmod and chown to re-apply the metadata. - Fixed issue with multiple signals and restartable syscalls.
Console
- No fixes.
LTP Results:
Testing in progress.
17063
Build 17063
For general Windows information on build 17063 visit the Windows Blog.
WSL
-
DrvFs supports additional Linux metadata. This allows setting the owner and mode of files using chmod/chown, and also the creation of special files such as fifos, unix sockets and device files.
This is disabled by default for now. To enable, mount DrvFs with the metadata option (to enable it on an existing mount, you must first unmount it):
mount -t drvfs C: /mnt/c -o metadata
Linux permissions are added as additional metadata to the file; they do not affect the Windows permissions. Remember, editing a file using a Windows editor may remove the metadata. In this case, the file will revert to its default permissions.
-
Added mount options to DrvFs to control files without metadata.
- uid: the user ID used for the owner of all files.
- gid: the group ID used for the owner of all files.
- umask: an octal mask of permissions to exclude for all files and directories.
- fmask: an octal mask of permissions to exclude for all regular files.
- dmask: an octal mask of permissions to exclude for all directories.
For example:
mount -t drvfs C: /mnt/c -o uid=1000,gid=1000,umask=22,fmask=111
Combine with the metadata option to specify default permissions for files without metadata.
-
Introduced a new environment variable,
WSLENV
, to configure how environment variables flow between WSL and Win32.For example:
WSLENV=GOPATH/l:USERPROFILE/pu:DISPLAY
WSLENV
is a colon-delimited list of environment variables that can be included when launching WSL processes from Win32 or Win32 processes from WSL. Each variable can be suffixed with a slash followed by flags to specify how it is translated.- p: The value is a path that should be translated between WSL paths and Win32 paths.
- l: The value is a list of paths. In WSL, it is a colon-delimited list. In Win32, it is a semicolon-delimited list.
- u: The value should only be included when invoking WSL from Win32
- w: The value should only be included when invoking Win32 from WSL
You can set
WSLENV
in .bashrc or in the custom Windows environment for your user. -
drvfs mounts correctly preserves timestamps from tar, cp -p (GH 1939)
-
drvfs symlinks report the correct size (GH 2641)
-
read/write works for very large IO sizes (GH 2653)
-
waitpid works with process group IDs (GH 2534)
-
significantly improved mmap performance for large reserve regions; improves ghc performance (GH 1671)
-
personality supports for READ_IMPLIES_EXEC; fixes maxima and clisp (GH 1185)
-
mprotect supports PROT_GROWSDOWN; fixes clisp (GH 1128)
-
page fault fixes in overcommit mode; fixes sbcl (GH 1128)
-
clone supports more flags combinations
-
Support select/epoll of epoll files (previously a no-op).
-
Notify ptrace of unimplemented syscalls.
-
Ignore interfaces that are not up when generating resolv.conf nameservers [GH 2694]
-
Enumerate network interfaces with no physical address. [GH 2685]
-
Additional bug fixes and improvements.
Linux tools available to developers on Windows
-
Windows Command line Toolchain includes bsdtar (tar) and curl.
Read this blog to learn more about the addition of these two new tools and see how they’re shaping the developer experience on Windows. -
AF_UNIX
is available in the Windows Insider SDK (17061+).
Read this blog to learn more aboutAF_UNIX
and how developers on Windows can use it.
Console
- No fixes.
LTP Results:
Testing in progress.
17046
Build 17046
For general Windows information on build 17046 visit the Windows Blog.
Fixed
WSL
- Allow processes to run without an active terminal. [GH 709, 1007, 1511, 2252, 2391, et al.]
- Better support of CLONE_VFORK and CLONE_VM. [GH 1878, 2615]
- Skip TDI filter drivers for WSL networking operations. [GH 1554]
- DrvFs creates NT symlinks when certain conditions are met. [GH 353, 1475, 2602]
- The link target must be relative, must not cross any mount points or symlinks, and must exist.
- The user must have SE_CREATE_SYMBOLIC_LINK_PRIVILEGE (this normally requires you to launch wsl.exe elevated), unless Developer Mode is turned on.
- In all other situations, DrvFs still creates WSL symlinks.
- Allow running elevated and non-elevated WSL instances simultaneously.
- Support /proc/sys/kernel/yama/ptrace_scope
- Add wslpath to do WSL<->Windows path conversions. [GH 522, 1243, 1834, 2327, et al.]
wslpath usage:
-a force result to absolute path format
-u translate from a Windows path to a WSL path (default)
-w translate from a WSL path to a Windows path
-m translate from a WSL path to a Windows path, with ‘/’ instead of ‘\\’
EX: wslpath ‘c:\users’
Console
- No fixes.
LTP Results:
Testing in progress.
17040
Build 17040
For general Windows information on build 17040 visit the Windows Blog.
Fixed
WSL
- No fixes since 17035.
Console
- No fixes since 17035.
LTP Results:
Testing in progress.
17035
Build 17035
For general Windows information on build 17035 visit the Windows Blog.
Fixed
WSL
- Accessing files on DrvFs could occasionally fail with EINVAL. [GH 2448]
Console
- Some color loss when inserting/deleting lines in VT mode.
LTP Results:
Testing in progress.
17025
Build 17025
For general Windows information on build 17025 visit the Windows Blog.
Fixed
WSL
- Start initial processes in a new foreground process group [GH 1653, 2510].
- SIGHUP delivery fixes [GH 2496].
- Generate default virtual bridge name if none provided [GH 2497].
- Implement /proc/sys/kernel/random/boot_id [GH 2518].
- More interop stdout/stderr pipe fixes.
- Stub syncfs system call.
Console
- Fix input VT translation for third party consoles [GH 111]
LTP Results:
Testing in progress.
17017
Build 17017
For general Windows information on build 17017 visit the Windows Blog.
Fixed
WSL
- Ignore empty ELF program headers [GH 330].
- Allow LxssManager to create WSL instances for non-interactive users (ssh and scheduled task support) [GH 777, 1602].
- Support WSL->Win32->WSL ("inception") scenarios [GH 1228].
- Limited support for termination of console apps invoked via interop [GH 1614].
- Support mount options for devpts [GH 1948].
- Ptrace blocking child startup [GH 2333].
- EPOLLET missing some events [GH 2462].
- Return more data for PTRACE_GETSIGINFO.
- Getdents with lseek gives incorrect results.
- Fix some Win32 interop app hangs, waiting for input on a pipe that has no more data.
- O_ASYNC support for tty/pty files.
- Additional improvements and bug fixes
Console
- No Console related changes in this release.
LTP Results:
Testing in progress.