You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _posts/2025-11-17-embedded-swift-improvements-coming-in-swift-6.3.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ These features and bug fixes are included in the upcoming [Swift 6.3](https://fo
16
16
17
17
### Printing floating point numbers
18
18
19
-
Previously, the `description` and `debugDescription` properties for floating-point types (`Float`, `Double`, etc.) were not available in the Embedded Swift standard library. With a new [all-Swift implementation](https://github.com/swiftlang/swift/pull/84826), you can use this with Embedded Swift.
19
+
Previously, the `description` and `debugDescription` properties for floating-point types (`Float`, `Double`, etc.) were not available in the Embedded Swift standard library. With a new [all-Swift implementation](https://github.com/swiftlang/swift/pull/84826), you can now use these with Embedded Swift.
20
20
21
21
### Embedded restriction diagnostics
22
22
@@ -134,7 +134,7 @@ The following example shows interpreting the address as the type `MyMessage`:
134
134
135
135
LLDB needs access to type layout information so it can display variables. Since Embedded Swift doesn't contain reflection metadata, the Swift compiler emits all the type layout information as DWARF debug info.
136
136
There have been several improvements to the Swift compiler's debug info output, such as support for type declarations nested inside an extension.
137
-
At the same time LLDB added support for nested generic type aliases in Embedded Swift.
137
+
At the same time, LLDB added support for nested generic type aliases in Embedded Swift.
138
138
These two improvements together make it possible to inspect many common standard library data types, such as `Dictionary` and `Array`, in Embedded Swift core dumps.
139
139
Previously these data types were only accessible via the expression evaluator, which requires a live process.
140
140
@@ -157,7 +157,7 @@ LLDB's support for producing backtraces after taking exceptions in armv7m has be
157
157
158
158
However this back trace would often be missing one or more frames before the start of the exception frame (`UsageFault_Handler` above).
159
159
160
-
Now, LLDB is able to walk back through exception frames into the standard program frames and produce a backtrace that contains the missing frame(s).
160
+
Now, LLDB is able to walk back through exception frames into the standard program frames and produce a backtrace that contains the missing frames.
161
161
162
162
```swift
163
163
(lldb) bt
@@ -197,7 +197,7 @@ The `@used` attribute lets the compiler know that the entity it’s attached to
197
197
198
198
### Progress on the Embedded Swift linkage model
199
199
200
-
Embedded Swift uses a different compilation model from regular Swift that delays code generation to later in the compilation process. This compilation model has not been fully defined and has various practical problems. One such issue involves duplicate symbols: if you have four Embedded Swift libraries whose dependencies formed a diamond, like this:
200
+
Embedded Swift uses a different compilation model from regular Swift that delays code generation to later in the compilation process. This compilation model has not been fully defined and has various practical problems. One such issue involves duplicate symbols: if you have four Embedded Swift libraries whose dependencies form a diamond, like this:
201
201
202
202
```
203
203
A
@@ -209,7 +209,7 @@ B C
209
209
210
210
Then symbols from `A` that are used in both `B` and `C` would cause duplicate definition errors when linking both into `D`. The Swift compiler now emits symbols from imported modules using weak definitions, so the linker can de-duplicate them. This eliminates the need for flags like `-mergeable-symbols` and `-emit-empty-object-file` that provided partial workarounds.
211
211
212
-
Another step along to path to formalizing the Embedded Swift linkage model is [SE-0497](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0497-definition-visibility.md), which defines a new `@export` attribute that controls how a function is visible to clients. The spelling `@export(implementation)` makes the implementation available for clients to emit, specialize, or inline, subsuming the longstanding but unofficial `@_alwaysEmitIntoClient` attribute. The spelling `@export(interface)` ensures that only the interface and *not* the definition of the function is made available to clients by emitting a callable symbol, allowing library developers to fully hide the implementation of a function even in Embedded Swift.
212
+
Another step along the path to formalizing the Embedded Swift linkage model is [SE-0497](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0497-definition-visibility.md), which defines a new `@export` attribute that controls how a function is visible to clients. The spelling `@export(implementation)` makes the implementation available for clients to emit, specialize, or inline, subsuming the longstanding but unofficial `@_alwaysEmitIntoClient` attribute. The spelling `@export(interface)` ensures that only the interface and *not* the definition of the function is made available to clients by emitting a callable symbol, allowing library developers to fully hide the implementation of a function even in Embedded Swift.
0 commit comments