Motivation:
Swift 6.0 is no longer supported, we should bump the tools version and
remove it from our CI.
Modifications:
* Bump the Swift tools version to Swift 6.1
* Remove Swift 6.0 jobs where appropriate in main.yml, pull_request.yml
* Set language mode 5 in Benchmarks package manifest
Result:
Code reflects our support window.
---------
Co-authored-by: George Barnett <gbarnett@apple.com>
### Motivation:
`NIOFileSystem` currently exposes the same API as `_NIOFileSystem`,
which is not API stable. `NIOFileSystem`
was created in error, and its lack of underscore incorrectly implies API
stability. Users who are currently importing `NIOFileSystem` should
ideally move to `_NIOFileSystem`. However this isn't made clear in the
docs:
1. The README talks about the non-underscored `NIOFileSystem`.
2. There are no hosted API docs `NIOFileSystem`.
3. The hosted API docs for `NIO` point to the docs for `NIOFileSystem`
-- results in 404.
### Modifications:
- Update the README to refer to `_NIOFileSystem`.
- Update the hosted API docs for `NIO` to point to docs for
`_NIOFileSystem`.
- Add hosted API docs for `NIOFileSystem` with a statement explaining
the situation and pointing people to the docs
for `_NIOFileSystem`.
### Result:
Clearer documentation on the state and relationship of the
`NIOFileSystem` and `_NIOFileSystem` modules.
### Motivation:
Additional partial platform support.
### Modifications:
* Create a new CNIOBSD module for OpenBSD, for general cleanliness, and
make use of it throughout. Some of the changes are borrowed directly
from CNIOLinux; some may technically be unnecessary; I am erring
somewhat on expediency to functionality.
* Since `malloc_size` is unavailable on OpenBSD, and some of the helpers
make use of ManagedBufferPointer which makes use of it, mark some of
this as unavailable as well.
* Usual pthread optional typing changes, since pthread types are
pointers on this platform.
* Add conditionals to exclude other functionality not available here,
like IP_RECVPKTINFO or IP_PKTINFO.
* d_ino is a backwards-compatibility macro valued token for dirent, so
instead, just expand with a conditional.
* Use kqueue on OpenBSD. This necessitates adding some conditionals for
type and feature compatibility.
* The vsock API is unavailable on OpenBSD.
### Result:
Tested the NIOTCPEchoClient and NIOTCPEchoServer appears to work and
that swift-nio-ssh (hopefully wlog) builds with a local repository with
these changes.
Because NIOFS/_NIOFileSystem depend on some non-portable components,
such as extended attributes, sendfile, non-portable linkat flags, and
renameat2, this is only just partial OpenBSD support, which means that
`swift build` on the full swift-nio project won't build cleanly, but at
least the portable parts can be used to build servers and clients. This
commit will mark the linked bug as fixed; I will open a new bug for file
system support.
Fixes#3383.
---------
Co-authored-by: Rick Newton-Rogers <rnro@apple.com>
Motivation:
Our docs for running alloc counting benchmarks are scattered between a
few places, and our info about debugging allocations is also a bit
outdated.
Modifiactions:
- Add a doc on running the two different flavours of allocation counting
test. Remove the entry about bencharks from the README.
- Add a doc on debugging allocations
Most of the content comes from the original
`docs/debugging-allocations.md` doc but has been updated a little and
includes info about the new stackdiff tool.
Result:
Better docs
Point API docs URLs to the latest stable version instead of the unstable
main branch.
### Motivation:
For most of developers this README.md is the main entry point when
searching online or installing the library, so pointing them to API docs
for the latest stable release makes more sense then the main branch,
which may contain not-yet-released API or breaking changes.
### Modifications:
This PR removes `main` branch name from API docs URLs, making them
always point to the latest stable release instead of the main branch.
### Result:
API docs URLs in README.md point to the latest stable release.
Co-authored-by: Rick Newton-Rogers <rnro@apple.com>
Motivation:
Swift 5.9 is no longer supported, we should bump the tools version and
remove it from our CI.
Modifications:
* Bump the Swift tools version to Swift 5.10
* Remove Swift 5.9 jobs where appropriate in main.yml, pull_request.yml
Result:
Code reflects our support window.
### Motivation:
A bit confusing to see docker mentioned in Readme file, when in reality
you can't run docker compose anymore.
### Modifications:
Updated README and CONTRIBUTING files, removed some scripts.
### Result:
No mentions of docker so users are not confused.
Co-authored-by: Rick Newton-Rogers <rnro@apple.com>
Motivation:
The README mentions indicates the supported Swift versions in a few
places which over time have gotten out of sync.
Modifications:
- Only document the supported Swift version in the 'supported versions'
section of the README
Result:
- Resolves#3158
Updates to documentation comments in `NIOFileSystem`.
### Motivation:
I've been reviewing some parts of `NIOFileSystem` and came across a
variety of formatting of documentation comments.
### Modifications:
I've adopted a stricter 100-character limit (arbitrary, really; it could
be longer or shorter and is totally not consistent with the rest of the
repository). Also updated a bunch of grammar in comments. Fixed a few
typos along the way.
### Result:
- Updated comments have a better flow while reading, and aren't as
abrupt as before.
- Fewer typos in comments
---------
Co-authored-by: Cory Benfield <lukasa@apple.com>
# Motivation
We only support the last three Swift released versions which are at this
time 5.9, 5.10 and 6.
# Modification
This PR drops anything related to Swift 5.8.
# Result
Version support aligned.
Make sure repository docs represent the current status quo
Motivation:
Some parts of the docs were out of date and confusing/wrong.
Modifications:
Made references to supported versions appropriate for the current mainline version supported (5.10) and the retained support for 5.9 and 5.8.
In addition made that operating mode an explicit statement of commitment, along with the use of nightlies of pre release versions..
Now that more checks are present as GitHub Actions they are easier for users to run directly with act, so provided some links and one liners to do that.
The old references to swift-format were no longer hopeful, they became true!
Added myself as a committer at the same time
Result:
Docs should be more accurate and helpful. Intent of the matrix for support should be clearer
* [GHA] Unacceptable language check
# Motivation
Next up replacing part of our soundness script that checked for unacceptable language.
# Modification
This PR adds a new GH action that checks for unacceptable language.
# Result
One more script replaced
* PR review
* Change homepage link to repo
Motivation:
I/O is typically blocking, but options for interacting with the
filesystem using `async` APIs are limited. This change adds a new module
to NIO, `NIOFileSystem`. At the moment this is exposed as the
`_NIOFileSystem` product while users get a chance to try it out and
provide feedback.
During this time the API of `NIOFileSystem` is subject to change.
Breaking changes will come in _minor_ NIO releases and additive changes
may come in _patch_ releases of NIO.
Modifications:
- Add `NIOFileSystem`, `NIOFileSystemFoundationCompat`,
`NIOFileSystemTests`, `NIOFileSystemIntegrationTests`, and
`NIOFileSystemFoundationCompatTests`.
- Update docs
- Update CNIOLinux and CNIODarwin shims
Result:
File system can be accessed via `async` APIs
# Motivation
We want to migrate our allocation and later on also our performance tests to use the `package-benchmark` plugin. This plugin makes writing benchmarks way easier than our current setup. Furthermore, debugging benchmarks is also possible from within Xcode now.
# Modification
This PR adds the setup for the benchmarking infrastructure and connects it with out
# Result
Allocations tests are more accessible and easier to iterate.
* Bump minimum Swift version to 5.7
Motivation:
Now that Swift 5.9 is GM we should update the supported versions and
remove 5.6
Modifications:
* Update `Package.swift`
* Remove `#if swift(>=5.7)` guards
* Delete the 5.6 docker compose file and make a 5.10 one
* Update integration test script
* Update docs
Result:
Remove support for Swift 5.6, add 5.10
* fix indentation issues
* 5.9 docker image use release image
Motivation:
The NIO docs are now published on the Swift Package Index but the README
still refers to GitHub pages.
Modifications:
- Update README and other docs to point to Swift Package Index.
Result:
Documentation links work
Motivation:
SwiftNIO periodically drops support for older Swift versions. Now that
5.7 has been released, 5.4 will be dropped.
Modifications:
- Remove 5.4 specific Package.swift and docker-compose
- Update the 5.7 docker-compose to use the released 5.7 and move from
focal (2004) to jammy (2204)
- Remove unused swiftformat from Dockerfile
- Update tools version in syscall wrapper tests to 5.5
- Update docs
Results:
Minimum Swift version is 5.5
* Drop support for 5.2 and 5.3
As outlined in a [Swift forums post in November ’21](https://forums.swift.org/t/swiftnio-swift-version-support/53232), SwiftNIO will only support the latest non-patch Swift release and the 2 immediately prior non-patch versions.
In this commit we drop support for Swift 5.2 and 5.3. We update CI for Swift 5.4 to run on bionic instead of focal to ensure that we still test bionic.
* Added Versions paragraph to Security document
* Apply suggestions from code review
Co-authored-by: Cory Benfield <lukasa@apple.com>
Co-authored-by: Cory Benfield <lukasa@apple.com>
Motivation:
It's currently unclear that SwiftNIO1 is end of life.
Modifications:
Update the README to set a deadline on patches to NIO1
Result:
Everyone knows where the core team stands on supporting NIO1
Co-authored-by: George Barnett <gbarnett@apple.com>
Motivation:
We should explain when we want users to use specific products, so that
they can understand what to import and when.
Modifications:
- Added some text to the README to clarify what modules exist.
Result:
Should be easier to understand what there is in the NIO ecosystem
Co-authored-by: Fabian Fett <fabianfett@apple.com>
Make Swift 5.2 the minimum requirement, dropping support for Swift 5.0 and 5.1.
Motivation:
Whenever we have problems, Swift 5.0 and 5.1 seem to be the culprits. Dropping support for these very old versions will require less maintenance and free up our time to work on new features.
Modifications:
Set the tools version in Package.swift to 5.2
Remove CI configurations for 5.0 and 5.1
Update the various readmes to reflect that this change will be rolled out in NIO 2.30.0
Result:
Swift 5.2 is the minimum version of Swift required to use NIO.
Motivation:
Ubuntu 14.04 ... 17.10 are all not supported anymore by the end of the day.
Also Swift 5.4 was released recently.
Modification:
- support Ubuntu 18.04+
- officially support Swift 5.4
Result:
More sensible and correct version support info.
Motivation:
It's not obvious how to do analysis of allocation regressions on Linux, so some documentation would be helpful.
The run time for the unit tests can be quite long (a couple of minutes), can be cut down significantly if running tests in parallel, adding a hint about that.
Modification:
Updated documentation.
Result:
Easier to troubleshoot mallocs on Linux and faster running of unit tests.
Motivation:
We support watchOS 6+ with SwiftNIO Transport Services; as such we should
include watchOS as a deployment target for our CocoaPods.
Modifications:
- Add a watchOS deployment target to `build_podspecs.sh`
- Update docs
Result:
Users can deploy to watchOS 6+ with CocoaPods.
* Update supported version in README
Motivation:
NIO can run on macOS 10.9+/iOS 7+, but the README states 10.12+.
Modifications:
Update readme.
Result:
More accurate docs.
Motivation:
The more contributors know what's expected of them upfront the less likely they are to consume reviewer time and experience a harsh review.
Modifications:
Add some extra commentary to CONTRIBUTORS.md
Add a docker compose example with specific ubuntu/swift versions to README.md
Result:
Contributors will be more informed.
Co-authored-by: Cory Benfield <lukasa@apple.com>
Motivation:
SSWG guidelines recommend that accepted projects list their maturity
level in their README with an appropriate badge.
Modifications:
- Add SSWG graduated badge to README
- Add that gRPC is a SSWG community project
Result:
- A badgier README
Motivation:
Swift 5.2 is already available as developer snapshots and Xcode 11.4
beta got released which also includes Swift 5.2.
Modifications:
- add 5.2 support to the readme
- showcase SwiftPM's package syntax for 5.2
Result:
the future is here.
Motivation:
Repeatedly, we learned that our users don't fully know which protocols
are and aren't implemented by SwiftNIO or SSWG projects.
Modifications:
Add a table of implemented protocols to the README.
Result:
Easier to access information.
Motivation:
Avoid examples being build when using as library.
Address https://github.com/apple/swift-nio/issues/1217
Modifications:
Remove example binaries from products.
Update example section in README, show how to run them.
Result:
Examples are not being built when running `swift build`
Motivation:
Now that Xcode 11 has GM'd, we should recommend the best workflow which
very clearly is Xcode 11's new package support.
Modifications:
Edit README to explain how to use Xcode's package support.
Result:
Happier users.
Motivation:
To give visibility to recently added examples.
To satisfy issue #465
Modifications:
Added links to examples in readme.
Slightly re-arranged the order so that echo examples are next to each other in the list.
Result:
You can now see the UDP, HTTP and WebSocket client examples from the README file.