v9.5.0.62 Release Notes

  • Added StringTable class.  The StringTable class differs from the StringArray class in that it’s intended to hold a table of strings that is mostly read-only.  The internal storage of all the strings is in a single contiguous block of memory for efficient (minimized) memory storage.
  • Expanded the BinData class by adding new methods and making it available in all programming languages.
  • Expanded the StringBuilder class by adding many more methods.
  • Note: BinData and StringBuilder are consistently the same across all programming languages, whereas CkString and CkByteData are not.   CkString and CkByteData will continue to be used in future versions, are still an integral part of Chilkat, and are NOT deprecated.
  • Note: One use of BinData and StringBuilder is in use of new methods ending in “Sb” and “Bd”.  These methods are for returning or passing text or binary data, especially large amounts of text or data.  For example, imagine one Chilkat method is used to retrieve a large amount of data, and then that data is passed to another Chilkat method.  A large waste of time and memory is consumed in returning the string (or binary bytes) to the programming language, and then immediately passing it back to Chilkat.  If it is .NET, then the data must be marshaled from unmanaged to managed, and then, to pass back to Chilkat it is marshaled from managed to unmanaged.  The same applies when using the ActiveX (with BSTR’s and Variants).  By retrieving results directly into a BinData or StringBuilder, and then passing the data by passing the object, the data stays on the native side.  For example, the new Rest.ReadRespSb method reads the REST response directly in to a StringBuilder.  If it is JSON, this can be loaded directly into a JsonObject via the JsonObject.LoadSb.  In the future, new “Sb” and “Bd” methods will be added in places where large amounts of data are likely to be encountered.  This will create pathways allowing data to stay native as much as possible.

    Version 9.5.0.62 adds the following initial set of Sb/Bd methods:

    JsonObject.LoadSb
    JsonObject.EmitSb
    Xml.LoadSb
    Xml.GetXmlSb

    Email.GetMimeBd
    Email.GetMimeSb
    Email.SetFromMimeSb
    Email.SetFromMimeBd

    Mime.LoadMimeSb
    Mime.LoadMimeBd
    Mime.GetMimeSb
    Mime.GetMimeBd
    MailMan.RenderToMimeBd
    MailMan.RenderToMimeSb
    Rest.FullRequestSb
    Rest.ReadRespSb
    Rest.SendReqSb
    Rest.SetMultipartBodySb
    Rest.AddQueryParam
    Rest.ReadRespBd
    Rest.SendReqBd
    Rest.SetMultipartBodyBd
    Imap.FetchAttachmentSb
    Imap.FetchAttachmentBd
    Imap.AppendMimeWithFlagsSb
    SFtp.UploadSb
    SFtp.DownloadSb
    SFtp.UploadBd
    SFtp.DownloadBd
    Ftp2.GetFileSb
    Ftp2.GetFileBd

    Ftp2.PutFileSb
    Ftp2.PutFileBd

  • SshTunnel – Now automatically keeps the SSH connection alive during idle times by sending IGNORE messages every 20 seconds (when idle).
  • The 32-bit .NET VS2015 build now uses the /LARGEADDRESSAWARE linker option.  (See /LARGEADDRESSAWARE)
  • Minor CSV fix where the last line in a CSV file was inadvertently being trimmed of whitespace on both ends.
  • Added the Global.UnlockStatus property to allow applications to programmatically know if the UnlockBundle (or UnlockComponent) method call succeeded because of the 30-day trial or a recognized/purchased unlock code.
  • Rest – allows Basic authentication for non-secure connections to localhost.  Normally, Chilkat disallows the Basic authentication method if the connection is not TLS.  There is one exception now, and that is for connections to localhost.