Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

PascalWeb-RC1

PascalWeb is a Web framework for Free Pascal focused on native binaries, routing, middleware, JSON APIs, validation and backend development.

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

PascalWeb 1.0.0-rc1

Release candidate. The stable core is being frozen and must still pass real Free Pascal compilation and CI before 1.0.0.

PascalWeb is a Web framework for Free Pascal focused on native binaries, routing, middleware, JSON APIs, validation and backend development.

See STABILITY.md for the compatibility boundary and RELEASING.md for the 1.0 gate.

PascalWeb v0.10 — Hardening release

v0.10 focuses on reproducible builds, tests, CI, diagnostics and release gates. Performance numbers are intentionally not claimed until the benchmark scripts are executed on real Free Pascal hosts.

Hardening toolkit

bash
./scripts/doctor.sh
./scripts/build.sh
./scripts/test.sh
./benchmarks/http.sh http://127.0.0.1:8080/

CI definitions are provided for Linux, macOS and Windows under .github/workflows/ci.yml. See docs/STABILITY.md for API maturity and docs/RELEASE_CHECKLIST.md for the 1.0 gate.


PascalWeb v0.9

PascalWeb v0.9 is the transport/production groundwork release. It keeps the v0.8 API and introduces primitives needed for long-lived HTTP connections and shared infrastructure.

Added

  • THttpConnection: socket ownership, full writes, detach/close semantics.
  • THttpStream: HTTP/1.1 chunked streaming primitive for long-lived responses/SSE.
  • WebSocket close-frame helper and transport groundwork for socket handoff.
  • TRedisClient: minimal RESP client implementing ICache (GET, SET, TTL, DEL, EXISTS, PING).
  • TRedisJobQueue: durable-queue adapter surface reserved for Redis list operations.
  • Production example using Redis through the same ICache interface as memory cache.

Important status

v0.9 deliberately separates implemented primitives from the final server integration. THttpConnection, chunked streaming, and Redis cache are implemented. Full keep-alive request pipelining, WebSocket socket handoff from THttpServer, and Redis-backed BRPOP/LPUSH workers are still marked experimental/incomplete and must be finished and load-tested before 1.0.

This repository has not been compiled in the generation environment because FPC is unavailable there. Compile and run the tests with Free Pascal before production use.

Redis

pascal
var Cache: ICache;
Cache := TRedisClient.Create('127.0.0.1', 6379);
Cache.Put('user:42', '{"name":"Samuel"}', 60);
Writeln(Cache.Get('user:42'));

Streaming primitive

pascal
Stream := THttpStream.Create(Connection);
Stream.Start('text/event-stream; charset=utf-8');
Stream.Write(TSSE.Event('{"status":"ready"}', 'status'));
Stream.Close;

Road to 1.0

  1. Integrate connection ownership directly into TRequest/TResponse.
  2. Keep-alive loop with request boundary parsing and idle timeout.
  3. WebSocket receive parser + ping/pong + graceful close.
  4. Redis LPUSH/BRPOP, retries, failed-job queue and worker process.
  5. Concurrency/load tests, protocol tests and FPC CI on Linux/macOS/Windows.