Annotation of freem/doc/freem_conformance.1, revision 1.5
1.1 snw 1: .\"
1.5 ! snw 2: .\" $Id: freem_conformance.1,v 1.4 2025/05/05 04:48:17 snw Exp $
1.1 snw 3: .\"
4: .\" Author: Serena Willis <snw@coherent-logic.com>
5: .\" Copyright (C) 2025 Coherent Logic Development LLC
6: .\"
7: .\" This file is part of FreeM.
8: .\"
9: .\" FreeM is free software: you can redistribute it and/or modify
10: .\" it under the terms of the GNU Affero Public License as published by
11: .\" the Free Software Foundation, either version 3 of the License, or
12: .\" (at your option) any later version.
13: .\"
14: .\" FreeM is distributed in the hope that it will be useful,
15: .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
16: .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17: .\" GNU Affero Public License for more details.
18: .\"
19: .\" You should have received a copy of the GNU Affero Public License
20: .\" along with FreeM. If not, see <https://www.gnu.org/licenses/>.
21: .\"
1.2 snw 22: .\" $Log: freem_conformance.1,v $
1.5 ! snw 23: .\" Revision 1.4 2025/05/05 04:48:17 snw
! 24: .\" Update conformance document
! 25: .\"
1.4 snw 26: .\" Revision 1.3 2025/05/03 03:07:55 snw
27: .\" Documentation updates
28: .\"
1.3 snw 29: .\" Revision 1.2 2025/05/02 16:25:46 snw
30: .\" -m
31: .\"
1.2 snw 32: .\" Revision 1.1 2025/05/02 15:19:32 snw
33: .\" Add conformance clause man page
1.1 snw 34: .\"
1.2 snw 35: .\"
36: .TH freem_conformance 1 "2 May 2025" FreeM "FreeM User Manual"
37: .SH NAME
38:
39: freem_conformance - FreeM MDC Conformance Document
40:
41: .SH SYNOPSIS
42:
43: FreeM version 0.64.0-rc1 conforms to X11.1-1995, as modified by the following MDC documents:
44:
45: .sp
46: .RS 4
47: .ie n \{\
48: \h'-04'\(bu\h'+03'\c
49: .\}
50: .el \{\
51: .sp -1
52: .IP \(bu 2.3
53: .\}
54: X11/1998-28 Event Processing (MDC status A)
55: .RE
56: .sp
57: .RS 4
58: .ie n \{\
59: \h'-04'\(bu\h'+03'\c
60: .\}
61: .el \{\
62: .sp -1
63: .IP \(bu 2.3
64: .\}
65: X11/1998-31 IF THEN & ELSE (MDC status A)
66: .RE
67: .sp
68: .RS 4
69: .ie n \{\
70: \h'-04'\(bu\h'+03'\c
71: .\}
72: .el \{\
73: .sp -1
74: .IP \(bu 2.3
75: .\}
76: X11/95-118 Undefined ssvns (MDC status A)
77: .RE
78: .sp
79: .RS 4
80: .ie n \{\
81: \h'-04'\(bu\h'+03'\c
82: .\}
83: .el \{\
84: .sp -1
85: .IP \(bu 2.3
86: .\}
87: X11/96-13 Portable length limit of names (MDC status A)
88: .RE
89:
90: with the following exceptions:
91: .SH EXCEPTIONS
92:
93: .TP
94: Aliases
95: .RS 4
96: FreeM supports aliases for local variables that can reference either the root node or a subtree:
97:
98: .EX
99: USER> S X(3)="harps"
100:
101: USER> S J=.X(3)
102:
103: USER> S J(8)=17
104:
105: USER> ZWR X
106: X(3)=harps
107: X(3,8)=17
108: .EE
109:
110: Aliases used in pass-by-reference can also reference entire subtrees instead of just the root node:
111:
112: .EX
113: USER> ZL TEST
114:
115: USER> ZP
116:
117: TEST ;
118: S X(3)=4
119: D SUBR(.X(3))
120: ZWR X
121: QUIT
122: ;
123: SUBR(A) ;
124: S A(4)="thwack!"
125: QUIT
126:
127: USER> D ^TEST
128: X(3)=4
129: X(3,4)=thwack!
130: .EE
131: .RE
132:
133: .TP
134: Environments
135: .RS 4
136: In FreeM, the \fInamespace\fR is roughly equivalent to what the \fIStandard\fR refers to as an \fIenvironment\fR. However, FreeM uses the term \fIenvironment\fR to refer to a collection of namespaces, processes, and an after-image journal.
137: .RE
138: .TP
139: Indirection
140: .RS 4
141: FreeM supports several forms of indirection that are nonstandard, as well as allowing indirection in several constructs where the standard prohibits it. Below is a list of some known instances of idiosyncratic indirection; please note that this list is by no means comprehensive:
142: .sp
143: .RS 4
144: .ie n \{\
145: \h'-04'\(bu\h'+03'\c
146: .\}
147: .el \{\
148: .sp -1
149: .IP \(bu 2.3
150: .\}
151: FOR loops in FreeM support argument indirection
152: .RE
153: .sp
154: .RS 4
155: .ie n \{\
156: \h'-04'\(bu\h'+03'\c
157: .\}
158: .el \{\
159: .sp -1
160: .IP \(bu 2.3
161: .\}
162: FreeM supports list indirection, such as \fBS X="1,2,3",ARGS="X,"","",2" W $P(@ARGS)\fR, which will output \fB2\fR
163: .RE
164: .RE
165: .TP
166: \fBMERGE\fR
167: .RS 4
168: \fBMERGE\fR should be implemented as \fB[MERGE] postcond SP L mergeargument\fR, but is currently implemented as \fBM[ERGE] postcond SP mergeargument\fR.
169: .RE
170: .TP
171: \fBKVALUE\fR and \fBKSUBSCRIPTS\fR
172: .RS 4
173: Only the inclusive forms of these commands are currently implemented.
174: .RE
175: .TP
176: Transaction Processing
177: .RS 4
178: Restartable transactions are not implemented.
179: .RE
180: .TP
181: Event Processing
182: .RS 4
183: .sp
184: .RS 4
185: .ie n \{\
186: \h'-04'\(bu\h'+03'\c
187: .\}
188: .el \{\
189: .sp -1
190: .IP \(bu 2.3
191: .\}
192: \fBETRIGGER\fR is not implemented
193: .RE
194: .sp
195: .RS 4
196: .ie n \{\
197: \h'-04'\(bu\h'+03'\c
198: .\}
199: .el \{\
200: .sp -1
201: .IP \(bu 2.3
202: .\}
203: Of the event classes defined in \fIX11/1998-28\fR, only the \fBINTERRUPT\fR \fIevclass\fR is implemented
204: .RE
205: .sp
206: .RS 4
207: .ie n \{\
208: \h'-04'\(bu\h'+03'\c
209: .\}
210: .el \{\
211: .sp -1
212: .IP \(bu 2.3
213: .\}
214: The \fBTRIGGER\fR \fIevclass\fR is nonstandard
215: .RE
216: .sp
217: .RS 4
218: .ie n \{\
219: \h'-04'\(bu\h'+03'\c
220: .\}
221: .el \{\
222: .sp -1
223: .IP \(bu 2.3
224: .\}
225: The \fB^$EVENT\fR \fIssvn\fR is incomplete
226: .RE
227: .sp
228: .RS 4
229: .ie n \{\
230: \h'-04'\(bu\h'+03'\c
231: .\}
232: .el \{\
233: .sp -1
234: .IP \(bu 2.3
235: .\}
236: Environment-wide events defined in \fB^$SYSTEM\fR are nonstandard
237: .RE
238: .RE
239: .TP
240: \fBDO\fR and \fBGOTO\fR
241: .RS 4
1.3 snw 242: FreeM's implementation of these commands allows the \fIentryref\fR to consist only of the \fI+ intexpr\fR component, in which \fIintexpr\fR is interpreted as a number of lines from the beginning of the currently-executing routine. This behavior is in addition to--and not instead of--the \fIentryref\fR syntax specified in the \fIStandard\fR.
1.2 snw 243: .RE
244: .TP
245: \fBIF\fR and \fBELSE\fR
246: .RS 4
247: Both of these commands allow a \fIpostcondition\fR in FreeM.
248: .RE
249:
250: \fBLOCK\fR
251: .RS 4
252: The first subscript of \fB^$LOCK\fR collates according to the rules for global and local subscripts, not as an \fInref\fR, as FreeM uses globals (both persistent and memory-backed) as backing store for SSVNs.
253: .RE
254: .TP
255: Miscellaneous Language Features
256: .RS 4
257: .sp
258: .RS 4
259: .ie n \{\
260: \h'-04'\(bu\h'+03'\c
261: .\}
262: .el \{\
263: .sp -1
264: .IP \(bu 2.3
265: .\}
266: \fB$DIALECT\fR intrinsic special variable
267: .RE
1.5 ! snw 268: .sp
! 269: .RS 4
! 270: .ie n \{\
! 271: \h'-04'\(bu\h'+03'\c
! 272: .\}
! 273: .el \{\
! 274: .sp -1
! 275: .IP \(bu 2.3
! 276: .\}
! 277: Multiple consecutive pluses or minuses after the E in E notation are allowed. The fact that they are illegal in numlits but string coercion is expected to ignore the signs makes it impossible to fix, because the MDC couldn't find a sensible set of numeric coercion rules with two hands and a flashlight.
! 278: .RE
! 279:
1.2 snw 280: .RE
281:
282: .SH SUPPORTED CHARACTER SET PROFILES
283: .RS 4
284: Supported character set profiles are:
285: .sp
286: .RS 4
287: .ie n \{\
288: \h'-04'\(bu\h'+03'\c
289: .\}
290: .el \{\
291: .sp -1
292: .IP \(bu 2.3
293: .\}
294: \fBM\fR
295: .RE
296: .RE
297:
298: .SH $SYSTEM
299: Uniqueness of \fB$SYSTEM\fR is guaranteed by combining the FreeM vendor ID (49) with the short form of the system hostname and a \fIUUIDv4\fR identifier, generated for each FreeM environment when it is initially configured.
300:
301: \fB$SYSTEM\fR looks like this:
302:
303: .EX
304: 49,"hesperos:931fac9d-b2b3-4e86-adb5-6c248b87d6ae"
305: .EE
306: .SH DISABLING NONSTANDARD FEATURES
307: Standards conformance may be imrpoved somewhat in certain contexts by setting the \fB$DIALECT\fR intrinsic special variable to \fBM77\fR, \fBM84\fR, \fBM90\fR, \fBM95\fR, \fBMDS\fR, or \fBM5\fR.
308:
309: See \fIThe FreeM Manual\fR (\fBinfo freem\fR) for further information.
310: .SH AUTHOR
311: Written by Serena Willis (snw@coherent-logic.com)
312:
313: .SH COPYRIGHT
314: Copyright (C) 2025 Coherent Logic Development LLC
315:
316: Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover texts, and with no Back-Cover Texts.
317:
318: .SH "SEE ALSO"
319: .PP
320: \fBfreem\fR(1),
321: \fBfmadm\fR(8),
322: \fBfreem.conf\fR(5),
323: \fBenv.conf\fR(5)
324:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>