With yesterday’s release of Delphi/C++Builder/RADStudio XE4 also comes the initial public release of Indy 10.6.
Indy 10.6 adds support for Embarcadero’s new mobile compilers, starting with iOS (Android coming in a later release). Embarcadero’s mobile architecture includes new RTL features like ARC (Auto Reference Counting) for all objects, and RTL changes like deprecation of some core RTL classes (TList, etc) in favor of Generics equivalents, and elimination of all Ansi-based data types (P/AnsiChar and AnsiString) in favor of full Unicode.
These features/changes required extensive changes to Indy, mostly in its internal implementation code, but there have been some public interface changes as well.
For instance, the IdGlobal.TIdTextEncoding class has been replaced with a new IdGlobal.IIdTextEncoding refcounted interface that no longer depends on SysUtils.TEncoding (Embarcadero) or System.Text.Encoding (.NET) anymore (though there are wrappers provided if you still need to use them with Indy). Consequently, the IndyXXXEncoding() functions have been deprecated in favor of new IndyTextEncoding_XXX() functions.
Some interface changes have also been made to the TIdStack classes, primarily to address compiler errors for the Get/SetSocketOption() overloaded methods in XE2 and earlier, but also to prepare for a new feature currently being developed. The TIdStack.LocalAddress(es) properties will eventually be replaced in a future release with a new TIdStack.GetLocalAddressList() method that uses platform-appropriate native OS functions instead of reverse DNS lookups to determine local IPs, differentiates between IPv4 and IPv6 addresses, and reports local subnet masks and possibly subnet broadcast IPs.
The Indy 10.6 release that shipped with XE4 has been checked in to Indy 10’s SVN trunk. Several bug fixes have also been checked in that did not make it into XE4 or last night’s Fulgan nightly snapshot. So if you have already attempted to compile Indy 10.6 and are encountering errors, grab the latest revision and try again.