Major
- Complete rework of the internal I/O model, now supporting flow control, pipe-like programming, stream transformers, low-level WebSocket events, efficient WebSocket I/O, exception passing, trivial composition with client library (2075347 to ed1c949, 5cd57e1, others).
- Convert from immutable to mutable requests and conversion of the API to
t
-first style (#21). - Factor out Dream core into opam package
dream-pure
, to also be used in the client (2f40d67 to e106e6e, 037645f to 8652178, dd41df9, others). - Factor out the http/af stack and helpers directly tied to it that need to be shared with the client into opam package
dream-httpaf
(110575d, acc2efc). - Remove "global" (per-server) variables (d81b198).
- Rename "local" (per-message) variables to "fields" (5a54d5c).
- Use a middleware to set secrets (2529b9a).
- Use a middleware to set site prefix (3da5e23).
- Replace
?debug
by just using a different error handler (640a1b2). - Rename
?https
to?tls
(7320f87). - Miscellaneous renamings. Most old values are still temporarily present with attached deprecation attributes to help migrate.
Additions
- Flash message support (#62, #137, #173, Joe Thomas).
- Warning about using
sqlite:
scheme instead ofsqlite3:
(#92, Anton Outkine). - Pass the entire error object to error template calls (#162, reported by
Jean-Michel Bea). ?csrf
to skip the CSRF check inDream.form
,Dream.multipart
(#167, José Eduardo Monteiro).- Per-source log level configuration (#171, Joe Thomas).
Dream.drop_cookie
(#169, Shawn McGinty).- Simplification: assign request IDs lazily and implicitly (bb2924d).
Dream.csrf_tag
, a less obtrustive replacement forDream.form_tag
(#201, Yawar Amin).
Bugs fixed
Dream.static
was settingContent-Type:
headers for non-existent files (#88, reported by Khoa Nguyen).- Use bigstringaf instead of
Lwt_bytes
to minimize Unix dependencies (#107, Calascibetta Romain). - Limit
Dream.redirect
~status
to only redirections (#130, Khoa Nguyen). Dream.redirect
: don't writeLocation
to the response body (b0f64df).- Restore terminal settings upon exit by
SIGINT
(#151, Anton Outkine). - Don't try to ignore
SIGPIPE
on Windows (#158, Manas Jayanth).
Examples
- Depend on OCaml Platform in
esy.json
(#65, Dennis Dang). - Content security policy (#48, #49).
.eml.html
usage (#68, Ryan Moore).- WebSocket chat (#77, Thomas Coopman).
- Fix esy build of js_of_ocaml example (#103, Ulrik Strid).
- Improve the playground CSS (#109, #124, #126, #127, #128, Khoa Nguyen, @artileda).
- Dream with PostgreSQL and Docker Compose (#112, Joe Thomas).
- nginx usage (#140, Joe Thomas).
- Control flow in templates (#150, Anton Outkine).
- Adapt
esy.json
s to build on M1 (#163, Peter Mondlock). - Fly deployment (#161, Dennis Dang).
- Clarify Mirage example commands (#172, Michael Bacarella).
- Update to ReScript project names in the ReScript example (#188, Glenn Slotte).
Documentation
- Fix
sqlite3
URI in SQL snippet (#80, Khoa Nguyen).