Given that Microsoft are going to "continuous deployment" with Win10, I think they ought to have taken the opportunity to do one last breaking change, possibly behind an install-time option or compatibility layer: ditch the CP/M legacy.
That is, change the path separator to '/', ditch the drive letters, and the magic file names like CON, and the 8.3 names.
I believe that the Windows API supports '/' as a path separator and that it's user mode apps that tend not to. I can't find a good citation for that, though.
Real bummer that you have to specify the drive letter. (At least on Win7, where I just tried it.)
The behavior is kind of interesting for 'dir' at least:
E:>dir "/"
Directory of \\
File Not Found
E:>dir \\
The filename, directory name, or volume label syntax is incorrect.
Same result for «dir "//"».
(For those not experienced with the Windows command prompt, seeing "Directory of \\" is unexpected, and seeing it means that something interesting must be going on.)
I vaguely remember something about MS coders already using / to delineate arguments and \ for file paths; when they realized UNIX used \ for that function and they'd have to interoperate over a network, it was already too late.
MS-DOS 1.0 (which did not support directories at all) was already
using / to introduce command-line options. It took this usage
of / from CP/M, which took it from VMS.
“File I/O functions in the Windows API convert "/" to "\" as part of converting the name to an NT-style name, except when using the "\\?\" prefix as detailed in the following sections.”
I was thinking of the special device names, unicode and length handling depending on whether you use \\?\ – that's the best way to write safe code except when it isn't:
“Many but not all file I/O APIs support "\\?\"; you should look at the reference topic for each API to be sure.”
I'd expect that this will happen for Metro apps first – those are all modern and since most of them are supposed to run on e.g. ARM anyway legacy code compatibility matters considerably less.
I'd be surprised if they changed the path separator but the device filenames and FAT-compatible short names seem worth doing for security alone.
That is, change the path separator to '/', ditch the drive letters, and the magic file names like CON, and the 8.3 names.
It sounds like a huge breaking change but code that is already using the shell path functions https://msdn.microsoft.com/en-us/library/windows/desktop/bb7... would work transparently.