Commit Graph

7762 Commits

Author SHA1 Message Date
Oscar Byström Ericsson
11c0231d20 FlattenSequence/distance(from:to:) enhancements.
I was looking through Swift's issues tab and found this issue (#57496), which points out the poor performance of `FlattenSequence/count`. The current `count` implementation calls `distance(from:to:)`, which iterates through the entire collection, so I thought I'd improve that method. The new version computes the distance as the sum of three parts, with a fast path when both indices belong to the same underlying collection. Note that it does this by calling either `count` or `distance(from:to:)` on each underlying collection, which makes `[repeatElement(0, count: Int.max)].joined().count` instant, for example.
2024-02-15 12:45:42 +01:00
Nate Chandler
5a2d1621ec [KeyPath] Restrict push and pop to BitwiseCopyable
Promotes the runtime isPOD check to a compile time constraint.
2024-02-14 13:02:09 -08:00
Nate Chandler
134fc4dfdd [stdlib] BitwiseCopyable storeBytes overload.
The new overload is constrained to BitwiseCopyable and so enjoys the use
of BitwiseCopyableArchetypeTypeInfo.
2024-02-14 13:02:09 -08:00
Erik Eckstein
75e2f363a0 embedded stdlib: make the ManagedBuffer initializer public in the embedded stdlib
Otherwise derived classes cannot be specialized.

Fixes a compile time error when using ManagedBuffer in embedded mode.
rdar://122414669
2024-02-14 09:51:43 +01:00
Alejandro Alonso
aadf4a13a2 Do a fast NFC check over the slice instead of guts 2024-02-08 10:50:03 -08:00
Alejandro Alonso
3923e2e621 Merge pull request #71443 from Azoy/fix-specialize-function
[stdlib] Fix _specialize implementation
2024-02-07 15:46:38 -08:00
Guillaume Lessard
71640be109 Merge pull request #71363 from glessard/rdar115296219
[stdlib] properly rename validatingUTF8 to validatingCString
2024-02-07 14:37:23 -08:00
Alejandro Alonso
71fccd1696 Fix _specialize implementation 2024-02-07 11:58:57 -08:00
Doug Gregor
e4d6bee153 Merge pull request #71400 from DougGregor/will-throw-typed
Implement `swift_willThrow` variant for typed throws.
2024-02-06 03:22:22 -08:00
Kuba (Brecka) Mracek
ea6295e47f Merge pull request #71392 from kubamracek/revert-embedded-defines
Revert "Merge pull request #71278 from kubamracek/embedded-no-mach-defines"
2024-02-05 17:48:40 -08:00
Doug Gregor
3fa07a0e7a Implement swift_willThrow variant for typed throws.
`swift_willThrow` is called with an error right before it is thrown.
This existing entrypoint requires an already-boxed error existential;
with typed errors, we don't have the error existential on hand, so we
would need to allocate the box to throw a typed error. That's not okay.

Introduce a new `swift_willThrowTypedImpl` entry point into the runtime
that will first check for the presence of an error handler and, if one
is present, box the error to provide to the error handler. This
maintains the no-allocations path for typed errors while still
allowing existing error handlers to work.

This new entrypoint isn't available on older Swift runtimes, so create
a back-deployable shim called by the compiler. On new-enough platforms,
this will call through to `swift_willThrowTypedImpl`. On older
platforms, we drop the error and don't call the registered will-throw
handler at all. This is a compromise that avoids boxing when throwing
typed errors, at the cost of a slightly different experience for this
new feature on older runtimes.

