hi all, it’s been a while since our last update, so i’ve written up some release notes covering the most prominent user-facing improvements we’ve rolled out in the latest update to swiftinit.org.
Browse conforming types
Swiftinit now supports browsing all the conforming types of a protocol, including conforming types in other packages.
To view conforming types, visit the doc page for any protocol (such as Comparable
) and navigate to the Browse conforming types link.
Package realms
To better accommodate growth of the site, the Swiftinit package index is now divided into multiple package realms, which determine the visibility of extensions and conforming types.
Packages in the same realm can:
- contribute extensions to the original page for the extended type, and can
- contribute conforming types to the master list of conformers to the target protocol.
Packages in different realms can still link to each other normally, and cross-package references are unaffected by package realms. However, realms are helpful for limiting the number of extensions shown on popular types, such as Sequence
.
If a package is unable to publish extensions to types in a different package realm, you can still view the extensions on a package-local extension page (example). Such pages are linked in turquoise in the sidebar.
Most of the existing packages in the Swiftinit index have been grandmothered into the public realm and continue to share extensions.
Linkable list item anchors
It is now possible to share a link to a particular list item within a type’s member list, instead of a link to the referenced declaration itself, which may have been inherited from a protocol. Some developers may find this helpful for communicating to colleagues that a particular type supports an API.
To obtain the link, click on the $
sigil before the member’s signature.
SwiftPM product details
Swiftinit now collects information about all the SwiftPM products declared in a package’s manifest, and can display a list of all the modules included in a particular package product, including transitive dependencies.
Package products are found under the Products section of the landing page for a package snapshot’s documentation. (Example)
Source links for composite documentation
Swiftinit source links now show all the source files that contributed to the documentation for a particular symbol, instead of just the link to its doccomment. Practically, this means it is now possible to view the raw DocC curation list for symbols with manually-curated members.
Mangled symbol infobox
Swiftinit now includes an expandable infobox containing the mangled name of each declaration, and the DocC hash you would need to refer to that symbol when writing documentation.
Internally, the database also supports looking up symbols by ABI name and we aim to surface this as a public debugging tool soon.
Module-level statistics
Swiftinit now has dedicated pages for viewing statistics about a specific module, instead of the package as a whole. (Previously, it was not possible to view the breakdowns, only a summary of each module.)
Module-level statistics can often provide a much clearer picture of how well-documented a package is, if a package vends a large number of undocumented C symbols.