15.0.0 Version History

What’s New

  • New Http.sys application type. Http.sys is the Windows Kernel mode driver which is the core of IIS. Http.sys IntraWeb applications are also stand alone, blazing fast, easy to debug and deploy because they don’t require IIS!
  • IW Bootstrap is now included with IntraWeb. All IDEs are supported (from Delphi 2009 to 10.2 Tokyo). Full source code included.
  • New zlib library. IW zlib is based on zlib Cloudflare code base and is more than 8x faster than Delphi XE7 zlib (x64). Still almost 2x faster than Delphi XE8-10.2 (x64). IW zlib is the fastest zlib available for Delphi! From now on we build our own zlib so you can have the best performance ever!
  • New TIWTemplateParserHTML. Template parsing and processing is more than 300% faster than IW 14 version.
  • Removed /$/ (Exec command) from URL in browser. Exec command “/$/” is still used internally though.
  • SameSite cookie attribute is now supported in all IntraWeb application modes (except ASPX Library, because ASP.NET doesn’t support it directly). Improves security and prevents CSRF attacks. Read more about it here: https://www.owasp.org/index.php/SameSite
  • IW 15 requires new license, i.e. existing IW 14 licenses won’t work at all with IW 15. A new license has been generated for all paid customers with valid subscription and the new license can be obtained online at https://app.atozed.com
  • Improved IWModalWindow: New properties HasHeader, HasFooter, BorderWidth and CloseOnClick
  • Extended HTML 5 attributes (Autocomplete, Spellcheck, Placeholder) for TIWEdit, TIWMemo and descendant classes
  • jQuery version updated to version 1.12.4 (same used by IW Bootstrap library). jquerymaskedinput.js updated to latest version 1.3.1
  • New property ServerController.JavaScriptOptions.jQueryVersion (string), returns version of jQuery
  • Templates: Attributes are allowed inside template control tags
  • LockSessionTimeout property in ServerController (in milliseconds). Default is 30000 milliseconds
  • New event ServerController.OnBind which can be used to set HTTP and HTTPS at runtime (Ultimate only)
  • New methods in THttpRequest: THttpRequest.HasField(), THttpRequest.GetQueryFieldValue()
  • TIWLinkBase and descendants have new property HasTabOrder
  • New feature CheckWindowId which allows applications to detect when a link to a valid IW application session is used in another browser tab
  • TIWGrid has a new property HeaderRowCount. TIWGrid and descendants now render <thead> and <tbody> tags which makes easier to integrate them with 3rd party JavaScript libraries like DataTables.
  • ISAPI applications now allow redirection from HTTP to HTTPS. It is much easier to do that from IntraWeb than from IIS or other server. Requires: ServerController.SSLOptions.NonSSLRequest = nsRedirect; ServerController.ProxyPortRedirection.Active; ServerController.ProxyPortRedirection.HttpsPort > 0
  • New TContentBase.RequiresSession property (default True). When false, a content handler can be executed before session validation. It can be used, for instance, to provide custom static content which don’t require a user session.

Modified

  • Remove Styles from IWControls when rendering in Async, if TemplateProcessor.RenderStyles = False. This fixes several problems when using templates
  • Improved and shorter JavaScript code generated in IW pages for object initialization
  • Set Password type for inputs during async
  • IWImageList.ExtractImageToCache is made virtual (makes it compatible with IW 12 implementation)
  • Stack trace of all threads included in IWJclStackTrace
  • IW.Common.System renamed to IW.Common.SysTools. Applications shouldn’t use IW.Common.System directly. However, existing applications will still build/work when using IW.Common.System (a wrapper unit for compatibility is provided). Name has been changed due to issues caused by name conflicts in some versions of C++ Builder compiler.
  • IWPaintHandlers: Use an ancestor paint handler at design time, when a specific paint handler is not registered
  • Several fixes regarding IPv6 in SA mode
  • TIWCustomRegion.get_HTMLName made protected and virtual so it can be overridden in descendant classes
  • CheckConnectionMode (secure/non secure) executed before Form execution
  • New SessionLocked.html exception. New default colors for built-in Exception renderer
  • “Cannot find submit component” exception is now EIWSubmitException and should contain the referenced component name (easier to identify problems during development and also in production)
  • MIME types are consts now instead of resource strings to avoid C++ Builder bug (IWMimeTypes.pas)
  • Breaking change: StyleRenderOptions.RenderBorder is FALSE for for IWEdit, IWLisBox, IWComboBox, IWMemo controls and descendants by default. This shouldn’t affect most existing applications. Now, if no style is provided, these controls will render using browser default style.
  • Modified: Invisible controls should be aligned by default (restored behavior of 14.0.x branch).
  • TIWFile finally removed from IW 15 codebase. Use TIWFileUploader instead. All references to IWFile.pas should be removed from IW applications.
  • Several performance improvements and optimizations

Bug Fixes (baseline is 14.2.7)

  • ISAPI applications would fail to create valid responses (status code 500) when parsing invalid header (including cookie) fields.
  • Fixed issue in TextToJsonString method
  • Fix for IWRegions owned by TFrame which is also owned by other TFrame
  • ASPX loader fix: Obtaining correct port number from request
  • Bug in fixup mechanism fixed (IWClassesFix)
  • TIWCustomEdit (and descendants) text wouldn’t clip if NonEditableAsLabel = True
  • Do not render style tag in async when using templates and RenderStyle is False
  • Better sizes for scaled windows fonts (125% and 150%) when using SA-GUI application
  • Fixed empty stack trace when using jdbg format for map files
  • Several issues in IW Bundled Removal Tool were fixed it has been greatly improved