From e4fb7503e4616ae6bcc15232e4438fcf81a6335d Mon Sep 17 00:00:00 2001 From: Veit Heller Date: Fri, 16 Oct 2026 18:53:31 +0200 Subject: [PATCH] 0.12.2: json 0.7.2 and core Map reference helpers --- CHANGELOG.md | 7 +++++++ README.md | 4 ++-- examples/todo/server.carp | 2 +- gendocs.carp | 2 +- web.carp | 27 +++------------------------ 5 files changed, 14 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e26a0b7..290c5a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.12.2] + +### Changed +- `json` bumped to 0.7.2, which uses the public Map API for JSON Patch + diffing. The Map reference helpers now come from core. web builds again + with Carp core's open-addressing Map. + ## [0.12.1] ### Changed diff --git a/README.md b/README.md index 5178415..bce9cc6 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ kqueue/epoll. ## Installation ```clojure -(load "git@github.com:carpentry-org/web@0.12.1") +(load "git@github.com:carpentry-org/web@0.12.2") ``` ## Usage @@ -15,7 +15,7 @@ kqueue/epoll. Define handler functions and register them with `defserver`: ```clojure -(load "git@github.com:carpentry-org/web@0.12.1") +(load "git@github.com:carpentry-org/web@0.12.2") (defn hello [req params] (Response.text @"Hello, world!")) diff --git a/examples/todo/server.carp b/examples/todo/server.carp index e580080..0ed1d8f 100644 --- a/examples/todo/server.carp +++ b/examples/todo/server.carp @@ -1,5 +1,5 @@ ; in-tree load so CI compiles this example; outside the repo use -; (load "git@github.com:carpentry-org/web@0.12.1") +; (load "git@github.com:carpentry-org/web@0.12.2") (load "../../web.carp") (load "git@github.com:carpentry-org/orm@0.5.2" "backends/sqlite3.carp") diff --git a/gendocs.carp b/gendocs.carp index 9e236b1..86b4635 100644 --- a/gendocs.carp +++ b/gendocs.carp @@ -16,7 +16,7 @@ register them as routes on an [`App`](./App.html), and start serving with ### HTTP Example ``` -(load \"git@github.com:carpentry-org/web@0.12.1\") +(load \"git@github.com:carpentry-org/web@0.12.2\") (defn hello [req params] (Response.text @\"Hello, world!\")) diff --git a/web.carp b/web.carp index 37e8343..5512576 100644 --- a/web.carp +++ b/web.carp @@ -4,13 +4,13 @@ Events support. ## Installation ``` -(load \"git@github.com:carpentry-org/web@0.12.1\") +(load \"git@github.com:carpentry-org/web@0.12.2\") ``` ## Usage ``` -(load \"git@github.com:carpentry-org/web@0.12.1\") +(load \"git@github.com:carpentry-org/web@0.12.2\") (defn hello [req params] (Response.text @\"Hello, world!\")) @@ -36,7 +36,7 @@ Events support. (load "git@github.com:carpentry-org/http@0.7.1") (load "git@github.com:carpentry-org/socket@0.2.5") -(load "git@github.com:carpentry-org/json@0.7.1") +(load "git@github.com:carpentry-org/json@0.7.2") (load "git@github.com:carpentry-org/file@0.4.1") (load "git@github.com:carpentry-org/log@0.2.0") (load "git@github.com:carpentry-org/utf8.carp@0.2.0") @@ -286,27 +286,6 @@ Returns 20 raw bytes.") 40-character lowercase hex string.") (defn sha1-hex [key msg] (hex-encode &(sha1 key msg)))) -(defmodule Map - (doc update-value! "calls `f` with a reference to the value at key `k`. -Does nothing if the key is not found. The reference allows mutation through -FFI functions (e.g. reading into a stream's buffer).") - (defn update-value! [m k f] - (let [idx (Int.positive-mod (hash k) @(n-buckets m))] - (let [bucket (Array.unsafe-nth (buckets m) idx) - i (Bucket.find bucket k)] - (when (>= i 0) - (~f (Pair.b (Array.unsafe-nth (Bucket.entries bucket) i))))))) - - (doc value-ref! "calls `f` with a reference to the value at key `k` and -returns whatever `f` returns. If the key is missing, returns `default`.") - (defn value-ref! [m k f default] - (let [idx (Int.positive-mod (hash k) @(n-buckets m))] - (let [bucket (Array.unsafe-nth (buckets m) idx) - i (Bucket.find bucket k)] - (if (>= i 0) - (~f (Pair.b (Array.unsafe-nth (Bucket.entries bucket) i))) - default))))) - (relative-include "src/fstat_mtime.h") (private web-fstat-mtime) (hidden web-fstat-mtime)