SSWG - July 3rd, 2024

Attendance:

Goals

Concurrency & Structured Concurrency adoptions

  • :a: Franz and Joannis to collaborate and a rough outline for a structured concurrency server applications post

Swift 6

  • :white_check_mark: UI changes on the SPI landed to make it data race warnings clearer

Marketing

Tooling

  • :a: Investigate official Swift GH action Tim, Franz, Sebastian

HTTP server and middlewares

  • :a: Move forward with the reviews of the initial API drafts

Benchmarks

  • :a: Joannis to share instruments trace
  • :a: Joannis check if we can get a techempower based instrument trace

Action items

  • :a: @Ben_Cohen to verify the CI permissions so that Adam can trigger Swiftly CI
  • :a: Next meeting: New Incubation Maturity Review
  • :a: @ktoso @FranzBusch announce new SSWG members
  • :a: @ktoso has a candidate for the SSWG Meetup. Will plan to follow-up on this
  • :a: @FranzBusch add explanation for last-three-versions toolchain requirement for server apps to swift.org
  • :a: @sebsto @tiborbodecs review and update swift.org deployment guides (AWS & others).

Discussion

  • Integrated Example
    • Discussion around linear example or being able to jump at any point
    • Maintenance concern about having both a code example and docc tutorial
    • :a: For the group what we can run as a group to keep up to date
  • Server repository migrations to swiftlang
    • Going to sync with the Core team about this in the future
  • Swift server meetup
    • Newsflash in the beginning
    • Recapping the SSWG Q&A section
4 Likes

What would this add? Since the latest Swift release is installed on the github linux and I presume macOS runner images (though not on Windows), a linux/mac CI for a Swift package is as simple as running swift build or swift test.

It would be nice if there were a standard way to install the snapshot toolchains though, as the community efforts appear to have stalled, excepting maybe that new setup-swift one which still appears to have problems on Windows. Maybe that one or some others can be brought in-house and made the official way to install Swift toolchains when needed.

Let me preface this with. We have only just started adopting GitHub Actions in the swift-nio repository and there is still a lot to figure out.

Personally, I would like to see the new swiftlang organization offer two things:

  • Official actions for
    • Setting up a toolchain
    • Running swift-format
    • Running the API breaking check (swift package diagnose-api-breaking-changes)
    • Running a documentation check (Building the package documentation with `warnings-as-errors)
    • etc.
  • Reusable workflows for our package repositories that cover the essential needs and reduce CI duplication
    • Soundness checks (license headers, language, formatting, documentation, etc.)
    • Matrix jobs across all supported Swift versions of that package that run
      • Unit tests
      • Benchmarks if applicable
      • Custom test jobs
      • etc.

In the swift-nio repository we started to work on the second part and have a good set of reusable workflows. Right now we are exploring how good this setup works by adopting it in a few more repositories like the swift-openapi-generator.

6 Likes

To add to this:

  • caching
  • caching
  • caching
1 Like

For swiftlang organization, we started discussing workflows and platforms that Swift project will be supported. The core team has given the green light for a new repository, github-workflows, within the swiftlang organization, aimed at centralizing GitHub Actions. Next week, we will share more details about the direction of the repository.

High level this will include workflows categories of repositories:

  • Swift Packages
    • swift build and swift test
    • CMake if applicable
  • Swift repository
  • LLVM repository
  • more

Goal is to include all officially supported platform over time:

  • Linux
  • macOS
  • Windows
6 Likes

@adam-fowler You should now have permission to trigger CI.

2 Likes

Thanks Mishal, just tried it out and everything is working fine