VI

Delphi

TMS Sparkle v3.37.0.0 Full Source for Delphi 10-13

TMS Sparkle is a Delphi framework for network, Internet programming. It provides classes for both client and server applications/services, allowing for example performing Http requests to servers, or building Http...

Description

TMS Sparkle is a Delphi framework for network, Internet programming. It provides classes for both client and server applications/services, allowing for example performing Http requests to servers, or building Http servers that receive and process client requests. It supports several platforms, including Microsoft Windows, macOS, iOS and Android. TMS Sparkle is also the core framework used by several other TMS products such as TMS RemoteDB and TMS XData.

Trustworthy
It is the core building block for several other TMS products and technologies, such as TMS RemoteDB and TMS XData. Such products needed to be built from scratch, and rely on a robust framework for which TMS could have 100% control and also responsibility. For such products to work flawlessly, we needed to be sure to build such products in a framework that must be properly tested, and have fast response in performance improvement and bug fixing.

Fresh
It's a new product that doesn't carry any legacy applications behind it, thus classes and interfaces provide a simple, clean method of use.

Modern
It's target to new Delphi versions, and benefits from modern language features such as generics and anonymous methods.

Cross-platform
Supports multiple platforms such as Microsoft Windows, macOS, iOS and Android.

Platform Native
In most of it, Sparkle is a thin, abstract layer over native API's from the underlying platform. Existing platforms already provide a lot in terms of native networking and internet programming. TMS Sparkle tries not to reinvent the wheel and use such technologies. This makes it easy for your applications to benefit from new platform versions and upgrades. Any bug fixes and improvements in the platform frameworks will be usually available in Sparkle. It also provides smoother integration with the platform, such as system-wide settings.

Client features:
Http client available in Windows, macOS, iOS and Android
Support for Http Secure (Https)
Transparent handling of chunked and gzip-encoded responses
Server features:
Http server based on http.sys stack (Windows only - minimum Vista and Server 2008)
Support for Http Secure (Https)
Kernel-mode caching and kernel-mode request queuing (less overhead in context switching)
Multiple applications/process can share (respond) the same port (at different addresses)
Secure Sockets Layer (SSL) support in kernel-mode
GUI tool for SSL certificate management

Version 3.37 (August-2026)

  • New: Sparkle socket server, a fast, complete HTTP server for Linux and Windows, written entirely in Delphi. One executable, with no Apache, nginx or third-party library to install and keep updated. It serves HTTPS (using certificate files you can replace without restarting the server, and several certificates can share the same port), WebSockets and static files, and it defends itself against oversized, slow and excessive requests. It also adapts to the load on its own, staying responsive when your handlers wait for a database or for another server, with nothing to configure. It is now the recommended way to deploy Sparkle, XData and RemoteDB servers on Linux. On Windows it is an alternative to the http.sys server that needs no administrative setup and behaves exactly like the Linux one. Includes the new TSparkleSocket�Dispatcher design-time component and a new SocketServer demo.
  • New: WebSockets support for Linux. The new Sparkle socket server supports WebSockets so now Sparkle websockets can be used on Linux as well, in addition to Windows.
  • New: RSA and ECDSA JWT signing and validation using OpenSSL 3. Sparkle now registers JOSE cryptography providers backed by OpenSSL 3.x (new unit Sparkle.OpenSsl.Jose), so JWT tokens signed with RSA (RS256/RS384/RS512) and ECDSA (ES256/ES256K/ES384/ES512) algorithms work on modern Linux distributions that no longer ship the legacy OpenSSL 1.x libraries, such as Ubuntu 22.04 and later. This also enables TMS Sphinx servers using RSA-signed tokens to run on those distributions. The providers are registered automatically and transparently fall back to the previous OpenSSL 1.x-based implementation when OpenSSL 3 is not available, so existing applications keep working unchanged.
  • Improved: New published property TSparkleHttp�SysDispatcher.�Keep�Host�InUrl�Prefixes, which sets the property of the same name in the underlying http.sys server. It can now be set at design time, without code.
  • Improved: THttpHeaders has a different behavior now for Set-Cookie headers. Multiple Set-Cookie headers in a response will now bring a value separated by #10 (line feed) instead of , (comma). Also THttpHeaders.�Add�Value will combine two Set-Cookie values into a single header with #10 separator instead of using a comma separator. This is a breaking change for applications that were previously relying on the old behavior, which was not compliant with the HTTP specification.
  • Fixed: THttpClient on Linux was not publishing Set-Cookie headers in the response object.
  • Fixed: The object pool (used e.g. for database connection pooling) leaked a permit when creating a pooled object failed, eventually exhausting the pool so every acquire blocked until timeout and the server appeared to hang. The permit is now released on failure.
  • Fixed: The Indy-based server added a default text/html; charset=utf-8 content-type to responses that intentionally set none, such as raw binary streams (e.g. XData blob properties). It now leaves the content-type untouched, matching the other dispatchers.
  • Fixed: Random Sparkle timer crashes (access violation) caused by an timer whose callback destroys the timer itself, which is what the RemoteDB server does when a database instance times out. If such a callback also raised an exception, the timer accessed freed memory afterwards.

Additional Information