Description of the project: Swift-DocC is the canonical documentation compiler for the Swift OSS project. However Swift-DocC is not Swift specific and uses SymbolKit's languaguage agnostic JSON-based symbol graph format to understand which symbols are available in the code, this way any language can be supported by Swift-DocC as long as there is a symbol graph generator.
Clang supports symbol graph generation for C and Objective-C as described in [RFC] clang support for API information generation in JSON.
Currently users can use clang to generate symbol graph files using
the clang -extract-api
command line interface or generating
symbol graphs for a specific symbol using the libclang interface. This project
would entail adding a third mode that would generate the symbol graph output
as a side-effect of a regular compilation job. This can enable using the
symbol graph format as a light weight alternative to clang Index or clangd
for code intelligence services.
Expected result: Enable generating symbol graph files during a regular compilation (or module build); provide a tool to merge symbol graph files in the same way a static linker links individual object files; Extend clang Index to support all the information contained by symbol graph files.
Desirable skills: Intermediate C++ programming skills; familiarity with clang and Objective-C are assets but not required.
Project size: Medium
Difficulty: Medium/Hard
Confirmed Mentors: Daniel Grumberg, Zixu Wang, Juergen Ributzka