diff --git a/.gitignore b/.gitignore index 8df2bb4..9c8e0fa 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,6 @@ erl_crash.dump .claude CLAUDE.md -/src/preview.gleam autobahn/server # examples +/bench diff --git a/CHANGELOG.md b/CHANGELOG.md index 30e54c0..a8111bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +# Unreleased + +- Update glisten to next major release. +- Default `on_start` handler now uses `io.println` in addition to logging, so the startup message is visible even without a logger configured. + # v3.0.2 - 23.02.2026 - Gracefully handle HTTP/2 connections: h2c upgrade requests are served as HTTP/1.1, and direct HTTP/2 connections receive a GOAWAY with HTTP_1_1_REQUIRED instead of being silently dropped. diff --git a/gleam.toml b/gleam.toml index 71c4400..052a43d 100644 --- a/gleam.toml +++ b/gleam.toml @@ -11,7 +11,7 @@ links = [ [dependencies] gleam_stdlib = ">= 0.44.0 and < 2.0.0" -glisten = ">= 8.0.1 and < 9.0.0" +glisten = ">= 9.0.0 and < 10.0.0" gleam_otp = ">= 1.1.0 and < 2.0.0" gleam_http = ">= 4.3.0 and < 5.0.0" logging = ">= 1.3.0 and < 2.0.0" diff --git a/manifest.toml b/manifest.toml index 8e9d819..748eb95 100644 --- a/manifest.toml +++ b/manifest.toml @@ -10,12 +10,11 @@ packages = [ { name = "gleam_httpc", version = "5.0.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_http", "gleam_stdlib"], otp_app = "gleam_httpc", source = "hex", outer_checksum = "C545172618D07811494E97AAA4A0FB34DA6F6D0061FDC8041C2F8E3BE2B2E48F" }, { name = "gleam_json", version = "3.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "44FDAA8847BE8FC48CA7A1C089706BD54BADCC4C45B237A992EDDF9F2CDB2836" }, { name = "gleam_otp", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "BA6A294E295E428EC1562DC1C11EA7530DCB981E8359134BEABC8493B7B2258E" }, - { name = "gleam_stdlib", version = "0.69.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "AAB0962BEBFAA67A2FBEE9EEE218B057756808DC9AF77430F5182C6115B3A315" }, + { name = "gleam_stdlib", version = "0.70.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "86949BF5D1F0E4AC0AB5B06F235D8A5CC11A2DFC33BF22F752156ED61CA7D0FF" }, { name = "gleam_yielder", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_yielder", source = "hex", outer_checksum = "8E4E4ECFA7982859F430C57F549200C7749823C106759F4A19A78AEA6687717A" }, { name = "gleeunit", version = "1.9.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "DA9553CE58B67924B3C631F96FE3370C49EB6D6DC6B384EC4862CC4AAA718F3C" }, - { name = "glisten", version = "8.0.3", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_otp", "gleam_stdlib", "logging", "telemetry"], otp_app = "glisten", source = "hex", outer_checksum = "86B838196592D9EBDE7A1D2369AE3A51E568F7DD2D168706C463C42D17B95312" }, + { name = "glisten", version = "9.0.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_otp", "gleam_stdlib", "logging"], otp_app = "glisten", source = "hex", outer_checksum = "D92808C66F7D3F22F2289CD04CBA8151757AAE9CB3D86992F0C6DE32A41205E1" }, { name = "logging", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "logging", source = "hex", outer_checksum = "1098FBF10B54B44C2C7FDF0B01C1253CAFACDACABEFB4B0D027803246753E06D" }, - { name = "telemetry", version = "1.3.0", build_tools = ["rebar3"], requirements = [], otp_app = "telemetry", source = "hex", outer_checksum = "7015FC8919DBE63764F4B4B87A95B7C0996BD539E0D499BE6EC9D7F3875B79E6" }, { name = "websocks", version = "2.0.0", build_tools = ["gleam"], requirements = ["gleam_crypto", "gleam_erlang", "gleam_stdlib"], otp_app = "websocks", source = "hex", outer_checksum = "A13BF89A8AC63C478C0E9FE502C81A6CBB0513F427FA5C1DFD96383BF46D501D" }, ] @@ -30,6 +29,6 @@ gleam_json = { version = ">= 3.0.2 and < 4.0.0" } gleam_otp = { version = ">= 1.1.0 and < 2.0.0" } gleam_stdlib = { version = ">= 0.44.0 and < 2.0.0" } gleeunit = { version = ">= 1.0.0 and < 2.0.0" } -glisten = { version = ">= 8.0.1 and < 9.0.0" } +glisten = { version = ">= 9.0.0 and < 10.0.0" } logging = { version = ">= 1.3.0 and < 2.0.0" } websocks = { version = ">= 2.0.0 and < 3.0.0" } diff --git a/src/ewe.gleam b/src/ewe.gleam index 0ec6d2f..5c6f023 100644 --- a/src/ewe.gleam +++ b/src/ewe.gleam @@ -149,6 +149,7 @@ import gleam/http import gleam/http/request.{type Request as HttpRequest} import gleam/http/response.{type Response as HttpResponse} import gleam/int +import gleam/io import gleam/option.{type Option, None, Some} import gleam/otp/actor import gleam/otp/factory_supervisor as factory @@ -160,7 +161,6 @@ import glisten import glisten/internal/listener import glisten/socket/options as glisten_options import glisten/transport -import logging import websocks // CONNECTION @@ -390,7 +390,7 @@ pub fn new(handler: fn(Request) -> Response) -> Builder { <> ":" <> int.to_string(server.port) - logging.log(logging.Info, "Listening on " <> url) + io.println("Listening on " <> url) }, on_crash: response.new(500) |> response.set_body(Empty), listener_name: process.new_name("glisten_listener"), @@ -508,8 +508,8 @@ pub fn start( None -> glisten_builder } } - // https://github.com/rawhat/glisten/blob/master/src/glisten.gleam#L359 - |> glisten.start_with_listener_name(builder.port, builder.listener_name) + |> glisten.with_listener_name(builder.listener_name) + |> glisten.start(builder.port) |> result.map(fn(started) { let scheme = case builder.tls { Some(#(_, _)) -> http.Https