|
1 | 1 | # Embedded Swift -- Status |
2 | 2 |
|
3 | | -**⚠️ Embedded Swift is experimental. This document might be out of date with latest development.** |
4 | | - |
5 | | -**‼️ Use the latest downloadable 'Trunk Development' snapshot from swift.org to use Embedded Swift. Public releases of Swift do not yet support Embedded Swift.** |
6 | | - |
7 | | -For an introduction and motivation into Embedded Swift, please see "[A Vision for Embedded Swift](https://github.com/swiftlang/swift-evolution/blob/main/visions/embedded-swift.md)", a Swift Evolution document highlighting the main goals and approaches. |
8 | | - |
9 | | -## Embedded Swift Language Features |
10 | | - |
11 | | -| **Language Feature** | **Currently Supported In Embedded Swift** | |
12 | | -|-------------------------------------------------------|------------------------------------------------------------------------------------| |
13 | | -| *Anything not listed below* | Yes | |
14 | | -| Library Evolution (resilience) | No, intentionally unsupported long-term | |
15 | | -| Objective-C interoperability | No, intentionally unsupported long-term | |
16 | | -| Non-WMO builds | No, intentionally unsupported long-term (WMO should be used) | |
17 | | -| Existentials (values of protocol types) | Only class-bound existentials (for protocols derived from AnyObject) are supported | |
18 | | -| Any | No, currently disallowed | |
19 | | -| AnyObject | Yes | |
20 | | -| Metatypes | No, currently only allowed as unused arguments (type hints) | |
21 | | -| Untyped throwing | No, intentionally unsupported long-term (typed throwing should be used instead) | |
22 | | -| Weak references, unowned references | No | |
23 | | -| Non-final generic class methods | No, intentionally unsupported long-term, see <[Embedded Swift -- Non-final generic methods](NonFinalGenericMethods.md)>| |
24 | | -| Parameter packs (variadic generics) | No, not yet supported | |
25 | | - |
26 | | -## Embedded Standard Library Breakdown |
27 | | - |
28 | | -This status table describes which of the following standard library features can be used in Embedded Swift: |
29 | | - |
30 | | -| **Swift Standard Library Feature** | **Currently Supported In Embedded Swift?** | |
31 | | -|------------------------------------------------------------|-----------------------------------------------------| |
32 | | -| Array (dynamic heap-allocated container) | Yes | |
33 | | -| Array slices | Yes | |
34 | | -| assert, precondition, fatalError | Partial, only StaticStrings can be used as a failure message | |
35 | | -| Bool, Integer types, Float types | Yes | |
36 | | -| Codable, Encodable, Decodable | No | |
37 | | -| Collection + related protocols | Yes | |
38 | | -| Collection algorithms (sort, reverse) | Yes | |
39 | | -| CustomStringConvertible, CustomDebugStringConvertible | Yes, except those that require reflection (e.g. Array's .description) | |
40 | | -| Dictionary (dynamic heap-allocated container) | Yes | |
41 | | -| Floating-point conversion to string | No | |
42 | | -| Floating-point parsing | No | |
43 | | -| FixedWidthInteger + related protocols | Yes | |
44 | | -| Hashable, Equatable, Comparable protocols | Yes | |
45 | | -| InputStream, OutputStream | No | |
46 | | -| Integer conversion to string | Yes | |
47 | | -| Integer parsing | Yes | |
48 | | -| KeyPaths | Partial (only compile-time constant key paths to stored properties supported, only usable in MemoryLayout and UnsafePointer APIs) | |
49 | | -| Lazy collections | Yes | |
50 | | -| ManagedBuffer | Yes | |
51 | | -| Mirror (runtime reflection) | No, intentionally unsupported long-term | |
52 | | -| Objective-C bridging | No, intentionally unsupported long-term | |
53 | | -| Optional | Yes | |
54 | | -| print / debugPrint | Partial (only String, string interpolation, StaticStrings, integers, pointers and booleans, and custom types that are CustomStringConvertible) | |
55 | | -| Range, ClosedRange, Stride | Yes | |
56 | | -| Result | Yes | |
57 | | -| Set (dynamic heap-allocated container) | Yes | |
58 | | -| SIMD types | Yes | |
59 | | -| StaticString | Yes | |
60 | | -| String (dynamic) | Yes | |
61 | | -| String interpolations | Partial (only strings, integers, booleans, and custom types that are CustomStringConvertible can be interpolated) | |
62 | | -| Unicode | Yes | |
63 | | -| Unsafe\[Mutable\]\[Raw\]\[Buffer\]Pointer | Yes | |
64 | | -| VarArgs | No | |
65 | | - |
66 | | -## Non-stdlib Features |
67 | | - |
68 | | -This status table describes which of the following Swift features can be used in Embedded Swift: |
69 | | - |
70 | | -| **Swift Feature** | **Currently Supported In Embedded Swift?** | |
71 | | -|------------------------------------------------------------|-----------------------------------------------------| |
72 | | -| Synchronization module | Partial (only Atomic types, no Mutex) | |
73 | | -| Swift Concurrency | Partial, experimental (basics of actors and tasks work in single-threaded concurrency mode) | |
74 | | -| C interop | Yes | |
75 | | -| C++ interop | Yes | |
76 | | -| ObjC interop | No, intentionally unsupported long-term | |
77 | | -| Library Evolution | No, intentionally unsupported long-term | |
| 3 | +Embedded Swift documentation has moved to: [Swift.org](https://docs.swift.org/embedded/documentation/embedded). |
0 commit comments