Open
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 APIs, 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.
Tasks:
- Design and implement Swift language features in C#
- Generics
- Enums
- Classes / Actors
- Protocols and associated types
-
Any
/Some
/Never
- Design and implement Swift runtime support
- Metadata
- Conformance descriptors
- Witness tables
- Existential containers
- Common interfaces (IEnumerable, ICollection, IDisposable, etc)
- Design and implement memory management
- Memory management between Swift and C#
- Memory management between Objective-C and Swift interops
- Review memory management of the projected pointer types
- Design and implement the projection tooling
- Review projection tooling UX and functionality runtimelab#2582
- ABI/MachO parser
- String-based emitter
- Demangler
- Type registrar / Typedecl / Typespec
- Review projection tooling UX and functionality runtimelab#2582
- Testing and validation
- Consolidate the existing tests (level of granularity)
- Setup iOS/MacCatalyst tests with Native AOT
- Swift framework testing
- App submission tests to App Store
- Performance benchmarking framework for Swift projection tooling runtimelab#2586
- Shipping
- Move projection tooling to the xamarin-macios
- Move generated bindings to the xamarin-macios
- Move the sample app with use-cases to the xamarin-macios
Note
The projection tooling will be experimental in .NET 10.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment