Commit Graph

13406 Commits

Author SHA1 Message Date
swift-ci
0d955da8e6 Merge pull request #24397 from ravikandhadai/consteval-string-append-changes 2019-05-01 16:23:35 -07:00
Keita Nonaka
0613cd3e6b Merge remote-tracking branch 'origin' into fix-build-warnings 2019-05-01 19:10:31 -04:00
Ravi Kandhadai
37f00edabc [os_log][stdlib-private] Refactor implementation and add optimization
attributes to the new os log APIs based on string interpolation so
that it can be optimized by the new OSLogOptimization compiler pass.
2019-05-01 15:42:37 -07:00
Mike Ash
7506e9c4f8 [Stdlib] Make the SwiftNativeNSXXXBase classes gracefully handle being decoded with NSKeyedUnarchiver.
These would never be decoded in normal use, but it's possible to construct an archive that will attempt to decode them. Without this override, that throws an exception or worse.

rdar://problem/48429185
2019-05-01 10:04:14 -04:00
Saleem Abdulrasool
2e7c328077 Merge pull request #24168 from xiaobai/sink_component_arg
[CMake] Modify swift_install_in_component to support cmake install components
2019-04-30 21:06:32 -07:00
Ravi Kandhadai
a7b7db7854 [Constant Evaluator] Move "string.append" semantics attribute from
`String.+=` function to `String.append` function, and use a new
semantics attribute for String.+=.

