Skip to content

Aether 0.849.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 08:24
· 468 commits to main since this release
Immutable release. Only release title and notes can be modified.

What's new in 0.849.0

Changed

  • std is silent: the HTTP server reports through return values and a
    monitor, never by printing (#3131).
    A failed bind or start used to print
    its reason to stderr while server_bind returned "bind failed"; the reason
    is now the error ("cannot bind 0.0.0.0:8080: Address already in use"), and
    http_server_error(server) reads it after a raw call. The "Server running at
    …" banner comes from a monitor: http.monitor(srv) { listening() |host, port| { … } stopped() |host, port| { … } } registers closures the server
    calls, and http.console_monitor / http.null_monitor are the stock ones.
    http.server_start uses the console monitor when the program chose none, so
    ae run server.ae still shows the banner; server_start_background and the
    raw http_server_start_raw print nothing unless given one. worker.wait()
    returns (int, string) with the reason it refused, instead of printing it.
    make check-docs runs check_std_silent.py, which fails on a write to
    stdout or stderr from std's C; an exempt one (a requested report, the last
    line before an abort) carries silent-ok: <why>. The rule is in
    docs/stdlib-module-pattern.md.
  • Windows: a listener on a taken port now fails its bind. The listen
    socket set SO_REUSEADDR, which on Windows lets a second socket bind a port
    another process is listening on, so a server started twice "succeeded" and
    shared the port. Windows now gets SO_EXCLUSIVEADDRUSE (POSIX keeps
    SO_REUSEADDR), and the bind fails with the reason as on Linux and macOS.
  • http.server_on_start / http.server_on_stop are gone: the monitor's
    listening and stopped events replace them.
    The hooks fired only on the
    thread-pool path, never for a server in actor dispatch mode; the monitor
    fires on every path. listening keeps the hook's guarantee that the server
    already counts as running, so a stop issued from it, or after it, is never
    lost. A hook that needed the server pointer captures it in the closure.
    The C setters http_server_set_on_start / http_server_set_on_stop and
    the HttpLifecycleHook type are removed too.

Downloads

Platform Architecture File Notes
Linux x86_64 aether-0.849.0-linux-x86_64.tar.gz
macOS x86_64 aether-0.849.0-macos-x86_64.tar.gz
macOS arm64 aether-0.849.0-macos-arm64.tar.gz
Windows x86_64 aether-0.849.0-windows-x86_64.zip
FreeBSD x86_64 aether-0.849.0-freebsd-x86_64.tar.gz cross-built, not tested on FreeBSD

Quick install

Linux / macOS

# Download the archive for your platform, then:
tar -xzf aether-0.849.0-<platform>.tar.gz
export PATH="$PWD/bin:$PATH"
ae version

Windows

Extract the .zip archive, then run bin\ae.exe version from the extracted folder.


Documentation: https://github.com/aether-lang-dev/aether#readme