summaryrefslogtreecommitdiff
path: root/docs/typ/building.typ
diff options
context:
space:
mode:
Diffstat (limited to 'docs/typ/building.typ')
-rw-r--r--docs/typ/building.typ17
1 files changed, 8 insertions, 9 deletions
diff --git a/docs/typ/building.typ b/docs/typ/building.typ
index 85f2dfbb..6a2758ad 100644
--- a/docs/typ/building.typ
+++ b/docs/typ/building.typ
@@ -229,15 +229,14 @@ use `.cloud9 = .{ .path = "../cloud9" }` while editing both. cloud9's own
== Writes through a mount <writes-through-a-mount>
A mount cuts a big write into pieces of at most one message (msize 65536,
-less the header), and each command line runs once it is whole. A write
-that does not fill its message is whole, so its last line runs even
-without a newline (`printf Save > exec`), unless it is a multiple of 4096
-bytes: that is where a writer's buffer (stdio, a mount's page cache)
-filled and cut a line, so its tail waits for the next write or the close.
-A line held to the close (such a tail, or an `Edit` block never ended)
-runs there, and its failure is only in the log, as its `err` record: the
-close reports no error, and the write that sent it had already succeeded.
-So a script that needs a line's result ends the write with a newline.
+less the header), anywhere, and each command line runs once its newline
+comes; nothing is read into a write's size. A last line with no newline
+(`printf Save > exec`) runs when the file is closed, as does an `Edit`
+block never ended, and its failure is then only in the log, as its `err`
+record: the close reports no error, and the write that sent it had
+already succeeded. So a script that needs a line's result ends it with a
+newline. A line over 1 MiB is refused once, and the rest of it, through
+its newline, is dropped.
== Listeners <listeners>