Our mangling did not encode if an Objective-C block was escaping or
not. This is not a huge problem in practice, but for debug info we
want type reconstruction to round-trip exactly. There was a previous
workaround to paper over this specific problem.
Remove the workaround, and add a new 'XL' mangling for escaping
blocks. Since we don't actually want to break ABI compatibility,
only use the new mangling in DWARF debug info.
Update build rules to use ICU 64.2. The CI is migrating to ICU 64.2 which is locally built to avoid spurious failures in the build due to download failures.
As suggested by DaveZ. This was posted by me back on the review for
SE-0111, but it's become a useful post to reference for why Swift's
function arguments aren't just a tuple (in the language or in the
compiler).
Fixes a crash in IRGen
TODO: also fix the demangler/remangler part of this mangling change.
Currently it's not a problem because we never demangle such a symbol (it's even not round-trip checked in Mangler::verify).
rdar://problem/50405691
CMake supports the notion of installation components. Right now we have some
custom code for supporting swift components. I think that for installation
purposes, it would be nice to use the CMake component system.
This should be a non-functional change. We should still only be generating
install rules for targets and files in components we want to install, and we
still use the install ninja target to install everything.
Clean up the Windows build steps to use `md` and `cd`, remove the unnecessary `pushd`, `popd`, directly invoke `ninja` rather than invoking it through `cmake`.
This is duplicated by the Linux rules. The Windows Subsystem for Linux is not a unique environment, it is an Ubuntu environment running with a bridge into the NT kernel. There is nothing to be done to support it, just follow the Linux rules. The Windows documentation has been updated to point users to the Linux section.
The windows port has come far enough along that we can now recommend building with MSVC on Windows. This provides better debugging, faster builds, and better overall results.