Commit Graph

30 Commits

Author SHA1 Message Date
Joe Groff
f45abc0122 KeyPaths: Move layout constants to a shims header for sharing with compiler/runtime. 2017-04-04 11:31:15 -07:00
Philippe Hausler
6c26b80e6e [Foundation] Rework the backing storage for CharacterSet to be more performant and bridge correctly to objective-c and CF
Some cases of using isSuperset can cause crashes, this was caused by improper subclassing callouts; this pr resolves those failures (and provides unit tests for that case)
The cases where the bridge was traversed too much now only causes a single bridge out call (without needing to reallocate or thrash retain/release)
String.components(separatedBy: CharacterSet) should be considerably faster now not only for more apporpriate bridging calls but also no longer needing to bridge arrays back and forth.

Resolves the following issues:
rdar://problem/17281998
rdar://problem/26611771
rdar://problem/29738989
2017-03-31 11:06:38 -07:00
Hugh Bellamy
bd8d214383 Copy entire swiftShims directory to avoid very long command line paths that break the Windows build 2017-03-16 22:09:35 +07:00
Philippe Hausler
dc783c064c [Foundation] Remove @_silgen thunks and replace them with shims instead
This avoids indirection by making calls directly to the C implementations which prevents potentials of mismatched intent or changes of calling convention of @_silgen. The added benefit is that all of the shims in this case are no longer visible symbols (anyone using them was not authorized out side of the Foundation overlay). Also the callout methods in the headers now all share similar naming shcemes for easier refactoring and searching in the style of __NS<class><action> style. The previous compiled C/Objective-C source files were built with MRR the new headers MUST be ARC by Swift import rules.

The one caveat is that certain functions MUST avoid the bridge case (since they are part of the bridging code-paths and that would incur a recursive potential) which have the types erased up to NSObject * via the macro NS_NON_BRIDGED.

The remaining @_silgen declarations are either swift functions exposed externally to the rest of Swift’s runtime or are included in NSNumber.gyb which the Foundation team has other plans for removing those @_silgen functions at a later date and Data.swift has one external function left with @_silgen which is blocked by a bug in the compiler which seems to improperly import that particular method as an inline c function.
2017-03-06 09:59:37 -08:00
Hugh Bellamy
888afe139c Fix creating symlinks on Windows 2016-12-27 14:55:05 +00:00
Jordan Rose
7d61a5e6a2 [SDK] Use an extra shims header to remove _silgen_name from Dispatch.
We still have a bunch of redeclarations of Dispatch functions to avoid
the automatic bridging of dispatch_data_t and dispatch_block_t, but
mostly this is a vast reduction in complexity (and increase in safety).
2016-12-01 16:06:15 -08:00
Jordan Rose
1589ca1b8d [SDK] Use an extra shims header to remove _silgen_name from the XPC overlay. 2016-10-15 14:59:29 -07:00
Jordan Rose
26e24f7bee [SDK] Use an extra shim header to remove _silgen_name from SafariServices. 2016-10-15 14:59:28 -07:00
Jordan Rose
cb59b94135 [SDK] Use an extra shim header to eliminate _silgen_name from ObjectiveC. 2016-10-15 14:59:28 -07:00
Jordan Rose
244cf50c0c [SDK] Use an extra shims header to remove _silgen_name from the os overlay. 2016-10-15 14:59:27 -07:00
Jordan Rose
2e560b0319 [SDK] Use an extra shim header to remove _silgen_name from XCTest. 2016-10-15 14:59:27 -07:00
Brian Gesiak
a6a072f38f [SwiftShims] Improve CMake Clang headers error
When Clang headers could not be found, print all the locations that
were searched.
2016-10-03 17:34:33 -04:00
Chris Bieneman
58ca217e8d [CMake] Fix bad dependency in symlink_clang_headers
The problem here is a bit complicated. The symlink_clang_headers target creates two symlinks to clang's headers, one under the build directory at lib/swift/clang, and the other under a temporary path.

The one under the temporary path is a bad symlink, and it is only created during the build so that it can be installed. It isn't actually used by the build. Ninja treats the bad symlink as a non-existing file, and since the build rule that creates it has the restat property on it this results in the commands to symlink the clang headers directory running over and over and over again during the build.