Fixes rdar://119828459.
2024-02-05 15:06:55 -08:00
Kuba Mracek
dba8d5d3a0 Revert "Merge pull request #71278 from kubamracek/embedded-no-mach-defines"
This reverts commit 21eddf0b1a, reversing
changes made to e2d516f3c9.
2024-02-05 09:05:22 -08:00
Guillaume Lessard
da5b41a0f8 [stdlib] properly rename validatingUTF8 to validatingCString
https://github.com/apple/swift/issues/68433 was fixed
in commit d19f082665.
2024-02-03 16:19:04 -08:00
Oscar Byström Ericsson
d7b3d3e319 Minor advanced(by:) enhancement. 2024-02-03 15:18:02 +01:00
Oscar Byström Ericsson
17187e38f5 This patch fixes two unnecessary traps in BinaryInteger's advanced(to:) method.
- `Int8.min.advanced(by: 128)`, etc.
- `UInt.max.advanced(by: Int.min)`, etc.
2024-02-03 13:56:33 +01:00
Kavon Farvardin
b67ace7de1 Merge pull request #71137 from kavon/ncgenerics-enable-stdlib-v1
NCGenerics: synthesize Copyable/Escapable decls
2024-02-02 21:16:14 -08:00
Kuba (Brecka) Mracek
21eddf0b1a Merge pull request #71278 from kubamracek/embedded-no-mach-defines
[embedded] Implicitly define __APPLE__ and __MACH__ when on -apple-none triples
2024-02-02 19:30:56 -08:00
Kavon Farvardin
3908c8182d NCGenerics: sometimes synth. Copyable/Escapable
When the Swift module is not available, we'll synthesize the
Copyable/Escapable decls into the Builtin module.

In the future, it might be nice to just do this always, and define
typealiases for those types in the stdlib to refer to the ones in the
builtin module.
2024-02-02 18:47:03 -08:00
Guillaume Lessard
0ec6397053 Merge pull request #71224 from glessard/rdar121395821
[stdlib] Improve documentation for the various "String from C-string" initializers
2024-02-02 12:17:50 -08:00
Guillaume Lessard
114f235d17 Merge pull request #71167 from vanvoorden/vanvoorden/inclusive-language
[Inclusive Language][Comments][Documentation] migrate "sanity" checks to "soundness" checks
2024-02-02 10:27:34 -08:00
Guillaume Lessard
e10899eff7 [stdlib] tweak deprecation message 2024-02-01 15:34:18 -08:00
Guillaume Lessard
11485e5026 [doc] fix note visibility for docc-generated pages 2024-02-01 15:34:18 -08:00
Guillaume Lessard
a74b5b7b3c [stdlib] make parameter label the same as in peer functions
These functions were the odd ones out in not using `encoding` for this parameter label. Harmonizing this term will also make the documentation more consistent.
2024-02-01 15:34:18 -08:00
Guillaume Lessard
048a948f12 [stdlib] document some deprecated initializers 2024-02-01 15:34:18 -08:00
Guillaume Lessard
e3ede3ad3a [stdlib] improve phrasing in some doc-comments 2024-02-01 15:34:18 -08:00
Guillaume Lessard
ae9892d46b [stdlib] remove useless annotations 2024-02-01 15:34:18 -08:00
Guillaume Lessard
047092a0a5 [stdlib] mark deprecated in swift 6, point to better API 2024-02-01 15:34:18 -08:00
Guillaume Lessard
4c00395b66 [stdlib] fix preconditionFailure message 2024-02-01 15:34:18 -08:00
Nate Chandler
367d71d74f Revert "[stdlib] Uncheck pointers' conf to BitwiseCopyable"
This reverts commit 4dc9713a7a.
2024-01-31 17:11:54 -08:00
Kuba Mracek
e22aedbcc3 [embedded] Implicitly define __APPLE__ and __MACH__ when on -apple-none triples 2024-01-31 09:22:31 -08:00
nate-chandler
a43faf89c8 Merge pull request #71242 from nate-chandler/bitwise-copyable/not-for-unchecked
[BitwiseCopyable] Don't derive on @unchecked field
2024-01-31 05:55:38 -08:00
Nate Chandler
c8119e3c01 [stdlib] FixedWidthInteger is BitwiseCopyable. 2024-01-30 14:38:07 -08:00
Nate Chandler
4c5d1006c4 [stdlib] SIMD extends BitwiseCopyable. 2024-01-30 14:38:07 -08:00
Nate Chandler
4dc9713a7a [stdlib] Uncheck pointers' conf to BitwiseCopyable
The pitch calls for such types to obstruct inference of _BitwiseCopyable
in aggregates containing them.
2024-01-30 14:38:07 -08:00
Kuba (Brecka) Mracek
0655578718 Merge pull request #71226 from kubamracek/embedded-cdecls-runtime
[embedded] Fix calling convention on embedded runtime APIs (switch @_silgen_name for @_cdecl)
2024-01-30 09:24:17 -08:00
Kuba Mracek
6383d05ea1 [embedded] Fix calling convention on embedded runtime APIs (switch @_silgen_name for @_cdecl) 2024-01-29 15:37:46 -08:00
Doug Gregor
da08b96371 Allow the main function for @main types to use typed throws
Allow the use of typed throws for the main functions of `@main` types,
and thread the thrown error through to a new entry point in the library,
`_errorInMainTyped`, which is generic in the thrown error type.