Teach the constant evaluator about `String.Append` instead of `String.+=`.
2019-04-30 14:26:06 -07:00
swift-ci
59a11983bc Merge pull request #24286 from drodriguez/android-glibc-modulemap 2019-04-30 13:02:43 -07:00
simon gladman
a55641a1b2 [vImage] Don't Infer Pixel Size in Buffer Copy
A buffer's `rowBytes` doesn't have a direct relationship with its `height`, so `rowBytes / Int(width)` isn't a good way to calculate pixel size. To resolve this, I've added `pixelSize` as a parameter to `vImage_Buffer.copy`.
2019-04-30 17:50:10 +01:00
David Smith
b6d0362204 Merge pull request #24289 from Catfish-Man/bulk-discount
SR-10555 foreignCopyUTF8 should do bulk access
2019-04-29 22:17:29 -07:00
Jordan Rose
d20a7ca64e [CMake] Switch to building the overlays in Swift 5 mode (#24350)
Now that that's stabilized, we don't have to keep them in Swift 4 mode
any longer. (Arguably we don't need the CMake variable at all, but it
may be useful again in the future.)

rdar://problem/49040980
2019-04-29 17:55:20 -07:00
Ross Bayer
dfb2d31e74 Rename the LIBRARY_INSTALL_NAME_DIR argument in add_swift_target_library to DARWIN_INSTALL_NAME_DIR which better explains that this argument only controls the install_name_dir for Darwin platforms. 2019-04-29 16:46:09 -07:00
Ross Bayer
b855119fbe Added a new CMake cache variable to control the private standard library install_name_dir. Those libraries are not going to be installed in /usr/lib/swift and thus need to be controlled via a separate mechanism. 2019-04-29 16:46:09 -07:00
David Smith
fd0d4d858e SR-10555 foreignCopyUTF8 should do bulk access 2019-04-29 16:23:55 -07:00
Stephen Canon
d2f695935f Add availability information to the new Math function protocols (#24187)
* Add availability information to the new Math function protocols

The protocols ElementaryFunctions, RealFunctions, and Real are new in Swift 5.1 and accordingly need to have availability attached to them for platforms that are ABI-stable. The actual implementation hooks (static functions) are unconditionally defined on scalar types and marked @_alwaysEmitIntoClient, so they are available even when targeting older library versions, but the protocols themselves, and anything defined in terms of them (the global functions and the SIMD extensions) is only available when targeting library versions that have the new protocols.

* Additionally provide concrete implementations of signGamma for each stdlib-builtin floating-point type.

* Remove Real[Functions] protocols pending re-review

Temporarily pull these back so we can make minor tweaks to the design and get a re-review on SE.
2019-04-29 17:39:33 -04:00
Joe Groff
9c6bc9ccd7 Runtime: Generalize TypeMetadataRecords to non-type contexts.
We could introduce non-nominal-type context descriptors, such as those for opaque declarations,
which are also interesting to be able to look up for reflection or remote purposes. This should be
a backward compatible change with old runtimes, which always ignore any context descriptor kind
they don't know about.
2019-04-29 11:30:11 -07:00
Karoy Lorentey
d9c166fdb9 Merge pull request #23832 from lorentey/foundation-hashing
[Foundation] Modernize hashing in Foundation's Swift-only types
2019-04-26 14:59:13 -07:00
Ben Cohen
1096179aaa Merge pull request #24186 from AnthonyLatsis/fix-reversed-index-alias
Stdlib: Fix ReversedIndex compatibility alias
2019-04-26 14:43:55 -07:00
Michael Ilseman
102a3a816a Merge pull request #24198 from troughton/floating-point-parsing-utf8
[stdlib] Use String’s underlying UTF-8 view for Float parsing
2019-04-26 13:28:49 -07:00
Saleem Abdulrasool
f88be05394 Merge pull request #24240 from compnerd/bridge-to-terabithia
WIP: bridge BOOL to Bool
2019-04-26 11:13:41 -07:00
Arnold Schwaighofer
54cb9dfe8f Merge pull request #24278 from aschwaighofer/initialize_extrainhabitantcount_single_case_enum
Initialize the extraInhabitantCount field of single case enums
2019-04-26 07:27:35 -07:00
Stephen Canon
ba0888df5b Really remove static min and max on simd. One slipped through. (#24283) 2019-04-26 07:41:49 -04:00
Saleem Abdulrasool
83b290438c Windows: bridge BOOL to Bool
This allows the conversion of the Windows `BOOL` type to be converted to
`Bool` implicitly.  The implicit bridging allows for a more ergonomic
use of the native Windows APIs in Swift.

Due to the ambiguity between the Objective C `BOOL` and the Windows
`BOOL`, we must manually map the `BOOL` type to the appropriate type.
This required lifting the mapping entry for `ObjCBool` from the mapped
types XMACRO definition into the inline definition in the importer.

Take the opportunity to simplify the mapping code.

Adjust the standard library usage of the `BOOL` type which is now
eclipsed by the new `WindowsBool` type, preferring to use `Bool`
whenever possible.

Thanks to Jordan Rose for the suggestion to do this and a couple of
hints along the way.
2019-04-25 17:52:08 -07:00
Steve (Numerics) Canon
1fbf0d2b92 Slice should only conform to AB when the Base conforms to AB. 2019-04-25 20:25:29 -04:00
Daniel Rodríguez Troitiño
73fd7d6551 [android] Add missing POSIX/Linux headers to Android build.
Reviewed the cases of Glibc where branching occurred and checked the
skipped headers against the Android NDK sysroot, and added the Android
check in the right places. This will give access to a lot more
functions from libc.
2019-04-25 13:46:40 -07:00
Arnold Schwaighofer
50143048ee Initialize the extraInhabitantCount field of single case enums
rdar://49786768
2019-04-25 12:33:05 -07:00
Stephen Canon
9850150c91 Restore elementwise min/max on SIMD, with explicit naming. (#24136)
* Restore elementwise min/max on SIMD, but as statics instead of free functions.

Having these as free functions causes expression too complex issues due to overload vis-a-vis min<Collection>. There are (at least) three plausible solutions:

1. Fix the typechecker. This is infeasable in the short term; or more precisely, we do not know how much work is involved.

2. Give these operations different names. Candidates discussed with core team include "pointwiseMin", "elementwiseMin", "lanewiseMin"; these all suffer from the flaw that when someone writes "min" in a SIMD context, they are essentially always looking for either the horizontal minimum (reduction) on a single vector or--more often--the lanewise minimum of two vectors (this operation). It would be odd to give the operation that people actually want the unnecessarily verbose name.

3. Make these operations static; this is, in effect, a different name, but it's one which frequently allows eliding the qualifier:

  let x = v + .min(v, w)

This isn't perfect; you will still need to spell out SIMD4.min( ) fairly often, but that's more concise than any of the proposed alternatives, and at least allows elision some of the time. Also, if you squint, you can pretend that the "." prefix is like ".<" and ".&" and indicates lanewise operation.
2019-04-25 14:52:03 -04:00
Nate Cook
3be8321675 [stdlib] Fix the example in LazySequenceProtocol docs.
I'm not sure this code ever worked, but this new version does. Also
includes some style revisions to the surrounding text.
2019-04-25 10:39:24 -05:00
simon gladman
5936a04510 [Accelerate] [vImage] Swift Overlays (#23592)
* Accelerate vImage Swift Overlays

A suite of functions, enumerations, and option sets to make working with vImage in Swift simpler.

* vImage_Buffer - new initializers to instantiate and initialize buffers with a single function call.
* vImage_Buffer - new functions to copy buffers and create CGImage instances from contents.
* vImage_CGImageFormat - new initializers.
* vImage_CGImageFormat - new equivalence operator.
* vImageConverter - methods to wrap free functions.
* vImageConverter - new make and convert functions.
* vImageCVImageFormat - new make functions.
* vImageCVImageFormat - methods to wrap free functions.
* vImage_Error - errorDescription function.
* vImage flags as an option set.

* Add new methods for generating CV -> CG and CG -> CV converters.

* update comments: `height` and `width` to `size`.

* `vImage_CGImageFormat.componentCount` should be `Int`.

* `vImage_CGImageFormat.componentCount` should be `Int`

* Move `self.init()` to after the size check for kvImageNoAllocate init.

* Buffer initializers to width and height rather than size.

* change vImage_CGImageFormat lightweight initializer to accept Int for `bitsPerComponent` and `bitsPerPixel`.

* Flesh out docs for vImage_Buffer.size

* Remove faux initializer in favor of new static function: `preferredAlignmentAndRowBytes`.

* Change functions to use proper error handling rather than inout error codes.

* Removed `flags` from basic init.

The only real flag to pass here is print diagnostics to console, and I now throw proper errors.

* Tests to check error throwing for buffer copy.

* remove unnecessary import, add missing docs.

* Add comments to error enums.

* Fix bug creating string from format code.

* Make `vImageCVImageFormat.formatCode` a `UInt32`.

* Remove equivalence operator from `CGImageFormat`.
2019-04-25 08:40:45 -04:00
fischertony
eff8a789fc Stdlib: Fix ReversedIndex compatibility alias 2019-04-25 01:39:56 +03:00
Mike Ash
0c2c0eabe5 [RemoteMirror] Rearrange #includes to fix warnings generated from the addition of __weak_import__ to classIsSwiftMask. 2019-04-24 12:56:17 -04:00
Itai Ferber
a6fbc40e76 Merge pull request #24215 from ianpartridge/string-data-conversion-perf
[String] [Foundation] perf: UTF8 String -> Data
2019-04-24 09:25:17 -07:00
Mike Ash
9de4f60061 Merge pull request #24216 from mikeash/remote-mirror-weak-link-swift_reflection_classIsSwiftMask
[RemoteMirror] Mark swift_reflection_classIsSwiftMask as a weak import.
2019-04-24 12:02:18 -04:00
Steve (Numerics) Canon
d387ea6d93 Put a bird^Wavailability on it. 2019-04-23 20:38:40 -04:00
Steve (Numerics) Canon
91bc3595b3 Add missing availability information to enums defined in the vDSP overlay. 2019-04-23 20:23:05 -04:00
swift-ci
c34c3e373e Merge pull request #23732 from Catfish-Man/pointernt 2019-04-23 14:58:34 -07:00
David Smith
96a93261d0 Use the Swift runtime's (faster) class check in the stdlib instead of shimming object_getClass() 2019-04-23 13:05:25 -07:00
Stephen Canon
a0676e02ab [Accelerate] [vDSP] DFT, FFT, DCT, and Biquad (#24207)
* Swift overlay to vDSP cascaded biquad IIR filter.

* update comment in test

* Swift overlay to vDSP Discrete Cosine Transform

* Swift Overlays to vDSP Fast Fourier Transform and Discrete Fourier Transform

* Tests for DFT and FFT

* Some refactoring and begin documentation.

* Swift overlays to FFT and DFT operations.

* Expand docs.
* Implement `vDSP_destroy_fftsetup` and `vDSP_destroy_fftsetupD`

* Refactor Tests

* Refactor Tests

* Provide transform function that returns the result. Refactoring: parameter names more consistent with other vDSP operations, push `fileprivate` symbols to bottom of file.

* Add apply() function that returns the result.

* Added a version of DFT transform that returns the result.

* update some DFT comments

* Remove FFT overlays from this branch to separate DFT and FFT pull requests.

* [Accelerate] [vDSP] Swift Overlays to FFT Operations

This PR contains Swift overlays to simplify performing 1D and 2D fast Fourier transforms on single- and double-precision data.

This PR includes a subset of the operations (e.g. vDSP_fft_zrop for FFT). My plan is to add the additional operations (e.g. multiple signals, in-place operations, etc.) in a subsequent PR once this is approved.

cc: @moiseev @airspeedswift @stephentyrone

* Composite Branch

Contains FFT, DFT, DCT, and Biquad branches.
2019-04-23 12:31:18 -04:00
Mike Ash
8b0ab1cc49 [RemoteMirror] Mark swift_reflection_classIsSwiftMask as a weak import.
Also have swift-reflection-test check if the symbol exists. This allows swift-reflection-test to work with older Remote Mirror dylibs that don't have it.

rdar://problem/50030805
2019-04-23 11:37:37 -04:00
Ian Partridge
3425f4fb4a [String] [Foundation] perf: UTF8 String -> Data
Currently, `str.data(using:allowLossyConversion)` always bridges via
`NSString`.

As `String` is now natively UTF8 we can fastpath this conversion in the
case where the user requests UTF8 encoding.

A benchmark for this was previously added in #22648.
2019-04-23 10:43:14 +01:00
Thomas Roughton
4c2df287a7 [stdlib] Use String’s underlying UTF-8 view for Float parsing 2019-04-23 10:46:19 +12:00
Stephen Canon
c90299da15 Fix a case where vDSP is missing a cast (#24197)
* Add missing cast to new vDSP_FIR overlay.

* Use macOS instead of OSX in availability annotations.

* Reorder Accelerate/CMakeLists.txt alphabetically.
2019-04-21 17:30:14 -04:00
Slava Pestov
ec1c2ee899 Merge pull request #24188 from slavapestov/class-stubs-test-fix
Runtime: Fix condition for class stubs support
2019-04-20 21:30:11 -04:00
Saleem Abdulrasool
5d2be1acc7 Windows: expose ConsoleAPI
This exposes the Windows 10 ConsoleAPI from the module.
2019-04-20 17:02:09 -07:00
Slava Pestov
bc4d70c12a Runtime: Fix condition for class stubs support
Fixes <rdar://problem/50068190>.
2019-04-20 18:14:09 -04:00
Simon Gladman
3c813faa01 Composite Branch of vDSP Swift Overlay Work
Contains the following:

	[Accelerate] [vDSP] Swift Overlays to Sliding Window Summation Operations
	[Accelerate] [vDSP] Swift Overlays to Linear Interpolation Operations
	[Accelerate] [vDSP] Swift Overlays to Complex Vector Operations
	[Accelerate] [vDSP] Swift overlays to 1D and 2D convolution operations.
	[Accelerate] [vDSP] Swift overlays to dot product and distance functions.
	[Accelerate] [vDSP] Swift overlays to `vDSP_desamp` and `vDSP_deq22`.
	[Accelerate] [vDSP] Vector Reduction Functions
	[Accelerate] [vDSP] Elementwise Vector-Vector and Vector-Scalar Arithmetic
	[Accelerate] [vDSP] Miscellaneous Conversion Functions
	[Accelerate] [vDSP] Polynomial Evaluation Functions
	[Accelerate] [vDSP] Clipping, Limit, and Threshold Functions
	[Accelerate] [vDSP] Fill, Clear, and Generation Functions
	[Accelerate] [vDSP] Integration Functions
	[Accelerate] [vDSP] Vector Type Conversion Functions
	[Accelerate] [vDSP] Swift overlays to Vector-Vector Extrema and Single-Vector Operations
2019-04-20 10:59:03 +01:00
Simon Gladman
7be3ed7d96 Merge remote-tracking branch 'origin/accelerate-vDSP-singleVectorOperations' into Accelerate_Swift-vDSP-Overlays 2019-04-20 10:03:32 +01:00
Simon Gladman
48abf32851 Merge branch 'accelerate-vDSP-conversion' into Accelerate_Swift-vDSP-Overlays 2019-04-20 10:02:01 +01:00
Simon Gladman
ac4b5b9e92 Merge remote-tracking branch 'origin/accelerate-vDSP-integration' into Accelerate_Swift-vDSP-Overlays 2019-04-20 09:50:55 +01:00
Simon Gladman
8b76ff5124 Merge branch 'accelerate-vDSP-fillClearGenerate' into Accelerate_Swift-vDSP-Overlays 2019-04-20 09:49:59 +01:00
Simon Gladman
8571214ae3 Merge remote-tracking branch 'origin/accelerate-vDSP-clippingLimitThreshold' into Accelerate_Swift-vDSP-Overlays 2019-04-20 09:48:44 +01:00