This patch prevents that by not generating the bad symlink during the build. Instead we generate it at install time using the LLVMInstallSymlink script that is vended as part of LLVM's distribution.
2016-09-27 15:29:29 -07:00
Dmitri Gribenko
e8e8b35610 stdlib: use SipHash-1-3 for string hashing on non-ObjC platforms
Part of rdar://problem/24109692
2016-09-06 20:41:03 -07:00
Dmitri Gribenko
e4aaba9ba6 stdlib: declare functions for assertion reporting in SwiftShims instead of using @_silgen_name 2016-09-05 22:47:24 -07:00
Matt Wright
8ac413a0b5 [libdispatch] Post-beta API changes and bug fixes
* Fix DispatchSourceSignal initialisation such that it no longer
    registers for the wrong source type.

    * Remove (group:) option from DispatchWorkItem, introduce group
    options to `.async` methods that accept DispatchWorkItem.

    * Rename `DispatchSourceType` to `DispatchSourceProtocol`

    * Rework DispatchQueue attributes and flags into a less confusing
    approach.

    * Fixes:

	SR-1817, SR-1771, SR-1770, SR-1769

	<rdar://problem/26725156> <rdar://problem/26873917>
	<rdar://problem/26918843> <rdar://problem/26810149>
	<rdar://problem/27117023> <rdar://problem/27121422>
	<rdar://problem/27236887> <rdar://problem/27337555>
2016-07-18 13:22:23 -07:00
Robert Widmann
567ea9a297 Rename map to modulemap 2016-07-15 16:07:28 -07:00
Michael Gottesman
770a58b4ae [cmake] Use the new LLVM_BUILD_TYPE variable provided by LLVMConfig.cmake in order to find the clang headers when compiling with Xcode. 2016-06-27 18:19:04 -07:00
Joe Groff
f7291b21ec Runtime: Build with -fvisibility=hidden.
...and explicitly mark symbols we export, either for use by executables or for runtime-stdlib interaction. Until the stdlib supports resilience we have to allow programs to link to these SPI symbols.
2016-02-08 08:06:02 -08:00
Dmitri Gribenko
9bedc1cffd cmake: remove debugging 'message()' 2015-12-11 19:27:35 -07:00
Argyrios Kyrtzidis
a33319b30d [CMake] Fix "Clang headers were not found" cmake error in a non-standalone build. 2015-11-30 10:32:26 -08:00
John McCall
5203a688f6 Pick up LLVM_PACKAGE_VERSION correctly in unified builds. 2015-11-17 12:33:17 -08:00
John McCall
a653f7120e Quote cmake variable in case it isn't properly set. 2015-11-17 11:48:03 -08:00
Jordan Rose
514a9bc2e4 [CMake] Really fix the issue from rdar://problem/23570075.
ebcadcfc was close but not quite correct.
2015-11-17 11:15:38 -08:00
Jordan Rose
ebcadcfc38 [CMake] Fix install of Swift's copy of Clang headers.
This is a speculative fix for rdar://problem/23570075, as fallout from
e6bdcbcc. I fixed the build directory, but not the install components.
2015-11-17 08:55:41 -08:00
Jordan Rose
e6bdcbcc7c [ClangImporter] Drop the version from Clang's resource directory.
Background: Clang has a set of base headers distributed with the compiler
that contain things like vector operations, stddef.h, and tgmath.h.
Swift also needs these headers in order to import C and Objective-C (not
really a surprise), so we symlink to them from lib/swift/clang/. When we
build installable packages, we actually copy them in.

Now the tricky part. Clang's headers are actually at a path like
"include/clang/3.6.0/include/tgmath.h". That "3.6.0" is the Clang version,
which allows multiple Clangs to be installed on a single system. Swift
currently links to the top-level directory, but of course it's only
guaranteed to work with a specific version of the Clang headers. So the
version number here is always the version of Clang we use to build Swift.

Rather than leave the (relatively meaningless) version number here, just
make the symlink point at the "3.6.0" directory rather than the "clang"
directory. This means Swift doesn't have to think about the version number
here at all.

rdar://problem/23223066
2015-11-13 14:43:23 -08:00
Jordan Rose
b78991913a [CMake] Remove the symlink to Xcode's arclite libraries.
With 877b51d, we'll find them using 'xcrun' if Swift isn't located next
to Clang.
2015-11-09 17:44:09 -08:00
Ben Langmuir
02ec8e63d8 Add an install component to install the clang builtin headers to lib/clang
In cases where our major version of clang is different than the
installed clang this allows us to install the builtin headers ourselves.
This should be used judiciously, since it installs to a path 'owned' by
clang.

Swift SVN r32696
2015-10-14 23:53:39 +00:00
Dmitri Hrybenko
153d95efc6 SwiftShims: don't redeclare libc functions
Clang importer thinks that SwiftShims is the primary module where they
live, and this confuses code completion.

rdar://22488333

Swift SVN r32218
2015-09-25 03:33:50 +00:00
Dmitri Hrybenko
350248dae5 Reorganize the directory structure under 'stdlib'
The standard library has grown significantly, and we need a new
directory structure that clearly reflects the role of the APIs, and
allows future growth.

See stdlib/{public,internal,private}/README.txt for more information.

Swift SVN r25876
2015-03-09 05:26:05 +00:00