Fixes rdar://121603043.
2024-01-28 11:21:00 -08:00
David Smith
0843891eb9 Switch to malloc_good_size instead of malloc_size (#70532)
Switch to malloc_good_size instead of malloc_size
2024-01-27 19:20:33 -08:00
Guillaume Lessard
6b328f9c07 [gardening] add a missing license header 2024-01-27 13:15:16 -08:00
Guillaume Lessard
384a66aa59 Merge pull request #71186 from apple/jgrynspan/121674502-fix-deprecation-of-validatingUTF8-cchar-array-overload
Fix the deprecation of `String.init(validatingUTF8: [CChar])`.
2024-01-26 17:27:54 -08:00
Max Desiatov
633d5bc45a Enable x86_64 and i686 ELF triples for embedded Swift (#70642)
This is just as useful for x86 bare metal as the already enabled `arm*-none-none-eabi` triples.
2024-01-26 21:39:17 +00:00
Jonathan Grynspan
3da7483c5f Fix the deprecation of String.init(validatingUTF8: [CChar]).
This PR changes the deprecation annotation of `String.init(validatingUTF8: [CChar])` to match that of `String.init(validatingUTF8: UnsafePointer<CChar>)`. Both have been given new, undeprecated, renamed replacements (`validatingCString:`).

Resolves rdar://121674502.
2024-01-26 13:40:27 -05:00
Rick van Voorden
f8ae46b3f3 [inclusive-language] changed sanity to soundness 2024-01-25 18:18:02 -08:00
Serena758
6151d4f23d changed sanity to soundness 2024-01-25 14:22:46 -08:00
Kavon Farvardin
b8cd7effeb Merge pull request #70866 from kavon/ncgenerics-stdlib-building-v4
Build Stdlib with Noncopyable Generics (Part 4)
2024-01-25 07:09:38 -08:00
Kuba (Brecka) Mracek
302e106e2d Merge pull request #70458 from kubamracek/embedded-random
[embedded] Make RNG APIs available on embedded Swift
2024-01-24 13:14:47 -08:00
Kavon Farvardin
25aa49be55 [NCGenerics] Sendable doesn't require Copyable 2024-01-23 22:42:38 -08:00
Kuba Mracek
2c30b0a0e2 [embedded] Resolve ptrauth crashes by signing HeapObjects's isa pointers in embedded Swift 2024-01-22 16:45:07 -08:00
Guillaume Lessard
50b83c8e69 Merge pull request #68423 from glessard/se0405-take2
[se-0405] rename `String.init(validatingUTF8:)`
2024-01-22 09:29:21 -08:00
Guillaume Lessard
d8c809c0ad Merge pull request #68419 from glessard/se0405-part1
[se-0405] Implement API additions
2024-01-22 09:27:27 -08:00