95 Commits

Author SHA1 Message Date
Rick Newton-Rogers f99e1b6a30 Drop Swift 6.0 (#3566)
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>
2026-04-09 09:59:19 +00:00
Si Beaumont edad6d8a9b Clarify state and relationship of NIOFileSystem and _NIOFileSystem in API docs (#3504)
### 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.
2026-02-06 18:56:42 +00:00
3405691582 2bc71a6aff Partial OpenBSD support. (#3394)
### 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>
2025-11-26 09:07:02 +00:00
Fabian Fett a3ed8e10ab Drop Swift 5.10 (#3393)
This PR drops Swift 5.10 and enables Swift 6 language mode.

---------

Co-authored-by: Cory Benfield <lukasa@apple.com>
2025-10-06 10:58:33 +01:00
George Barnett 123887dc4d Add DocC docs for running alloc tests and debugging them (#3293)
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
2025-07-10 15:31:24 +01:00
Alex Azarov 91a5eded13 Fix API documentation links in README.md (#3276)
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>
2025-06-30 09:43:01 +00:00
Rick Newton-Rogers 57658e12ff Drop Swift 5.9 (#3228)
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.
2025-05-07 12:24:44 +00:00
Jaleel Akbashev bdbabb2827 Removed Docker references as repo moved to Github actions (#3227)
### 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>
2025-05-05 12:08:27 +01:00
George Barnett 0270310d75 Document supported versions consistently (#3168)
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
2025-04-02 07:22:23 +00:00
Michael Gecht 4d2fb577b9 Update documentation comments (#2998)
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>
2024-11-26 14:48:29 +00:00
Franz Busch 2fe3d92cf5 Drop support for Swift 5.8 (#2924)
# 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.
2024-10-17 12:22:10 +00:00
LamTrinh.Dev 61e7c4740d Update wording from ubuntu to Ubuntu at README.md (#2830)
Update wording from `ubuntu` to `Ubuntu`.
2024-08-07 15:50:30 +00:00
Matt Hope ba6245748f Update repository docs for swift-version support and recent CI check changes (#2815)
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
2024-08-01 10:27:59 +00:00
Franz Busch 5cc05490c4 [GHA] Unacceptable language check (#2766)
* [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
2024-07-09 07:56:26 +01:00
Dave DeLong 6b29fc3c2b Clarify Client/Server column headers (#2691)
Co-authored-by: Cory Benfield <lukasa@apple.com>
2024-03-25 18:44:30 +00:00
George Barnett cc158ec6c7 Raise minimum Swift version to 5.8 (#2675) 2024-03-11 08:47:57 +00:00
George Barnett f80c69f84b Add NIOFilesystem (#2615)
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
2024-01-16 03:30:26 -08:00
Ryu 505bda969b Update README.md (#2602) 2023-11-29 03:41:30 -08:00
Max Desiatov 076af6dafd Fix missing whitespace in README.md (#2535)
"It also provides[`EmbeddedChannel`][ec]" -> "It also provides [`EmbeddedChannel`][ec]"

Co-authored-by: Cory Benfield <lukasa@apple.com>
2023-10-09 00:20:53 -07:00
Franz Busch d782de84df Adopt package-benchmark (#2534)
# 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.
2023-10-08 13:31:22 -07:00
Rick Newton-Rogers 67553a7d6d Bump minimum Swift version to 5.7 (#2524)
* 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
2023-10-02 11:38:07 +01:00
Max Desiatov 932c8522df Update RediStack URL in README.md (#2445)
This should point to GitHub, not to the GitLab mirror.
2023-06-21 07:24:29 +01:00
David Nadoba 6720612111 Drop Swift 5.5 (#2406)
* Drop Swift 5.5

* Use `swift-atomics` 1.1.0 with `Sendable` adoption
2023-04-17 08:40:35 +01:00
George Barnett 417278754e Point docs to Swift Package Index (#2353)
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
2023-01-23 06:09:43 -08:00
David Nadoba 597fa409ee Remove obsolete information from the README (#2321)
`swift package generate-xcodeproj` is deprecated for a long time and Xcode 11 is available for over 3 years.
`swift test --parallel` is the default.
2022-11-22 16:32:42 +00:00
David Nadoba 683f623692 We only support 5.5.2+ (#2293) 2022-10-17 15:27:55 +02:00
David Nadoba c7b4989b02 Remove #if compiler(>=5.5) (#2292)
### Motivation
We only support Swift 5.5.2+.

### Modification
Remove all `#if swift(>=5.5)` conditional compilation blocks.

### Result
less branching
2022-10-13 07:17:46 -07:00
George Barnett fcca969463 Raise minimum supported Swift version from 5.4 to 5.5 (#2267)
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
2022-09-29 11:47:44 +01:00
Si Beaumont 8b25ba9761 readme: Fix API docs link following NIO core refactoring (#2126)
Signed-off-by: Si Beaumont <beaumont@apple.com>
2022-05-30 01:03:30 -07:00
Fabian Fett dc8a317a24 Drop support for Swift 5.2 and 5.3 (#2080)
* 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>
2022-04-20 11:48:41 +01:00
Boby f5da374e27 Correct spelling of foreseeable in README.md (#2024)
Minor spelling mistake.
2022-01-03 20:35:33 +00:00
Peter Adams f2705f9655 Clarify the support status of NIO1 (#1949)
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>
2021-09-07 14:10:23 +01:00
Fabian Fett 0f6a62a875 Mention NIOPosix in README. (#1940) 2021-08-17 18:47:14 +02:00
Cory Benfield 3b1e082e78 Our readme should be clearer about our products. (#1934)
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>
2021-08-17 10:11:13 +01:00
David Evans b0effbcfd9 Make Swift 5.2 the minimum requirement (#1860)
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.
2021-06-18 21:02:41 +01:00
Johannes Weiss f7e5eb521c update version support (new floor: Ubuntu 18.04) (#1838)
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.
2021-04-30 13:03:37 +01:00
Joakim Hassila 22b58cebee Update documentation related to allocation troubleshooting on Linux and the ability to run unit tests in parallel. (#1796)
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.
2021-04-09 11:49:48 +01:00
George Barnett 27fc3ef162 Update NIOSSH version in README (#1783)
Motivation:

SwiftNIO SSH has a 0.2.0 release now.

Modifications:

- Update suggested version in README

Result:

README is more up-to-date
2021-03-16 16:19:26 +00:00
Johannes Weiss 0d28d5a994 more readme updates (#1774)
Co-authored-by: Cory Benfield <lukasa@apple.com>
2021-03-08 14:09:44 +00:00
Johannes Weiss 4b8d99536b README updates (#1757)
* README updates

* Update README.md

Co-authored-by: Cory Benfield <lukasa@apple.com>
2021-03-05 19:01:37 +00:00
George Barnett 74bedaf43b Add watchOS deployment to PodSpec build script (#1679)
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.
2020-10-21 09:00:01 +01:00
Cory Benfield e7880565aa We use main as our development branch now. (#1651) 2020-09-24 18:02:44 +01:00
George Barnett 7100980bf7 Update supported version in README (#1517)
* 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.
2020-06-18 18:05:42 +01:00
Peter Adams 5779ddd54b Extra information to contributors (#1491)
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>
2020-05-16 11:02:27 +01:00
George Barnett 0bb5b77cee Add SSWG badge to README (#1421)
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
2020-02-28 15:37:34 +00:00
Johannes Weiss e800e7cc5c add Swift 5.2 to the readme (#1386)
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.
2020-02-06 16:09:27 +00:00
Johannes Weiss 1c3c8a09cb README: make it easier for users to understand the implemented protocols (#1304)
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.
2019-12-13 15:39:00 +00:00
John Lin 9ec23f5f8a Remove example binaries from products (#1303)
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`
2019-12-12 13:39:54 +00:00
Johannes Weiss 8967e0470c README: recommend using Xcode package support (#1137)
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.
2019-09-11 06:59:49 +01:00
Liam Flynn 4fa0921e61 Update the README file to include some recently added examples. (#1087)
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.
2019-07-30 11:31:13 +01:00