Skip to content

v9.3.4 released

Choose a tag to compare

@funlang funlang released this 16 Oct 10:33
· 67 commits to main since this release
The HTTP stack lands in the standard library.

Highlights since v9.3.3:

- lib/http-server: a single-threaded, platform-neutral HTTP server. Route
  patterns (literal / :name / * tail, 405 with Allow, 404 otherwise), route
  groups, global / group / per-route middleware, params and query strings,
  static files, json / text / html responses and an access logger; driven by
  its own poll loop (run) or one step at a time (runOnce). HTTP framing and
  keep-alive live in lib-winsock-base.fun; the Linux/macOS poll backend is
  wired, the Windows message-pump driver is still a follow-up.
- lib/http-client: a one-call blocking client, HttpClient(args) ->
  [rc, code, message, headers, body], over the host's lib-ajax backend.
- lib-ajax.fun (Windows) gains the same Http(args) helper as lib-ajax-unx, so
  HttpClient is one call on every platform: it forces the synchronous
  transfer, exposes the final response block as Ajax.headers (lowercased
  keys) and returns the same five-field result set.
- getapi accepts a variadic: <n> mark (libffi ffi_prep_cif_var), required on
  Darwin arm64; curl_easy_setopt uses it, so the lib-ajax test runs on macOS.
- funcmd names the file it cannot find (not found: <file>) instead of failing
  silently; lib-winsock renames HttpServer -> HttpServerBase (kept as
  Server.HTTP / Server.HTP), fixing the duplicated HTP assignment.

See CHANGELOG.md / CHANGELOG.zh.md for the full list (the portability entries
before the HTTP work are still under Unreleased).