From: Thomas Walker Lynch
Date: Sat, 7 Nov 2026 06:29:57 +0000 (+0000)
Subject: removes tool_shared
X-Git-Url: https://git.reasoningtechnology.com/%27%20%20%20window.RT.dirpr_library%20%20%20%27/%5B%5E?a=commitdiff_plain;h=0f4a5ed1138c0f90b58cc977591a759e9f3a72cc;p=Man_In_Grey
removes tool_shared
---
diff --git a/developer/tool/build_component/makefile b/developer/tool/build_component/makefile
index 7914c0b..cba5ea4 100644
--- a/developer/tool/build_component/makefile
+++ b/developer/tool/build_component/makefile
@@ -4,6 +4,12 @@
RT_MAKEFILE_DP := $(REPO_HOME)/shared/tool/makefile
+# the setuid gate is built hardened
+ifeq ($(NAMESPACE),Man_In_Grey_gate)
+ CFLAGS_PROJECT_LOCAL := -O2 -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
+ LN_FLAGS_PROJECT_LOCAL := -Wl,-z,relro -Wl,-z,now
+endif
+
.PHONY: usage
usage:
@printf "Usage: make [usage|version|information|all|lib|CLI|kmod|clean]\n"
diff --git a/document/Man_In_Grey.html b/document/Man_In_Grey.html
index ebd9b86..2206eb1 100644
--- a/document/Man_In_Grey.html
+++ b/document/Man_In_Grey.html
@@ -112,13 +112,10 @@
There are problems with the method of filling in templates, for one it mixes data and control together: the content to be written, and the marks that say where to substitute. Thus templating is a form of . With in-band signaling, a content string can be identical to a control string, so data and control can alias, and there is no tight way to design the aliasing out. The typical workaround is to disallow control strings in the data, and to write each disallowed character as an , where the escape is then itself control. Each level of nesting multiplies the escapes: an f-string that explains how to write f-strings escapes its braces has twice the number of escapes as the base f-string, and a document about this f-string escapes them again, to have 4 times the number, etc.
- Man_In_Grey signals out of band. A composer is a program, so the logic that forms the output is code, with loops, conditions and lookups, rather than marks embedded in the output. An instruction in the journal is a structure, and file content is carried in it as a byte string with its length. The journal interpreter never scans content for meaning, so content can hold anything, including text that looks like a journal, with no escaping. (A developer is free to create a composer that fills in templates if that is what he really wants; but there is no inherent need to use this approach.)
+ Man_In_Grey signals out of band. A composer is a program, so the logic that forms the output is code, with loops, conditions and lookups, rather than marks embedded in the output. Each instruction in the journal is then length delineated, so a scanner never has to examine content to find structure. A journal could even carry another journal as data, and no escaping would be required.
- The journal is encoded in CBOR, whose strings are length-prefixed. Decoding CBOR makes maps, lists, strings and bytes, and cannot run code, so a journal reaches account B as data and nothing else.
-
-
- Man_In_Grey replaces the template, not the syntax of the file being written. Content is still to be well formed for the program that reads the file, so a composer writing HTML escapes a in its text as HTML requires. An instruction language can take that work over too, as the example in does.
+ Note that Man_In_Grey replaces the template, but not the payload. Whatever limitations the payload has, it continues to have. For example if the payload is HTML, HTML requires escapes on a in its text, Man In Grey has no say about this, rather the HTML interpreter does. However, no additional escapes will be required beyond what the HTML interpreter demands.
@@ -153,14 +150,11 @@
A language can be made as narrow as its application. The narrower it is, the less a journal can say, and the less the guard has to rule out. The example language, , can name no file at all: what it writes, and where, is partially compiled in, and partially derived from the name of the invoking user account.
-
- Narrowness matters most for content. Constraints on where a file goes, and with what owner and permission, do not make the file safe when account A writes every byte of it. A configuration file is read by a program, often one started by root, and what the file says is what that program does; , for one, can name a Python script for the daemon to load. A language that lets account A write such a file freely gives account A much of the power of the program that reads it, however tightly its constraints fix the destination. The safe design is a language narrow enough that every journal it can express is safe: its interpreter writes the file, and account A supplies only values the language has a place for, as in the example.
-