You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: README.md
+8
Original file line number
Diff line number
Diff line change
@@ -9,6 +9,14 @@
9
9
go get github.com/database64128/tfo-go/v2
10
10
```
11
11
12
+
### Windows support with Go 1.23 and later
13
+
14
+
`tfo-go`'s Windows support requires extensive usage of `//go:linkname` to access Go runtime internals, as there's currently no public API for Windows async IO in the standard library. Unfortunately, the Go team has decided to [lock down future uses of linkname](https://github.com/golang/go/issues/67401), starting with Go 1.23. And our bid to get the linknames we need exempted was [partially rejected](https://github.com/golang/go/issues/67401#issuecomment-2126175774). Therefore, we had to make the following changes:
15
+
16
+
- Windows support is gated behind the build tag `tfogo_checklinkname0` when building with Go 1.23 and later.
17
+
- With Go 1.21 and 1.22, `tfo-go` still provides full Windows support, with or without the build tag.
18
+
- With Go 1.23 and later, when the build tag is not specified, `tfo-go` only supports `listen` with TFO on Windows. To get full TFO support on Windows, the build tag `tfogo_checklinkname0` must be specified along with linker flag `-checklinkname=0` to disable the linkname check.
0 commit comments