🚀 valyala/fasthttp - Release Notes
v1.60.0 (2025-04-02)
## What's Changed
* perf: split delAllArgs into delAllArgs and delAllArgsStable by @ksw2000 in https://github.com/valyala/fasthttp/pull/1945
* fix: accept invalid headers with a space by @ksw2000 in https://github.com/valyala/fasthttp/pull/1953
* Drop support for Go 1.21, add support for 1.24 by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1959
* chore(deps): bump github.com/klauspost/compress from 1.17.11 to 1.18.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1958
* add related project for opentelemetry-go-auto-instrumentation by @123liuziming in https://github.com/valyala/fasthttp/pull/1962
* Fix normalizeHeaderValue by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1963
* chore(deps): bump golang.org/x/net from 0.35.0 to 0.36.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1968
* chore(deps): bump securego/gosec from 2.22.1 to 2.22.2 by @dependabot in https://github.com/valyala/fasthttp/pull/1972
* chore(deps): bump golang.org/x/net from 0.36.0 to 0.37.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1971
* Update golangci-lint to v2 by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1980
* chore(deps): bump golang.org/x/net from 0.37.0 to 0.38.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1983
* Remove idleConns mutex for every request by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1986
## New Contributors
* @123liuziming made their first contribution in https://github.com/valyala/fasthttp/pull/1962
**Full Changelog**: https://github.com/valyala/fasthttp/compare/v1.59.0...v1.60.0
v1.59.0 (2025-02-18)
## What's Changed
* fix: Method-preserving doRequestFollowRedirects by @prepaser in https://github.com/valyala/fasthttp/pull/1920
* fix: "identity" has been deprecated #1909 by @ksw2000 in https://github.com/valyala/fasthttp/pull/1919
* Fix parsing of bad urls with # by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1915
* docs: improve README formatting and section headers by @alexandear in https://github.com/valyala/fasthttp/pull/1925
* perf: use buf in Args instead of bytebufferpool by @ksw2000 in https://github.com/valyala/fasthttp/pull/1931
* client: Client {} supports custom Transport by @zhangyongding in https://github.com/valyala/fasthttp/pull/1935
* Migrate valyala/tcplisten to this repo #1926 by @ksw2000 in https://github.com/valyala/fasthttp/pull/1929
* client: Modify some interfaces to be exportable by @zhangyongding in https://github.com/valyala/fasthttp/pull/1936
* Try to fix tests with dial timeouts by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1940
* client: add interfaces for reading clientConn by @zhangyongding in https://github.com/valyala/fasthttp/pull/1941
* Refactor trailer Field for Improved Memory Efficiency and Performance by @ksw2000 in https://github.com/valyala/fasthttp/pull/1928
* fix: compression priority by @inetol in https://github.com/valyala/fasthttp/pull/1950
* add dummy support for js,wasm by @pjebs in https://github.com/valyala/fasthttp/pull/1955
* chore(deps): bump golang.org/x/crypto from 0.29.0 to 0.31.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1918
* chore(deps): bump golang.org/x/net from 0.31.0 to 0.32.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1910
* chore(deps): bump golang.org/x/net from 0.32.0 to 0.33.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1927
* chore(deps): bump golang.org/x/sys from 0.28.0 to 0.29.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1932
* chore(deps): bump golang.org/x/crypto from 0.31.0 to 0.32.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1934
* chore(deps): bump securego/gosec from 2.21.4 to 2.22.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1937
* chore(deps): bump golang.org/x/net from 0.33.0 to 0.34.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1933
* chore(deps): bump golang.org/x/sys from 0.29.0 to 0.30.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1947
* chore(deps): bump golang.org/x/crypto from 0.32.0 to 0.33.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1951
* chore(deps): bump golang.org/x/net from 0.34.0 to 0.35.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1952
* chore(deps): bump securego/gosec from 2.22.0 to 2.22.1 by @dependabot in https://github.com/valyala/fasthttp/pull/1956
## New Contributors
* @prepaser made their first contribution in https://github.com/valyala/fasthttp/pull/1920
* @inetol made their first contribution in https://github.com/valyala/fasthttp/pull/1950
**Full Changelog**: https://github.com/valyala/fasthttp/compare/v1.58.0...v1.59.0
v1.58.0 (2024-12-09)
## What's Changed
* chore(deps): bump golang.org/x/crypto from 0.28.0 to 0.29.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1895
* perf: improve copyZeroAlloc for os.File and net.TCPConn by @ksw2000 in https://github.com/valyala/fasthttp/pull/1893
* refactor: fix revive.indent-error-flow lint issues by @alexandear in https://github.com/valyala/fasthttp/pull/1896
* chore(deps): bump golang.org/x/net from 0.30.0 to 0.31.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1897
* fix: incorrect handling of negative cookie.maxAge #1900 by @ksw2000 in https://github.com/valyala/fasthttp/pull/1902
* fix: lenient chunk extension parsing leading to request smuggling issues by @JeppW in https://github.com/valyala/fasthttp/pull/1899
* fix: ShutdownWithContext and ctx.Done() exist race. by @r27153733 in https://github.com/valyala/fasthttp/pull/1908
## New Contributors
* @JeppW made their first contribution in https://github.com/valyala/fasthttp/pull/1899
* @r27153733 made their first contribution in https://github.com/valyala/fasthttp/pull/1908
**Full Changelog**: https://github.com/valyala/fasthttp/compare/v1.57.0...v1.58.0
v1.57.0 (2024-10-28)
## What's Changed
* Add a note to clarify header.Set behavior on cookies by @sigmundxia in https://github.com/valyala/fasthttp/pull/1864
* chore(deps): bump github.com/klauspost/compress from 1.17.9 to 1.17.10 by @dependabot in https://github.com/valyala/fasthttp/pull/1872
* chore(deps): bump securego/gosec from 2.21.3 to 2.21.4 by @dependabot in https://github.com/valyala/fasthttp/pull/1874
* feat (request): expose req timeout by @aarcex3 in https://github.com/valyala/fasthttp/pull/1878
* chore(deps): bump golang.org/x/crypto from 0.27.0 to 0.28.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1881
* chore(deps): bump golang.org/x/net from 0.29.0 to 0.30.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1880
* improve ishex and unhex by hex2intTable by @ksw2000 in https://github.com/valyala/fasthttp/pull/1883
* chore(deps): bump github.com/andybalholm/brotli from 1.1.0 to 1.1.1 by @dependabot in https://github.com/valyala/fasthttp/pull/1884
* chore(deps): bump github.com/klauspost/compress from 1.17.10 to 1.17.11 by @dependabot in https://github.com/valyala/fasthttp/pull/1886
* chore: Upgrade golangci-lint to 1.61.0 by @alexandear in https://github.com/valyala/fasthttp/pull/1887
* feat(fasthttpproxy): add dual-stack connection support to enable IPv6 proxies for HTTP and SOCKS5 dialers by @lavish440 in https://github.com/valyala/fasthttp/pull/1885
* fix RequestCtx is canceled (#1879) by @ksw2000 in https://github.com/valyala/fasthttp/pull/1890
## New Contributors
* @aarcex3 made their first contribution in https://github.com/valyala/fasthttp/pull/1878
* @lavish440 made their first contribution in https://github.com/valyala/fasthttp/pull/1885
**Full Changelog**: https://github.com/valyala/fasthttp/compare/v1.56.0...v1.57.0
v1.56.0 (2024-09-24)
## What's Changed
* fix: add timeout to proxy connection reading and writing by @Sniper91 in https://github.com/valyala/fasthttp/pull/1791
* Validate header values by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1796
* chore(deps): bump golang.org/x/sys from 0.21.0 to 0.22.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1800
* chore(deps): bump golang.org/x/crypto from 0.24.0 to 0.25.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1802
* chore(deps): bump golang.org/x/net from 0.26.0 to 0.27.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1801
* Optimize struct field order to reduce memory usage by @ksw2000 in https://github.com/valyala/fasthttp/pull/1809
* Fix possible race condition on request ctx done #1662 by @byte0o in https://github.com/valyala/fasthttp/pull/1806
* Fix header parser (#1808) by @ksw2000 in https://github.com/valyala/fasthttp/pull/1810
* Replace custom AppendUint with strconv.AppendUint by @gaby in https://github.com/valyala/fasthttp/pull/1813
* Use Named Fields and Align Structures to Reduce Memory Usage by @gaby in https://github.com/valyala/fasthttp/pull/1814
* chore(deps): bump golang.org/x/crypto from 0.25.0 to 0.26.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1820
* chore(deps): bump golang.org/x/net from 0.27.0 to 0.28.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1821
* chore(deps): bump golang.org/x/sys from 0.23.0 to 0.24.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1823
* StreamRequestBody shouldn't read more data than actual need. by @newacorn in https://github.com/valyala/fasthttp/pull/1819
* Reduce the size of ResponseHeader and RequestHeader by @ksw2000 in https://github.com/valyala/fasthttp/pull/1826
* A response without a body can't have trailers by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1825
* TestHostClientMaxConnWaitTimeoutError test case sometimes fails by @newacorn in https://github.com/valyala/fasthttp/pull/1832
* Fix the MaxConns semaphore issue in HostClient. by @newacorn in https://github.com/valyala/fasthttp/pull/1831
* Add a dedicated cache container for the zstd compression algorithm by @newacorn in https://github.com/valyala/fasthttp/pull/1828
* We cannot avoid continuing to call SetReadDeadline and similar methods after the connection is closed. by @newacorn in https://github.com/valyala/fasthttp/pull/1835
* Remove support for go 1.19 and 1.20, and add support for 1.23 by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1837
* Merge the various proxy dialer implementations from the fasthttpproxy into a single struct. by @newacorn in https://github.com/valyala/fasthttp/pull/1829
* Make RetryIfFunc handle request errors by @ksw2000 in https://github.com/valyala/fasthttp/pull/1818
* Using atomic instead of mutex and delete scratch slice by @NikoMalik in https://github.com/valyala/fasthttp/pull/1833
* Fix Different request paths share the same `fs` cache is some cases. by @newacorn in https://github.com/valyala/fasthttp/pull/1843
* Make the tests complete earlier. by @newacorn in https://github.com/valyala/fasthttp/pull/1848
* Fix potential data race reports when the `-race` flag is enabled. by @newacorn in https://github.com/valyala/fasthttp/pull/1847
* Fix issues with tests interfering with each other in certain situations. by @newacorn in https://github.com/valyala/fasthttp/pull/1842
* When `StreamRequestBody` is set to `true`, we cannot safely release `br` by @newacorn in https://github.com/valyala/fasthttp/pull/1844
* Revert Pull 1233 fix: The client write operation did not immediately return upon encountering an RST packet. by @newacorn in https://github.com/valyala/fasthttp/pull/1849
* RetryIf might need more information and greater control over the execution flow. by @newacorn in https://github.com/valyala/fasthttp/pull/1850
* Sorry about forgetting to remove a redundant field and clarify the comments. by @newacorn in https://github.com/valyala/fasthttp/pull/1851
* chore(deps): bump golang.org/x/crypto from 0.26.0 to 0.27.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1858
* chore(deps): bump golang.org/x/net from 0.28.0 to 0.29.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1857
* chore(deps): bump securego/gosec from 2.20.0 to 2.21.1 by @dependabot in https://github.com/valyala/fasthttp/pull/1855
* chore(deps): bump securego/gosec from 2.21.1 to 2.21.2 by @dependabot in https://github.com/valyala/fasthttp/pull/1861
* Revert "Using atomic instead of mutex and delete scratch slice" by @newacorn in https://github.com/valyala/fasthttp/pull/1846
* Fix improper memory reuse in NewFastHTTPHandler by @sigmundxia in https://github.com/valyala/fasthttp/pull/1860
* Improve the performance of ConnState.String() by @ksw2000 in https://github.com/valyala/fasthttp/pull/1871
* chore(deps): bump securego/gosec from 2.21.2 to 2.21.3 by @dependabot in https://github.com/valyala/fasthttp/pull/1870
* Reduce the size of the Cookie by 32 bytes. by @ksw2000 in https://github.com/valyala/fasthttp/pull/1866
* fix: type assertion to perIPTLSConn instead of erroneous perIPConn by @KSpaceer in https://github.com/valyala/fasthttp/pull/1863
* Improve performance of ParseUfloat by @ksw2000 in https://github.com/valyala/fasthttp/pull/1865
## New Contributors
* @Sniper91 made their first contribution in https://github.com/valyala/fasthttp/pull/1791
* @ksw2000 made their first contribution in https://github.com/valyala/fasthttp/pull/1809
* @newacorn made their first contribution in https://github.com/valyala/fasthttp/pull/1819
* @NikoMalik made their first contribution in https://github.com/valyala/fasthttp/pull/1833
* @sigmundxia made their first contribution in https://github.com/valyala/fasthttp/pull/1860
* @KSpaceer made their first contribution in https://github.com/valyala/fasthttp/pull/1863
**Full Changelog**: https://github.com/valyala/fasthttp/compare/v1.55.0...v1.56.0
v1.55.0 (2024-06-17)
## What's Changed
* all: add riscv64 support by @mengzhuo in https://github.com/valyala/fasthttp/pull/1781
* Use FASTHTTP_PREFORK_CHILD env variable to detect child by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1783
* Fix common recurring CI issues by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1784
* test: fix typo by @alexandear in https://github.com/valyala/fasthttp/pull/1790
* Don't allow \r in header names by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1789
* chore(deps): bump github.com/klauspost/compress from 1.17.7 to 1.17.9 by @dependabot in https://github.com/valyala/fasthttp/pull/1792
* chore(deps): bump golang.org/x/crypto from 0.21.0 to 0.24.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1787
* chore(deps): bump golang.org/x/net from 0.23.0 to 0.26.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1788
* chore(deps): bump securego/gosec from 2.19.0 to 2.20.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1776
## New Contributors
* @mengzhuo made their first contribution in https://github.com/valyala/fasthttp/pull/1781
**Full Changelog**: https://github.com/valyala/fasthttp/compare/1.54.0...v1.55.0
v1.54.0 (2024-05-22)
## What's Changed
* fs: fix GenerateIndexPages when DirFS or embed.FS is used by @efectn in https://github.com/valyala/fasthttp/pull/1778
* fs: fix openIndexFile when dirPath is empty string by @efectn in https://github.com/valyala/fasthttp/pull/1779
**Full Changelog**: https://github.com/valyala/fasthttp/compare/v1.53.0...1.54.0
v1.53.0 (2024-05-14)
## What's Changed
* chore(deps): bump securego/gosec from 2.18.2 to 2.19.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1720
* adaptor ResponseWriter - adding Hijack method and pass proper fields by @gilwo in https://github.com/valyala/fasthttp/pull/1525
* Remove unnecessary build tag go1.21 by @alexandear in https://github.com/valyala/fasthttp/pull/1721
* Upgrade golangci-lint to v1.56.2; fix gocritic issues by @alexandear in https://github.com/valyala/fasthttp/pull/1722
* feat:support zstd compress and uncompressed by @Max-Cheng in https://github.com/valyala/fasthttp/pull/1701
* chore(deps): bump golang.org/x/crypto from 0.19.0 to 0.20.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1725
* Enable several gocritic checks; resolve identified issues by @alexandear in https://github.com/valyala/fasthttp/pull/1728
* test: remove `//nolint:govet` comments by @alexandear in https://github.com/valyala/fasthttp/pull/1729
* Enable perfsprint linter; fix up lint issues by @alexandear in https://github.com/valyala/fasthttp/pull/1727
* refactor: rename error local variables by @alexandear in https://github.com/valyala/fasthttp/pull/1738
* test: remove redundant error check by @alexandear in https://github.com/valyala/fasthttp/pull/1741
* fix: panic in ParseIPv4 when len(dst) > 4 by @alexandear in https://github.com/valyala/fasthttp/pull/1742
* test: remove panics in client tests by @alexandear in https://github.com/valyala/fasthttp/pull/1747
* chore(deps): bump golang.org/x/net from 0.22.0 to 0.23.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1748
* add support for CHIPS (Cookies Having Independent Partitioned State) by @gurkan0791 in https://github.com/valyala/fasthttp/pull/1752
* Add macos-14 platform, enable shuffle of unit-tests by @gaby in https://github.com/valyala/fasthttp/pull/1746
* refactor: do not return error as it is always nil by @alexandear in https://github.com/valyala/fasthttp/pull/1759
* fix: propagate body stream error to close function (#1743) by @mdenushev in https://github.com/valyala/fasthttp/pull/1757
* chore(deps): bump golangci/golangci-lint-action from 4 to 5 by @dependabot in https://github.com/valyala/fasthttp/pull/1769
* Don't allow , in host when using Client by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1761
* Implemented what was described by me in #1766. by @rhabichl in https://github.com/valyala/fasthttp/pull/1767
* feat: add address to tryDial errors by @mdenushev in https://github.com/valyala/fasthttp/pull/1763
* chore(deps): bump golangci/golangci-lint-action from 5 to 6 by @dependabot in https://github.com/valyala/fasthttp/pull/1774
## New Contributors
* @gilwo made their first contribution in https://github.com/valyala/fasthttp/pull/1525
* @Max-Cheng made their first contribution in https://github.com/valyala/fasthttp/pull/1701
* @gurkan0791 made their first contribution in https://github.com/valyala/fasthttp/pull/1752
* @mdenushev made their first contribution in https://github.com/valyala/fasthttp/pull/1757
* @rhabichl made their first contribution in https://github.com/valyala/fasthttp/pull/1767
**Full Changelog**: https://github.com/valyala/fasthttp/compare/v1.52.0...v1.53.0
v1.52.0 (2024-02-12)
## What's Changed
### Minor backwards incompatible changes
These changes are only backwards incompatible if you are sending bad requests.
* Prevent request smuggling by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1719
* Follow RFCs 7230 and 9112 for HTTP versions by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1710
### New features
* Implement `GetRejectedConnectionsCount` function by @mopeneko in https://github.com/valyala/fasthttp/pull/1704
* add DisableDNSResolution for TCPDialer. by @xuxiao415 in https://github.com/valyala/fasthttp/pull/1702
* feat: add function to parse HTTP header parameters by @nickajacks1 in https://github.com/valyala/fasthttp/pull/1685
* add support for custom dial function with timeouts by @avivcarmis in https://github.com/valyala/fasthttp/pull/1669
### Other
* Enable wastedassign, whitespace linters; fix issues by @alexandear in https://github.com/valyala/fasthttp/pull/1665
* chore: Use 'any' instead of 'interface{}' by @alexandear in https://github.com/valyala/fasthttp/pull/1666
* bug: Flush the write buffer before putting it to the pool by @Jille in https://github.com/valyala/fasthttp/pull/1672
* copyZeroAlloc: Try WriteTo and ReadFrom before acquiring a buffer by @Jille in https://github.com/valyala/fasthttp/pull/1673
* writeBodyFixedSize: Only do an early flush if the reader is an *os.File by @Jille in https://github.com/valyala/fasthttp/pull/1674
* chore: Set max line length to 130 characters by @alexandear in https://github.com/valyala/fasthttp/pull/1676
* docs: Add missing dots at the end of comments by @alexandear in https://github.com/valyala/fasthttp/pull/1677
* chore(deps): bump golang.org/x/crypto from 0.14.0 to 0.17.0 by @dependabot in https://github.com/valyala/fasthttp/pull/1678
* chore: move cookie fuzz test to go 1.18 fuzzing by @nickajacks1 in https://github.com/valyala/fasthttp/pull/1686
* Change empty string checks to be more idiomatic by @alexandear in https://github.com/valyala/fasthttp/pull/1684
* test(expvarhandler): fix failure when using -count to run more than once by @nickajacks1 in https://github.com/valyala/fasthttp/pull/1688
* test: migrate remaining fuzzit tests to go 1.18 fuzzing by @nickajacks1 in https://github.com/valyala/fasthttp/pull/1687
* Add CIFuzz by @AdamKorcz in https://github.com/valyala/fasthttp/pull/1443
* refactor: move manually created tchar table to bytesconv_table_gen by @nickajacks1 in https://github.com/valyala/fasthttp/pull/1689
* Bump supported Go version in readme by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1690
* update build tag by @tylitianrui in https://github.com/valyala/fasthttp/pull/1695
* Updates to GitHub Actions, add go1.22 to Test Matrix by @gaby in https://github.com/valyala/fasthttp/pull/1707
* chore(deps): bump golangci/golangci-lint-action from 3 to 4 by @dependabot in https://github.com/valyala/fasthttp/pull/1711
* Bump dependencies by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1718
## New Contributors
* @avivcarmis made their first contribution in https://github.com/valyala/fasthttp/pull/1669
* @Jille made their first contribution in https://github.com/valyala/fasthttp/pull/1672
* @nickajacks1 made their first contribution in https://github.com/valyala/fasthttp/pull/1685
* @AdamKorcz made their first contribution in https://github.com/valyala/fasthttp/pull/1443
* @mopeneko made their first contribution in https://github.com/valyala/fasthttp/pull/1704
* @gaby made their first contribution in https://github.com/valyala/fasthttp/pull/1707
**Full Changelog**: https://github.com/valyala/fasthttp/compare/v1.51.0...v1.52.0
v1.51.0 (2023-11-14)
## What's Changed
* Refactor: Move RSA Key and Certificate to Variables in Tests by @OrangeFlag in https://github.com/valyala/fasthttp/pull/1621
* Replace path.Join with filepath.Join in tests by @alexandear in https://github.com/valyala/fasthttp/pull/1623
* reset request disableSpecialHeader by @xiluoxi in https://github.com/valyala/fasthttp/pull/1626
* Make `hijackConn` behaviour compliant with `net.Conn` interface by @askolesov in https://github.com/valyala/fasthttp/pull/1629
* BUGFIX: HostClient.DialDualStack not work when using DoDeadline by @cloudfly in https://github.com/valyala/fasthttp/pull/1634
* Allow redirect URI path to not be normalized. by @skidder in https://github.com/valyala/fasthttp/pull/1638
* Add support to fs.fs on serve static files by @peczenyj in https://github.com/valyala/fasthttp/pull/1640
* fix benchmark panics on client_timing_test.go by @peczenyj in https://github.com/valyala/fasthttp/pull/1643
* add support to go 1.21.x into test.yml by @peczenyj in https://github.com/valyala/fasthttp/pull/1642
* Don't fast fail when one test fails by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/1645
* Skip fs cache based on config by @peczenyj in https://github.com/valyala/fasthttp/pull/1644
* chore: Rename coarseTime.go to coarsetime.go by @alexandear in https://github.com/valyala/fasthttp/pull/1651
* chore: Remove redundant and outdated build constraints by @alexandear in https://github.com/valyala/fasthttp/pull/1650
* chore: add golangci-lint config file for flexibility by @alexandear in https://github.com/valyala/fasthttp/pull/1649
* Lazy load stackless functions by @Gusted in https://github.com/valyala/fasthttp/pull/1656
* Enable dupword, unconvert linters by @alexandear in https://github.com/valyala/fasthttp/pull/1658
## New Contributors
* @OrangeFlag made their first contribution in https://github.com/valyala/fasthttp/pull/1621
* @xiluoxi made their first contribution in https://github.com/valyala/fasthttp/pull/1626
* @askolesov made their first contribution in https://github.com/valyala/fasthttp/pull/1629
* @cloudfly made their first contribution in https://github.com/valyala/fasthttp/pull/1634
* @skidder made their first contribution in https://github.com/valyala/fasthttp/pull/1638
* @Gusted made their first contribution in https://github.com/valyala/fasthttp/pull/1656
**Full Changelog**: https://github.com/valyala/fasthttp/compare/v1.50.0...v1.51.0
v1.50.0 (2023-09-14)
* 8cc5539 Fix various request timeout issues (Erik Dubbelboer)
* 34e7da1 Allow connection close for custom streams (#1603) (Armin Becher)
* 8236f8d fasthttpproxy: fix doc examples (Oleksandr Redko)
* 4ec5c5a docs: fix typos in comments and tests (Oleksandr Redko)
* 9aa666e Enable gocritic linter; fix lint issues (#1612) (Oleksandr Redko)
v1.49.0 (2023-08-28)
* 0e99e64 Update golangci-lint and gosec (#1609) (Erik Dubbelboer)
* 6aea1e0 fix round2_32, split round2 tests because they depend on sizeof int at compile time (#1607) (Duncan Overbruck)
* 4b0e6c7 Update ErrNoMultipartForm (Erik Dubbelboer)
* 727021a Update security policy (Erik Dubbelboer)
* 54fdc7a Abstracts the RoundTripper interface and provides a default implement (#1602) (Tim)
* e181af1 fasthttpproxy support ipv6 (#1597) (Pluto)
* 6eb2249 fix:fasthttp server with tlsConfig (#1595) (Zhang Xiaopei)
* 1c85d43 Fix round2 (Erik Dubbelboer)
* 064124e Avoid nolint:errcheck in header tests (#1589) (Oleksandr Redko)
* 0d0bbfe Auto add 'Vary' header after compression (#1585) (AutumnSun)
* d229959 Remove unnecessary indent blocks (#1586) (Oleksandr Redko)
* 6b68042 Use timeout in TCPDialer to resolveTCPAddrs (#1582) (un000)
v1.48.0 (2023-06-20)
* ffdf59d Enable gofumpt linter; format code `gofumpt -w .` (#1576) (Oleksandr Redko)
* b79233f add DisableSpecialHeaders option (#1573) (Anthony Ter-Saakov)
* f0865d4 fs: fix race condition on global map (#1565) (leonklingele)
* 829f5b2 Don't run test that times out often in parallel (Erik Dubbelboer)
* e6ce5f0 Remove invalid documentation (Erik Dubbelboer)
* 9bc8e48 Request timeout settings for the same domain name are reused (#1558) (byte0o)
* d2f97fc fix the problem: HostClient maybe delete when pendingClientRequests > 0 (#1562) (Zhengkai Wang)
* 7ea3b63 add concurrency for client's HostClient map (#1550) (Zhengkai Wang)
* eaab8ff Refactor by removing unnecessary else block (#1559) (Oleksandr Redko)
* 1a46e57 update go.sum (#1555) (tyltr)
* fa72f3c Fix tests (#1552) (Erik Dubbelboer)
v1.47.0 (2023-05-01)
* 1dcf562 test: refactor to use WriteString (#1546) (Oleksandr Redko)
* d2f0d17 examples/client: fix error (#1545) (Oleksandr Redko)
* 00c291b pprofhandler: use bytes.HasPrefix for consistency (#1543) (Oleksandr Redko)
* 1aac293 test: use ReplaceAll, remove unnecessary else (#1542) (Oleksandr Redko)* 1dcf562 test: refactor to use WriteString (#1546) (Oleksandr Redko)
* d2f0d17 examples/client: fix error (#1545) (Oleksandr Redko)
* 00c291b pprofhandler: use bytes.HasPrefix for consistency (#1543) (Oleksandr Redko)
* 1aac293 test: use ReplaceAll, remove unnecessary else (#1542) (Oleksandr Redko)
v1.46.0 (2023-04-20)
* cdea4fe Refactor client's example code (#1539) (Nikolay Vedernikov)
* 87cb886 client:Fix DoTimeout timeout failure by setting temporary dial (#1535) (kukayiyi)
* 43cc487 fix: add noDefaultContentType copy (#1538) (kinggo)
* d76662b Fixed transfer-encoding for empty chunked payload (#1536) (Abe Saiovici)
* 6b958c2 support response body stream (#1414) (Anthony-Dong)
* 239cce4 format : update some codes style (#1533) (LeoSun)
* 5f4899a remove (#1534) (tyltr)
* d0f2727 get rid of some panics (#1526) (Moritz Poldrack)
* 5209cc3 optimize:reduce loop (#1532) (tyltr)
* 0be5a41 test: simplify bytes.Buffer declaration (#1523) (Oleksandr Redko)
* faf565e GitHub actions/setup-go@v4 (#1520) (Oleksandr Redko)
v1.45.0 (2023-03-15)
* 53e376f Update dependencies (Erik Dubbelboer)
* b334443 docs: add missing dot to ConvertRequest comment (#1516) (Oleksandr Redko)
* a281f1d client: HostClient.Do hangs out when ErrConnPoolStrategyNotImpl (#1515) (Oleksandr Redko)
* 7846101 client: fix Do hangs when configure host client fails (#1514) (Oleksandr Redko)
* 9c0e39f Fix proxy auth bug (Erik Dubbelboer)
* a9d57a9 client: remove unused go:build comment (#1511) (Oleksandr Redko)
* 498a814 test: fix typos in function, error message, comment (#1512) (Oleksandr Redko)
* 4ca6994 test: use Fprintf to simplify writing headers (#1510) (Oleksandr Redko)
* 74a0507 Immediately return ErrTimeout if deadline is already reached. (#1497) (Igor Menshenin)
* 559d536 Bump golang.org/x/crypto from 0.0.0-20220214200702-86341886e292 to 0.1.0 (#1508) (dependabot[bot])
* 4e8c92b http.go: close form file if copyZeroAlloc fails (#1498) (Oleksandr Redko)
* 8800d4b Bump golang.org/x/net from 0.0.0-20220906165146-f3363e06e74c to 0.7.0 (#1503) (dependabot[bot])
* c8d2e0e Bump golang.org/x/text from 0.3.7 to 0.3.8 (#1502) (dependabot[bot])
* ac631aa fix functiom name (#1505) (cui fliter)
* 2ab7906 test: bind to localhost instead of all interfaces (#1495) (Oleksandr Redko)
* b79a03a test: close response body (#1496) (Oleksandr Redko)
* 9230a3d docs: Deprecate ErrAlreadyServing as never returning (#1491) (Oleksandr Redko)
* e15a810 docs: fix grammar issues and typos in comments (#1492) (Oleksandr Redko)
* 5147cec docs: replace links to golang.org with go.dev (#1489) (Oleksandr Redko)
* 934f04e Refactor golangci-lint config and remove redundant nolints (#1486) (Oleksandr Redko)
* f84e234 Rename unexported funcs, vars to match common Go (#1488) (Oleksandr Redko)
* f111c7e Add missing fasthttp prefix in example usage (#1487) (Oleksandr Redko)
* 8dcbc41 test: use T.TempDir instead of MkdirTemp (#1485) (Oleksandr Redko)
* c0c5f9c doc,test: correct typos (#1484) (Oleksandr Redko)
* b0fe6f0 optimized b2s function (#1483) (orangesobeautiful)
* 2e81dca update compress modulule, drop 1.16 (#1482) (M. Efe Çetin)
* 9d5a7bf Add support for Go 1.20 (#1481) (Erik Dubbelboer)
* b2e66a5 docs: add http2curl (#1480) (kinggo)
* 776a4c7 fix: modify normalizePath (#1478) (kinggo)
* eef368e clear dst bodyRaw before copy (#1476) (tyltr)
* e87f84c fix: CopyTo doesn't copy bodyraw deeply (#1471) (kinggo)
v1.44.0 (2023-01-10)
* fc2d704 chore: Update README.md (#1470) (Aadithya V)
* 2a00c86 Github actions/checkout@v3 (Erik Dubbelboer)
* 434022b server.go Simplify default Server name logic (#1467) (Sergey Ponomarev)
* 51048b0 client.go Simplify default UA logic (#1466) (Sergey Ponomarev)
* e46afc3 fix: client may remove hostclient incorrectly (#1461) (Xuran)
* 9b4a7e5 fix http2 adapter (#1457) (Shawn)
* c637221 optimize: allow http head when use getonly (#1456) (kinggo)
* b788e66 feat: support custom formvalue function (#1453) (kinggo)
* 2a572e0 doc: optimize the comment of the Request.Done method (#1454) (kinggo)
* f6aac90 Fixed an error caused of character when @ > 1 during proxy authentication (#1452) (Amzza0x00)
* 951f5a1 add optional simulated addresses to pipeconn and inmemorylistener (#1449) (Tobias Krischer)
v1.43.0 (2022-11-28)
* dbf457e Revert "feat: support mulit/range (#1398)" (#1446) (Erik Dubbelboer)
* c50de95 client.go fix addMissingPort() (#1444) (Sergey Ponomarev)
v1.42.0 (2022-11-24)
* 4995135 feat: add ShutdownWithContext (#1383) (kinggo)
* 7b3bf58 style: modify typo and remove repeated type conversions (#1437) (kinggo)
* 8f43443 Wait for the response of pipelineWork in background and return it to pool (#1436) (Andy Pan)
* c367454 Fix some potential pool leaks (#1433) (Andy Pan)
* b32a3dd Use time.Until(deadline) instead of -time.Since(deadline) (#1434) (Andy Pan)
* 8a60232 Assert with *net.TCPConn instead of *net.TCPListener in acceptConn() for TCP sockets (#1432) (Andy Pan)
* c57a2ce Make sure nothing is nil in tmp slice (#1423) (hs son)
* f095481 Request.SetTimeout (#1415) (brian-armstrong-discord)
* c88dd5d fix form empty field error when used with pipe (#1417) (nick9822)
* a468a7d feat: support mulit/range (#1398) (byene0923)
* 3963a79 feat: add PeekKeys and PeekTrailerKeys (#1405) (kinggo)
* eca86de fix: (#1410) (byene0923)
* e214137 fix: ignore body should not set content-length of streaming (#1406) (byene0923)
v1.41.0 (2022-10-25)
* 128e9b3 optimize: adjust the behavior of PeekAll based on VisitAll (#1403) (kinggo)
* 2c8ce3b feat: add header.PeekAll (#1394) (kinggo)
* d404f2d make RequestCtx's userdata accept keys that are of type: interface{} (#1387) (pj)
* bcf7e8e test: merge test in adaptor_test.go (#1381) (kinggo)
* 31fdc79 resolve CVE-2022-27664 (#1377) (Craig O'Donnell)
* 40eec0b byte to string unsafe conversion in fasthttpadaptor ConvertRequest method (#1375) (Emre Savcı)
* a696949 Deprecate Go 1.15 (#1379) (Aoang)
v1.40.0 (2022-09-06)
* 2f1e949 Improve isTLSAlready check (Erik Dubbelboer)
* 404c8a8 Chore (#1365) (tyltr)
* 79ccfff Don't use tls ClientSessionCache (Erik Dubbelboer)
* 28bec71 Fix "use of closed network connection" error check (Erik Dubbelboer)
* 3b147b7 Fix(server): reset maxRequestBodySize to the server's config (#1360) (Geralt X Li)
* af94725 Reduce slice growth in adaptor (#1356) (Qing Moy)
v1.39.0 (2022-08-15)
* ea60524 Add Go 1.19 Support (#1355) (Aoang)
* a5f448f Improve Client timeout (#1346) (Erik Dubbelboer)
* 42f83c6 Prevent overflow and panic on large HTTP responses (#1351) (mathew)
* f3513cc Introduce FS.CompressRoot (#1331) (mojatter)
* c94be05 use timeout insteadof read/writetimeout when timeout lower than read/… (#1336) (fare83)
* b23c5e9 Close new connections after 5s in closeIdleConns (Erik Dubbelboer)
* 5b0cbf2 Fix apparent documentation typo (#1330) (kayos)
v1.38.0 (2022-06-27)
* 16d30c4 Support AIX SO_REUSEADDR and SO_REUSEPORT (#1328) (zhangyongding)
* bc24f9d Consolidate TCPKeepalive in server.Serve (#1320) (#1324) (Y.Horie)
* 8a32089 Add `ConnPoolStrategy` field to client (#1317) (Thearas)
* 35aca7b BodyDecoded() for request and responses (#1308) (Sergey Ponomarev)
* 66cd502 header.go Referer() optimize (#1313) (Sergey Ponomarev)
* c9f43ea Response.ContentEncoding(): store as field and avoid using Header.SetCanonical() (#1311) (Sergey Ponomarev)
* de18824 Optimize server connection close logic (#1310) (Sergey Ponomarev)
v1.37.0 (2022-05-17)
* 66bc61e Add an option to allow empty root in the fsHandler (#1299) (RW)
* 9961079 Fix userdata re-use after Remove (Erik Dubbelboer)
v1.36.0 (2022-04-27)
* 7cc6f4c Fix DoTimeout Streaming body bug (Erik Dubbelboer)
* 9a0b4d0 optimize (#1275) (tyltr)
* e3d2512 optimize (#1272) (tyltr)
* b40b5a4 Update tlsClientHandshake (#1263) (Mikhail Faraponov)
* c7576cc Added Windows support and removed some panics (#1264) (Mauro Leggieri)
* f0e1be5 add nil check of req.body and resp.body on ReleaseBody (#1266) (zzzzwc)
v1.35.0 (2022-04-05)
* 7a5afdd Use %v for errors and %q for strings (#1262) (Erik Dubbelboer)
* e4a541f support adding/removing clients from LBClient (#1243) (Cam Sweeney)
* b4152d1 Only set RequestCtx.s once (Erik Dubbelboer)
* d4c739e State active (#1260) (Erik Dubbelboer)
* f3bce3a Add Go 1.18 support (#1253) (Aoang)
* c674263 Fix race conditions in tests (Erik Dubbelboer)
* 286828e add a test for AppendQuotedArg (#1255) (ZhangYunHao)
* 2044e1e reduce unnessary type assart (#1254) (tyltr)
* 3101938 Imporve AppendHTMLEscape fast path (#1249) (ZhangYunHao)
* d1753f7 bytesconv: add appropriate build tags for s390x (#1250) (Nick Rosbrook)
* 8f5e51f Add connection pool queuing strategies in HostClient. (#1238) (Y.Horie)
* f7423e3 Fix AppendHTMLEscape (#1248) (ZhangYunHao)
* 1a5f2f4 Read response when client closes connection #1232 (#1233) (ArminBTVS)
v1.34.0 (2022-03-07)
* 59f94a3 Update github.com/klauspost/compress (#1237) (Mikhail Faraponov)
* 62c15a5 Don't reset RequestCtx.s (#1234) (Erik Dubbelboer)
* 7670c6e Fix windows tests (#1235) (Erik Dubbelboer)
* f54ffa1 feature: Keep the memory usage of the service at a stable level (#1216) (Rennbon)
* 15262ec Warn about unsafe ServeFile usage (#1228) (Erik Dubbelboer)
* 1116d03 Fix panic while reading invalid trailers (Erik Dubbelboer)
* 856ca8e Update dependencies (#1230) (Mikhail Faraponov)
* 6b5bc7b Add windows support to normalizePath (Erik Dubbelboer)
* f0b0cfe Don't log ErrBadTrailer by default (Erik Dubbelboer)
* 6937fee fix: (useless check), skip Response body if http method HEAD (#1224) (Pavel Burak)
* b85d2a2 Fix http proxy behavior (#1221) (Aoang)
* ad8a07a RequestHeader support set no default ContentType (#1218) (Jack.Ju)
* c94581c support configure HostClient (#1214) (lin longhjui)
* 632e222 Client examples (#1208) (Sergey Ponomarev)
* 6a3cc23 uri_test.go use example.com for clearness (#1212) (Sergey Ponomarev)
* 9d665e0 Update dependencies (#1204) (Mikhail Faraponov)
* 8d7953e Fix scheme check for not yet parsed requests (#1203) (ArminBTVS)
v1.33.0 (2022-01-27)
* 61aa8b1 remove redundant code (#1202) (tyltr)
* 4369776 fix(hijack): reuse RequestCtx (#1201) (Sergio VS)
* 2aca3e8 fix(hijack): reset userValues after hijack handler execution (#1199) (Sergio VS)
* 9123060 Updated dependencies (#1194) (Mikhail Faraponov)
v1.32.0 (2022-01-10)
* 7eeb00e Make tests less flaky (#1189) (Erik Dubbelboer)
* d19b872 Update tcpdialer.go (#1188) (Mikhail Faraponov)
* c727b99 Release UseHostHeader in ReleaseRequest() (#1185) (Tolyar)
* 6c0518b Fix UseHostHeader for DoTimeout + tests (#1184) (Tolyar)
* 6b55811 Add MaxIdleWorkerDuration to Server. (#1183) (Kilos Liu)
* 4517204 Allow to set Host header for Client (#1169) (Tolyar)
* 258a4c1 fix: reset response after reset user values on keep-alive connections (#1176) (Sergio VS)
* e9db537 Use %w to wrap errors (#1175) (Erik Dubbelboer)
* 7db0597 Fix bad request trailer panic (Erik Dubbelboer)
* 4aadf9a Fix parseTrailer panic (Erik Dubbelboer)
* da7ff7a Add trailer support (#1165) (ichx)
* 017f0aa fix: reset request after reset user values on keep-alive connections (#1162) (Sergio VS)
* 3b117f8 feat: close idle connections when server shutdown (#1155) (ichx)
* a94a2c3 Remove redundant code (#1154) (ichx)
* f7c354c Fix race condition in Client.mCleaner (Erik Dubbelboer)
* c078a9d Add string and bytes buffer convert trick in README (#1151) (ichx)
* 3ff6aaa uri: isHttps() and isHttp() (#1150) (Sergey Ponomarev)
* 8febad0 http.go: Request.SetURI() (Fix #1141) (#1148) (Sergey Ponomarev)
* 2ca01c7 fix: Status Line parsing and writing (#1135) (Shivansh Vij)
* 931d0a4 Fix lint (Erik Dubbelboer)
* d613502 use sync.map is better (#1145) (halst)
* c15e642 Don't run all race tests on windows (#1143) (Erik Dubbelboer)
* 6006c87 chore (#1137) (tyltr)
* 6d4db9b Fix race condition in getTCPAddrs (Erik Dubbelboer)
* 528dd62 feat: ability to read body separate from header (#1130) (Shivansh Vij)
* 556aa81 feat: ability to edit status messages (#1126) (Valentin Paz Marcolla)
* 4cfec1a feat: make public Server.TLSConfig (#1128) (Sergio VS)
* fe7d90e remove redundant code (#1127) (tyltr)
v1.31.0 (2021-10-11)
* 81fc968 Add warning to readme (Erik Dubbelboer)
* 7fdd526 feat: a new userData API `Remove` (#1117) (tyltr)
* f307299 feat:no need to store nil (#1116) (tyltr)
* ad6d128 URI.Parse should never change it's input (Erik Dubbelboer)
* ffab77a Improve return value reusability documentation (Erik Dubbelboer)
* 542a203 Properly parse URI (Erik Dubbelboer)
* 711e421 feat: improve TCPDialer by `sync.map` instead of `map+mutex` (#1106) (tyltr)
* adc0e57 Remove useless runtime.KeepAlive (#1107) (Oleg Kovalov)
* 44d0333 fix: typo (#1105) (tyltr)
* 06b464f fix typo in deadline (#1099) (Evgenii)
* 46d9235 Check go fmt during lint (#1097) (Erik Dubbelboer)