v1.12.0: Bugfixes, and caching buffer allocation
First release in some time. Fixing lots of bugs and adding io.ReaderAt
compatibility of files, and various allocation and byte-slice optimizations courtesy of Nicola "@drakkan" Murino.
Below are the highlights:
Features:
[GH-285] Implement io.ReaderAt
interface on File
struct.
[GH-338] Remove an unnecessary allocate+copy when unmarshaling data packets.
[GH-343] Allocate byte-slices anticipating full capacity to avoid allocate+copies when they are extended.
[GH-344] Add an optional caching allocator, to allow reuse of buffers, rather than always allocating anew.
Bugfixes:
[GH-329] S_IFMT overridden for Windows, JS, WASM to the most prevalent POSIX value.
[GH-337]: In integration tests, expect /usr/lib/ssh/sftp-server
as a possible executable location.
[GH-340]: Update golang.org/x/crypto to address vulnerability CVE-2020-9283
[GH-342]: Fix race condition between Connection and Close
[GH-355]: cleanPath
operates on remote paths, so always use path
(POSIX) rather than filepath
(local file system rules).
[GH-363]: Fix some small unlikely RequestServer.Serve bugs.
[GH-372]: Add mutex protection to internal File
offset used by Read
.
[GH-373]: RequestServer incorrectly interpreted SSH_FXP_FSETSTAT
as a "Put"
request.
Updates:
[GH-365], [GH-376]: Update dependencies
In [GH-344], [GH-373]: travis now tests against Go versions { 1.14, 1.15 }, instead of { 1.12, 1.13 }