Version 2022 Updates
The latest major release of our development libraries have been updated and improved with a focus on performance and security. This guide is intended to highlight some of the key updates and changes. Additional updates to this version are discussed on our What's New page.
Visit the Download Center page to download the latest version.
- New and Updated Toolkits
- New Components and OAuth 2.0 in IPWorks
- New IPWorks SSL Toolkit
- More Standards in IPWorks EDI Translator
- New License Options for S3 Drive, SFTP Drive and AES Drive
- Improved OAuth and more Components in Cloud Storage
- New CloudMailer Component in Cloud Mail
- New Features
- Upgrade Guide
New and Updated Toolkits and Editions
To make feature discussions easier, we use the terms "toolkit" and "edition". "Toolkits" are our products, such as IPWorks or Cloud Mail, and "editions" refer to the languages. When we make an update to a toolkit, that update is included in all editions (unless it's something very language specific). To keep pace with new features in languages (such as async in .NET), we make those updates in all toolkits for that language edition. Using these broad terms allow us to discuss updates in a concise manner.
Several new components have been added to IPWorks: TFTPServer, GRPC, S3 and WSServer. The gRPC component builds on our history of making every protocol easy to use, and is the perfect adition to our other API components. TFTPServer is the complement to our TFTPClient, and makes it, well, trivial to implement a TFTP server. S3 provides an easy-to-use interface for S3-compatible services, including AWS, Digital Ocean, Google Cloud, Linode and more. WSServer is used to create a WebSocket server, and complements our WSClient (formerly WebSocket) component.
Microsoft is ending support for Basic Authentication in Exchange Online this year (see https://docs.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/deprecation-of-basic-authentication-exchange-online) in favor of OAuth 2.0. IPWorks IMAP, POP and SMTP components have all been updated to support OAuth 2.0 requirements without using a separate OAuth component. For more advanced OAuth 2.0 scenarios, the OAuth component can still be used in conjunction with these components (or in other non-email scenarios requiring OAuth).
For environments requiring a greater degree of security, IPWorks SSL has been created. IPWorks SSL is a subset of IPWorks components which have been refactored to enforce communication only via SSL/TLS. FIPS 140-2 compliance can be enabled with a special license; see FIPS 140-2 Compliance in SSL/TLS and SSH Components
IPWorks EDI Translator
Because our customers often support more than one EDI standard, EDI Translator now includes Reader, Writer, Validator and Translator components for EDIFACT, HL7, TRADCOMS, VDA and X12. All Translator components feature the ability to convert XML and JSON to/from EDI flat file.
New License Options for Drives - Free for Personal and Commercial uses
New license options have been added for S3 Drive, SFTP Drive and AES Drive. The Starter license is perpetually free and can be used for both personal and commercial purposes. The Standard and Professional licenses add additional features. For additional security, SFTP Drive is verified to work with Yubikey.
Improved OAuth and more components in Cloud Storage
The OAuth experience has been improved for all of our Cloud components, making it easier to integrate with your provider of choice. All of our cloud storage components have been combined into one Cloud Storage toolkit, and the component APIs have been standardized across providers.
We've also merged all components for all providers into Cloud Storage. Now, you can find Azure, AWS, Box, Google Cloud, Linode, Digital Ocean and others in one toolkit.
New CloudMailer Component in Cloud Mail
The new CloudMailer component is used to send HTML emails via Amazon SES, GMail or Microsoft Graph using one standard API. The simplified API makes impleentation very quick and easy, and should be applicable in most use cases. If you need more provider-specific features, Cloud Mail has a component for each provider full of provider-specific features.
These features apply to components in multiple toolkits, or entire language editions across all toolkits.
.NET Async, Cross-Platform and Licensing
Version 2022 introduces a new async version of the API designed to support asynchronous programming (async/await) for all operations. Async is available in all .NET editions of all toolkits. For more information, including .NET version support, please read our article about .NET Async Support.
Cross-platform .NET editions support .NET Core 3.1 and .NET 5/6. This opens .NET development not only on Windows, but also Linux and macOS.
Runtime licenses for .NET editions can now also be obtained via our website. This makes it easier for customer installing via NuGet (https://www.nuget.org/profiles/nsoftware) or non-Windows platforms to obtain a license. License keys can be set in code, facilitating use on non-Windows systems.
FIPS 140-2 Support
All FIPS-compliant editions of IPWorks, IPWorks SSL and IPWorks SSH have undergone thorough internal audits, and new advanced ciphers have been added. There are language edition and OS platform considerations for FIPS compliance, for details please see FIPS 140-2 Compliance in SSL/TLS and SSH Components.
C++ Editions Updates
All C++ editions have been updated across the board to provide a more consistent and simpler development experience.
For native development on almost any operating system, the Qt GUI framework with C++ libraries has been a great combination for almost 30 years. Because they are so closely aligned, we merged the Qt toolkit into our C++ toolkit for all products. For more details about Qt, see the article Getting Started with Qt.
Removal of OpenSSL Dependencies in Linux
The C++ Edition libraries for Linux have been updated to use the internal implementation of SSL/TLS and other cryptographic functions. OpenSSL is no longer a dependency when working on Linux and the linker options -lssl -lcrypto are not needed.
To enable OpenSSL support within the toolkit the obfuscated source code can be compiled with the -D ENABLE_OPENSSL option. For instance, a makefile may look like:
mytarget: ./src/ipworks.o g++ -D UNIX -o myapp ./src/ipworks.o myapp.cpp -I./include/ -lz -ldl -lssl -lcrypto ./src/ipworks.o: g++ -c -fno-exceptions -fno-rtti -fPIC -D ENABLE_OPENSSL -o ./src/ipworks.o ./src/ipworks.cpp
When enabled, the linker options for the project using the library must include -lssl -lcrypto. Note that components must still be configured to use the OpenSSL implementation by setting the SSLProvider property to 1 (Platform).
Java and Android Editions Merged
For every toolkit, we've merged the Java and Android editions. This will improve the experience of developers working on applications for both mobile and desktop.
macOS and iOS Editions Merged
We've also merged the macOS and iOS editions of every toolkit. This will improve the experience of developers working on applications for both mobile and desktop.
Delphi FMX (FireMonkey) Support and Installation Location
Cross-platform development on Windows, Liniux and macOS is supported in all Delphi editions using Firemonkey. Mobile support is coming soon. To resolve permissions issues in some use cases, the component installation location has been changed to the user's Documents folder, and IDE search paths are updated. During installation, if a previous version exists, you'll be prompted to uninstall it.
In most cases upgrading from a previous version is as simple as referencing the updated versions of the library. Every effort has been made to minimize the number of breaking changes to ensure a simple upgrade process. The sections below details some aspects which may be of help while upgrading your project.
Default Installation Location
The installation location in version 2022 defaults to the %UserProfile%\Documents location on the system. In previous versions the installation defaults to the Program Files folder. By installing to the user's Documents folder elevated permission is not needed when building and running the included sample projects.
The InvokeThrough property in version 2022 is of type System.Threading.SynchronizationContext. In previous versions the InvokeThrough property was of type System.Windows.Forms.Control.
The InvokeThrough property is designed to be used in Windows Forms applications and allows for events to be fired from the main thread so that code within the events can directly update UI elements on the form without performing a cross-thread operation. To use InvokeThrough in version 2022 in a Windows Forms application code like below may be used:
component.InvokeThrough = WindowsFormsSynchronizationContext.Current;
In version 2022 several properties have been marked as deprecated and have been replaced by corresponding methods. These properties perform a blocking action when set or queried and will be retired in future versions in favor of methods which perform the same functionality. This delivers a more organized and predictable development experience.
Deprecated properties will be maintained through the lifetime of the 2022 version and exist for backwards compatibility. Please consider updating code using these properties to the new corresponding methods.
Properties which have been deperecated will be marked with a * in the table of contents in the documentation and the documentation will provide details about an upgrade path. For instance the FileExists property of the FTP component includes a notice:
In most cases upgrading is seamless and requires no code changes, as efforts have been made to maintain backwards compatibility. However, the latest release includes several API changes that may require code changes. The articles linked below detail major changes between the previous and latest release.
Upgrading to the latest version is designed to be a quick process and involve only minimal code changes while offering additional functionality and options for new and existing users. Please contact us at email@example.com with any questions or comments.
We appreciate your feedback. If you have any questions, comments, or suggestions about this article please contact our support team at firstname.lastname@example.org.