Skip to content

v1.0.2 — Multi-backend HTTP server + FPC/Lazarus compatibility

Choose a tag to compare

@freitasjca freitasjca released this 14 Jun 21:17
· 10 commits to master since this release

What's new

Multi-backend HTTP server

The provider now supports all three mORMot2 HTTP server backends, selectable via THorseMormotConfig.ServerKind or compile-time defines:

ServerKind mORMot class Model
mskThreadPool (default) THttpServer Socket thread-pool
mskAsync THttpAsyncServer Non-blocking IOCP/epoll/kqueue event loop
mskHttpApi THttpApiServer Windows http.sys kernel-mode (Windows only)

Switch at runtime: Cfg.ServerKind := mskAsync; THorse.ListenWithConfig(9000, Cfg);
Or at compile time: -dHORSE_MORMOT_ASYNC / -dHORSE_MORMOT_HTTPAPI.

FPC/Lazarus compatibility

  • Replace TInterlocked.* (Delphi-only RTL) with InterlockedIncrement / InterlockedDecrement / InterlockedCompareExchange free functions — the provider now compiles under
    FPC 3.2.0+.
  • Minimum FPC version: 3.2.0 (Lazarus 2.2+ stable) — no trunk required (unlike the CrossSocket provider).

Lazarus IDE setup docs

Full step-by-step Lazarus setup added to README and doc/building-a-mormot-provider.md: mormot2 package compile, LazUtils dependency, search paths, static blob linker path, and the
TNextProc vs TProc distinction for FPC middleware.

Breaking changes

None — existing THorse.Listen(port) calls continue to use THttpServer (thread-pool) by default.