Repository navigation
Aether 0.849.0
·
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 whileserver_bindreturned"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, andhttp.console_monitor/http.null_monitorare the stock ones.
http.server_startuses the console monitor when the program chose none, so
ae run server.aestill shows the banner;server_start_backgroundand the
rawhttp_server_start_rawprint nothing unless given one.worker.wait()
returns(int, string)with the reason it refused, instead of printing it.
make check-docsrunscheck_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) carriessilent-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 setSO_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 getsSO_EXCLUSIVEADDRUSE(POSIX keeps
SO_REUSEADDR), and the bind fails with the reason as on Linux and macOS. http.server_on_start/http.server_on_stopare gone: the monitor's
listeningandstoppedevents 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.listeningkeeps 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 settershttp_server_set_on_start/http_server_set_on_stopand
theHttpLifecycleHooktype 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 versionWindows
Extract the .zip archive, then run bin\ae.exe version from the extracted folder.
Documentation: https://github.com/aether-lang-dev/aether#readme