diff --git a/CHANGELOG.md b/CHANGELOG.md index a9ee1d9..b035aea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.5.14] - 2026-07-20 + +### Fixed + +- Queries are now bounded in how many stored entries they may scan, so a selective filter matching fewer events than its `limit` no longer scans the entire database. Fixes severe CPU and major page-fault load on large databases; the `query_scan_multiplier` config knob (default 20, 0 disables) controls the bound (#160) + ## [0.5.13] - 2026-07-16 ### Added diff --git a/build.zig.zon b/build.zig.zon index 614621b..6c968f6 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -1,6 +1,6 @@ .{ .name = .wisp, - .version = "0.5.13", + .version = "0.5.14", .fingerprint = 0xc4bdec9fe6401a8d, .dependencies = .{ // websocket.zig: client for spider outbound connections and the epoll diff --git a/src/main.zig b/src/main.zig index 8fbceb7..c4ed468 100644 --- a/src/main.zig +++ b/src/main.zig @@ -156,7 +156,7 @@ pub fn main(init: std.process.Init) !void { return error.InvalidSyncMode; }; - std.log.info("Wisp v0.5.13 starting", .{}); + std.log.info("Wisp v0.5.14 starting", .{}); std.log.info("Listening on {s}:{d}", .{ config.host, config.port }); std.log.info("Storage: {s} (sync={s})", .{ config.storage_path, @tagName(sync_mode) }); diff --git a/src/nip11.zig b/src/nip11.zig index 86cbcce..f59fbaa 100644 --- a/src/nip11.zig +++ b/src/nip11.zig @@ -43,7 +43,7 @@ pub fn write(config: *const Config, nip86: *const Nip86Handler, w: anytype) !voi try w.writeAll(",\"supported_nips\":[1,2,9,11,13,16,33,40,42,45,50,51,65,70,77,86]"); try w.writeAll(",\"software\":\"https://github.com/privkeyio/wisp\""); - try w.writeAll(",\"version\":\"0.5.13\""); + try w.writeAll(",\"version\":\"0.5.14\""); try w.writeAll(",\"limitation\":{"); try w.print("\"max_message_length\":{d}", .{config.max_message_size});