diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c789a02a..5f66edd1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,7 +13,9 @@ Thank you for your interest in contributing to celeris! ### Prerequisites -- Go 1.26.3+ (1.26.3 absorbs stdlib CVEs surfaced by govulncheck on 1.26.2: GO-2026-4971 in `net`, GO-2026-4918 in `net/http`) +- Go 1.27.0+ — the `go` directive in `go.mod` is the single source of truth for the floor, and + CI pins the same version. Quote it from there rather than restating it here, so the two + cannot drift apart again. - [Mage](https://magefile.org) build tool: `go install github.com/magefile/mage@latest` - Linux (for io_uring/epoll engine tests) or macOS (std engine only) - [golangci-lint](https://golangci-lint.run/) v2.9+ diff --git a/README.md b/README.md index e6f57408..f79c53e5 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ A correctness-focused release. Three concurrency fixes on the WebSocket and engi go get github.com/goceleris/celeris@latest ``` -Requires **Go 1.26.4+**. Linux for the io_uring / epoll / adaptive engines; any OS for the std engine. +Requires **Go 1.27.0+** (the `go` directive in `go.mod` is the source of truth). Linux for the io_uring / epoll / adaptive engines; any OS for the std engine. ```go package main @@ -424,7 +424,7 @@ validation/ Runtime invariant assertions + validation hooks (debug builds) ## Requirements -- **Go 1.26.4+** +- **Go 1.27.0+** (see the `go` directive in `go.mod`) - **Linux** for the io_uring / epoll / adaptive engines (kernel 5.10+ for io_uring; 5.19+ for the multishot / provided-buffers tier) - **Any OS** for the std engine - Direct runtime dependencies: `golang.org/x/sys` and `golang.org/x/net` only (`golang.org/x/text` is indirect) diff --git a/driver/memcached/client.go b/driver/memcached/client.go index 8bfd3833..e0240a65 100644 --- a/driver/memcached/client.go +++ b/driver/memcached/client.go @@ -30,7 +30,7 @@ type Client struct { // // addr may optionally include a "memcache://" or "memcached://" scheme // prefix; the prefix is stripped and the remaining "host:port" is used -// verbatim. TLS is not supported in v1.4.0. +// verbatim. TLS is not supported. func NewClient(addr string, opts ...Option) (*Client, error) { addr = strings.TrimPrefix(addr, "memcached://") addr = strings.TrimPrefix(addr, "memcache://") diff --git a/driver/postgres/dsn.go b/driver/postgres/dsn.go index ce21aff3..268052d3 100644 --- a/driver/postgres/dsn.go +++ b/driver/postgres/dsn.go @@ -254,7 +254,7 @@ func applyDefaults(d *DSN) { // CheckSSL returns ErrSSLNotSupported if the DSN requests a TLS mode this // driver version cannot satisfy. // -// In v1.4.0 the driver has no TLS stack. sslmode semantics: +// The driver has no TLS stack. sslmode semantics: // // - "" / "disable" : plaintext, always allowed. // - "prefer" / "allow" : the libpq semantics are "try TLS, fall diff --git a/driver/postgres/protocol/types_numeric.go b/driver/postgres/protocol/types_numeric.go index 321d1883..3b9bc10b 100644 --- a/driver/postgres/protocol/types_numeric.go +++ b/driver/postgres/protocol/types_numeric.go @@ -17,7 +17,7 @@ import ( // int16 dscale display scale (number of digits after decimal point) // int16 digits[ndigits] base-10000 digits, MSD first // -// Implementing a full arbitrary-precision encoder is deferred. For v1.4.0 we +// Implementing a full arbitrary-precision encoder is deferred. For now we // decode into a canonical string form and require callers to pass a string // when encoding so the server parses it in text form. @@ -138,7 +138,7 @@ func init() { Name: "numeric", DecodeBinary: decodeNumericBinary, DecodeText: decodeNumericText, - EncodeBinary: nil, // binary encode not implemented in v1.4.0 + EncodeBinary: nil, // binary encode not implemented EncodeText: encodeNumericText, ScanType: reflect.TypeOf(""), }) diff --git a/driver/postgres/rows.go b/driver/postgres/rows.go index edfbb34c..6a03b575 100644 --- a/driver/postgres/rows.go +++ b/driver/postgres/rows.go @@ -207,7 +207,7 @@ func (r *pgRows) ColumnTypeDatabaseTypeName(i int) string { } // HasNextResultSet reports whether a multi-statement simple query produced -// another result set after the current one. For v1.4.0 we flatten multi- +// another result set after the current one. The driver flattens multi- // statement results into a single pgRows, so this is always false. func (r *pgRows) HasNextResultSet() bool { return false } diff --git a/driver/redis/cluster.go b/driver/redis/cluster.go index 766f2e83..314f618b 100644 --- a/driver/redis/cluster.go +++ b/driver/redis/cluster.go @@ -56,10 +56,10 @@ type ClusterConfig struct { // error is returned. Default: 3. MaxRedirects int // RouteByLatency, when true, sends reads to the lowest-latency node. - // Not implemented in v1.4.0; reserved for future use. + // Not implemented; reserved for future use. RouteByLatency bool // ReadOnly, when true, allows reads from replica nodes. - // Not implemented in v1.4.0; reserved for future use. + // Not implemented; reserved for future use. ReadOnly bool Engine eventloop.ServerProvider diff --git a/test/autobahn/README.md b/test/autobahn/README.md index 03c26360..21c49d7d 100644 --- a/test/autobahn/README.md +++ b/test/autobahn/README.md @@ -27,7 +27,7 @@ each celeris engine. - Docker (for the Autobahn container — the project no longer ships native macOS binaries). -- Go 1.22+ to build the celeris server. +- A Go toolchain matching the `go` directive in the root `go.mod` to build the celeris server. - On Linux, `make autobahn` runs all three engines (std/epoll/io_uring) in parallel. On macOS only `std` is exercised.