Rebex .NET components R6.0: Support for .NET 6.0, improvements in SSH, TLS, ZIP and VFS API
This is a major release, the first one in R6.x series. It adds a lot of new features - see below for details.
We tried very hard to make migration from R5.x as simple as possible, and we believe that the majority of our users won't encounter any issues during the upgrade at all. However, there are several possible breaking changes. In any case, you don't have to upgrade yet - R5.x will be supported until 2023-10-10.
Full support for .NET 6.0
This release adds a new set of binaries targeting the new .NET 6.0. It supports all .NET 6.0 platforms:
- Windows (x64, x86, ARM64)
- Linux (x64, ARM32, ARM64)
- macOS (x64)
Please note that support for Android and iOS/tvOS in .NET 6.0 is still in preview mode. We will fully support these platforms as soon as the corresponding .NET 6.0 update is published.
Removed deprecated APIs
In this major release, we removed some APIs that have been deprecated for a very long time and seldom used. We will publish an article soon detailing these changes. In the meantime, if this affects you, please keep using version R5.7, and let us know.
Support for reverse SSH tunnels
Finally, Rebex File Server supports incoming tunnels via SSH, also known as reverse port forwarding.
Use EnableReverseTunneling property in FileServer.Settings to enable this feature.
New Rebex.IO API
We added a set of new classes to Rebex.IO namespace that make it possible to access
files and directories in custom file system providers
using a simple API that resembles System.IO. The new classes are VFile, VFileInfo, VDirectory,
VDirectoryInfo, VFileSystemInfo, VDriveInfo and VFileStream,
and they are provided by Rebex.FileSystem assembly.
Support for ECDSA X.509 certificates in SSH
Added support for x509v3-ecdsa-sha2-nistp256, x509v3-ecdsa-sha2-nistp384 and x509v3-ecdsa-sha2-nistp521
SSH host key and client key algorithms (as specified by RFC 6187).
Changes in Rebex.Terminal assembly
Due to Microsoft's decision to drop support for most of System.Drawing on non-Windows platforms in .NET 6.0,
we decided to slightly restructure our Rebex.Terminal assembly to accommodate for this.
Therefore, TerminalControl, TerminalFont and related classes were moved to a separate
assembly called Rebex.Terminal.Control, along with image-based or font-based functionality previously
available in ITerminal and VirtualTerminal classes (these are now available via VirtualTerminalExtensions
class with a slightly modified API with TerminalImageFormat instead of TerminalCaptureFormat).
We also split seldom-used SerialPortChannel class to a dedicated Rebex.Terminal.SerialPort assembly.
Additionally, we removed SshTerminalControl and TelnetTerminalControl classes, which extend
TerminalControl. If you use these classes, just add the replacement SshTerminalControl.cs
or TelnetTerminalControl.cs files to your application - these are available as part of SshSimpleWinFormClient/TelnetSimpleWinFormClient
sample apps (VB.NET versions are available as well).
If these changes prevent you from upgrading, please keep using version R5.7 and let us know.
Updated default settings
We changed default values of some settings. For example, UTF-8 is now ubiquitous, so it makes sense to prefer it by default. Of course, you can still revert the corresponding settings to previous values. See the release history for details.
Async methods in WebClient
We added *Async variants of WebClient methods. (Please note that these are still implemented synchronously internally.)
TlsStream(Stream) constructor
TlsStream class now features a new Stream-based constructor, making it possible to implement TLS 1.3/1.2
on top of any suitable (readable/writable) Stream.
New ZipReader class
The new ZipReader class makes it possible to process ZIP files on-the-fly, without having to parse
the ZIP file's items first. You can now read ZIP files and extract items sequentially.
Non-seekable streams are supported as well.
And more...
For a detailed list of changes, see the release history.