Description
Overview
This issue tracks the progress of implementing and shipping the projection tooling for .NET 10. The primary goal is to release the projection tooling as an experimental NuGet CLI capable of generating bindings for a specific set of Swift frameworks, as defined in the use cases. It should follow general principles outlined in the Swift interop proposal.
Currently, the projection tooling is available as an experimental NuGet CLI in dotnet-experimental feed.
Workstream: Swift language features
Based on the selected frameworks, the following Swift language features are in use:
- [Swift language features] Implement Swift structs in C# runtimelab#2822
- [Swift language features] Implement Swift generics support for structs runtimelab#2930
- [Swift language features] Implement Swift generics support for enums runtimelab#2931
- [Swift language features] Implement Swift async runtimelab#2837
- Built-in types
- [Swift language features] Implement unsafe pointers in C# runtimelab#2832
- [Swift language features] Implement Swift.String in C# runtimelab#2831
- [Swift language features] Implement Swift.Array in C# runtimelab#2833
- [Swift language features] Implement Swift.Set in C# runtimelab#2834
- [Swift language features] Implement Swift.Optional in C# runtimelab#2929
Workstream: Swift runtime features
To support the mentioned language features, the following runtime features are required:
- [Swift runtime features] Implement Swift metadata runtimelab#2838
- [Swift runtime features] Implement Swift value witness tables support runtimelab#2840
Workstream: Projection tooling
To generate bindings, we need projection tooling that includes the following components (based on the current design):
- [Projection tooling] Implement type database runtimelab#2842
- [Projection tooling] Add symbols from dynamic library to type database runtimelab#2918
Workstream: Shipping
We need the following infrastructure:
- [Swift shipping] Create
Swift.Bindings.Experimental
and tooling NuGet packages in the dotnet-experimental feed runtimelab#2849 - [Swift shipping] Implement testing framework runtimelab#2850
Note
The projection tooling will be experimental in .NET 10.