Expand the Swift overlay for the C++ Standard Library

Hi @egor.zhdan ,
I am Abd al Rahman Gad,
I am a second year computer science student,
I have a good understanding of c++ and a deep understanding of the standard template library such as( vector , set , map ,etc… and the functions in std::algorithm) because of my use of them in problem solving in various websites and I am interested in participating in the “Expand the Swift overlay for the C++ Standard Library” project .

I have seen the resources you’ve listed in the reply here :

Especially this :

and this :

I have also seen the “How Swift imports C APIs” right here :

I now have a good idea about the project and the general desired deliverables of it , this project had my interest and I really want to be part of it.

here are some questions I want to ask to get better understanding of the project :

1- what is the exact deliverables that we want to accomplish in Gsoc 2023 ?
2- how should I prepare for the project ( resources , advises , etc..) to become a better candidate and hopefully be chosen ?

Hi, it's great to see that you're interested in the project and already looked into the docs for the C++ stdlib overlay!

An example of what could be implemented as part of this project is conversion mechanisms between C++ standard library types and Swift standard library types. The overlay already provides a conversion mechanism between C++'s std::string and Swift's String. This is quite useful in cases where e.g. a C++ library exposes a function that takes an instance of std::string as a parameter, and a Swift developer wants to call this function from Swift. Here is how the conversion is currently implemented: https://github.com/apple/swift/blob/9bdbd38a3c63872e90ccadc27def1569a49fff2a/stdlib/public/Cxx/std/String.swift#L13-L24.
We don't want to limit the contributions to this specific part of the overlay, so if you have other ideas on how the overlay could be improved, please feel free to propose those!

One way to become more familiar with the project would be to try and build Swift, including the overlay, locally. Here are some docs on building Swift: https://github.com/apple/swift/blob/main/docs/HowToGuides/GettingStarted.md#the-actual-build.
Once you know how to build Swift, you could try making a small change to the overlay, and then rebuilding Swift to see how your change looks in an actual Swift toolchain. That would help you to get started with contributing to the overlay, and to the Swift project in general.

Feel free to ask me any questions!