Skip to content

Conversation

@bitjammer
Copy link
Contributor

Adds a tool swift-symbolgraph-extract that reads an existing Swift
module and prints a platform- and language-agnostic JSON description of
the module, primarly for documentation.

Adds a small sub-library SymbolGraphGen which houses the core
implementation for collecting relevant information about declarations.
The main entry point is integrated directly into the driver as a mode:
the tool is meant to be run outside of the normal edit-compile-run/test
workflow to avoid impacting build times.

Along with common options for other tools, unique options include
pretty-print for debugging, and a minimum-access-level options for
including internal documentation.

A symbol graph is a directed graph where the nodes are symbols in a
module and the edges are relationships between them. For example, a
struct S may have a member var x. The graph would have two nodes for
S and x, and one "member-of" relationship edge. Other relationship
kinds include "inherits-from" or "conforms to". The data format for a
symbol graph is still under development and may change without notice
until a specificiation and versioning scheme is published.

Various aspects about a symbol are recorded in the nodes, such as
availability, documentation comments, or data needed for printing the
shapes of declarations without having to understand specifics about the
langauge.

Implicit and public-underscored stdlib declarations are not included by
default.

rdar://problem/55346798

@bitjammer bitjammer requested a review from akyrtzi December 10, 2019 18:32
@bitjammer
Copy link
Contributor Author

@akyrtzi Can you add anyone else that you'd like to take a look?

@jackhl jackhl self-requested a review December 10, 2019 18:37
Copy link

@jackhl jackhl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@akyrtzi akyrtzi requested a review from nkcsgexi December 10, 2019 19:46
@akyrtzi
Copy link
Contributor

akyrtzi commented Dec 10, 2019

@nkcsgexi this involves reading information from a Swift module, could you take a look?

@swiftlang swiftlang deleted a comment from swift-ci Jan 7, 2020
@swiftlang swiftlang deleted a comment from swift-ci Jan 7, 2020
Adds a tool `swift-symbolgraph-extract` that reads an existing Swift
module and prints a platform- and language-agnostic JSON description of
the module, primarly for documentation.

Adds a small sub-library `SymbolGraphGen` which houses the core
implementation for collecting relevant information about declarations.
The main entry point is integrated directly into the driver as a mode:
the tool is meant to be run outside of the normal edit-compile-run/test
workflow to avoid impacting build times.

Along with common options for other tools, unique options include
`pretty-print` for debugging, and a `minimum-access-level` options for
including internal documentation.

A symbol graph is a directed graph where the nodes are symbols in a
module and the edges are relationships between them. For example, a
`struct S` may have a member `var x`. The graph would have two nodes for
`S` and `x`, and one "member-of" relationship edge. Other relationship
kinds include "inherits-from" or "conforms to". The data format for a
symbol graph is still under development and may change without notice
until a specificiation and versioning scheme is published.

Various aspects about a symbol are recorded in the nodes, such as
availability, documentation comments, or data needed for printing the
shapes of declarations without having to understand specifics about the
langauge.

Implicit and public-underscored stdlib declarations are not included by
default.

rdar://problem/55346798
@bitjammer
Copy link
Contributor Author

@swift-ci Please smoke test

@bitjammer
Copy link
Contributor Author

@swift-ci Please test

@swift-ci
Copy link
Contributor

Build failed
Swift Test OS X Platform
Git Sha - 31a9e146773b7cbd7dd97f6487611fb5cda7571f

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - 31a9e146773b7cbd7dd97f6487611fb5cda7571f

@bitjammer
Copy link
Contributor Author

Per e-mail, we'll do post-commit review on this and refine it as needed. This uses its own driver mode so will not affect any other workflows in the compiler.

@bitjammer bitjammer merged commit f34c970 into swiftlang:master Jan 10, 2020
@bitjammer bitjammer deleted the acgarland/symbol-graph branch January 10, 2020 22:53
@compnerd
Copy link
Member

This broke the windows builders: https://ci-external.swift.org/job/oss-swift-windows-x86_64/2422/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants