Annotation of freem/doc/freem_conformance.1, revision 1.3
1.1 snw 1: .\"
1.3 ! snw 2: .\" $Id: freem_conformance.1,v 1.2 2025/05/02 16:25:46 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.3 ! snw 23: .\" Revision 1.2 2025/05/02 16:25:46 snw
! 24: .\" -m
! 25: .\"
1.2 snw 26: .\" Revision 1.1 2025/05/02 15:19:32 snw
27: .\" Add conformance clause man page
1.1 snw 28: .\"
1.2 snw 29: .\"
30: .TH freem_conformance 1 "2 May 2025" FreeM "FreeM User Manual"
31: .SH NAME
32:
33: freem_conformance - FreeM MDC Conformance Document
34:
35: .SH SYNOPSIS
36:
37: FreeM version 0.64.0-rc1 conforms to X11.1-1995, as modified by the following MDC documents:
38:
39: .sp
40: .RS 4
41: .ie n \{\
42: \h'-04'\(bu\h'+03'\c
43: .\}
44: .el \{\
45: .sp -1
46: .IP \(bu 2.3
47: .\}
48: X11/1998-28 Event Processing (MDC status A)
49: .RE
50: .sp
51: .RS 4
52: .ie n \{\
53: \h'-04'\(bu\h'+03'\c
54: .\}
55: .el \{\
56: .sp -1
57: .IP \(bu 2.3
58: .\}
59: X11/1998-31 IF THEN & ELSE (MDC status A)
60: .RE
61: .sp
62: .RS 4
63: .ie n \{\
64: \h'-04'\(bu\h'+03'\c
65: .\}
66: .el \{\
67: .sp -1
68: .IP \(bu 2.3
69: .\}
70: X11/95-118 Undefined ssvns (MDC status A)
71: .RE
72: .sp
73: .RS 4
74: .ie n \{\
75: \h'-04'\(bu\h'+03'\c
76: .\}
77: .el \{\
78: .sp -1
79: .IP \(bu 2.3
80: .\}
81: X11/96-13 Portable length limit of names (MDC status A)
82: .RE
83:
84: with the following exceptions:
85: .SH EXCEPTIONS
86:
87: .TP
88: Aliases
89: .RS 4
90: FreeM supports aliases for local variables that can reference either the root node or a subtree:
91:
92: .EX
93: USER> S X(3)="harps"
94:
95: USER> S J=.X(3)
96:
97: USER> S J(8)=17
98:
99: USER> ZWR X
100: X(3)=harps
101: X(3,8)=17
102: .EE
103:
104: Aliases used in pass-by-reference can also reference entire subtrees instead of just the root node:
105:
106: .EX
107: USER> ZL TEST
108:
109: USER> ZP
110:
111: TEST ;
112: S X(3)=4
113: D SUBR(.X(3))
114: ZWR X
115: QUIT
116: ;
117: SUBR(A) ;
118: S A(4)="thwack!"
119: QUIT
120:
121: USER> D ^TEST
122: X(3)=4
123: X(3,4)=thwack!
124: .EE
125: .RE
126:
127: .TP
128: Environments
129: .RS 4
130: 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.
131: .RE
132: .TP
133: Indirection
134: .RS 4
135: 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:
136: .sp
137: .RS 4
138: .ie n \{\
139: \h'-04'\(bu\h'+03'\c
140: .\}
141: .el \{\
142: .sp -1
143: .IP \(bu 2.3
144: .\}
145: FOR loops in FreeM support argument indirection
146: .RE
147: .sp
148: .RS 4
149: .ie n \{\
150: \h'-04'\(bu\h'+03'\c
151: .\}
152: .el \{\
153: .sp -1
154: .IP \(bu 2.3
155: .\}
156: FreeM supports list indirection, such as \fBS X="1,2,3",ARGS="X,"","",2" W $P(@ARGS)\fR, which will output \fB2\fR
157: .RE
158: .RE
159: .TP
160: \fBMERGE\fR
161: .RS 4
162: \fBMERGE\fR should be implemented as \fB[MERGE] postcond SP L mergeargument\fR, but is currently implemented as \fBM[ERGE] postcond SP mergeargument\fR.
163: .RE
164: .TP
165: \fBKVALUE\fR and \fBKSUBSCRIPTS\fR
166: .RS 4
167: Only the inclusive forms of these commands are currently implemented.
168: .RE
169: .TP
170: Transaction Processing
171: .RS 4
172: Restartable transactions are not implemented.
173: .RE
174: .TP
175: Event Processing
176: .RS 4
177: .sp
178: .RS 4
179: .ie n \{\
180: \h'-04'\(bu\h'+03'\c
181: .\}
182: .el \{\
183: .sp -1
184: .IP \(bu 2.3
185: .\}
186: \fBETRIGGER\fR is not implemented
187: .RE
188: .sp
189: .RS 4
190: .ie n \{\
191: \h'-04'\(bu\h'+03'\c
192: .\}
193: .el \{\
194: .sp -1
195: .IP \(bu 2.3
196: .\}
197: Of the event classes defined in \fIX11/1998-28\fR, only the \fBINTERRUPT\fR \fIevclass\fR is implemented
198: .RE
199: .sp
200: .RS 4
201: .ie n \{\
202: \h'-04'\(bu\h'+03'\c
203: .\}
204: .el \{\
205: .sp -1
206: .IP \(bu 2.3
207: .\}
208: The \fBTRIGGER\fR \fIevclass\fR is nonstandard
209: .RE
210: .sp
211: .RS 4
212: .ie n \{\
213: \h'-04'\(bu\h'+03'\c
214: .\}
215: .el \{\
216: .sp -1
217: .IP \(bu 2.3
218: .\}
219: The \fB^$EVENT\fR \fIssvn\fR is incomplete
220: .RE
221: .sp
222: .RS 4
223: .ie n \{\
224: \h'-04'\(bu\h'+03'\c
225: .\}
226: .el \{\
227: .sp -1
228: .IP \(bu 2.3
229: .\}
230: Environment-wide events defined in \fB^$SYSTEM\fR are nonstandard
231: .RE
232: .RE
233: .TP
234: \fBDO\fR and \fBGOTO\fR
235: .RS 4
1.3 ! snw 236: 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 237: .RE
238: .TP
239: \fBIF\fR and \fBELSE\fR
240: .RS 4
241: Both of these commands allow a \fIpostcondition\fR in FreeM.
242: .RE
243:
244: \fBLOCK\fR
245: .RS 4
246: 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.
247: .RE
248: .TP
249: Miscellaneous Language Features
250: .RS 4
251: .sp
252: .RS 4
253: .ie n \{\
254: \h'-04'\(bu\h'+03'\c
255: .\}
256: .el \{\
257: .sp -1
258: .IP \(bu 2.3
259: .\}
260: \fB$DIALECT\fR intrinsic special variable
261: .RE
262: .sp
263: .RS 4
264: .ie n \{\
265: \h'-04'\(bu\h'+03'\c
266: .\}
267: .el \{\
268: .sp -1
269: .IP \(bu 2.3
270: .\}
271: \fBASSERT\fR command
272: .RE
273: .sp
274: .RS 4
275: .ie n \{\
276: \h'-04'\(bu\h'+03'\c
277: .\}
278: .el \{\
279: .sp -1
280: .IP \(bu 2.3
281: .\}
282: \fBCONST\fR command
283: .RE
284: .sp
285: .RS 4
286: .ie n \{\
287: \h'-04'\(bu\h'+03'\c
288: .\}
289: .el \{\
290: .sp -1
291: .IP \(bu 2.3
292: .\}
293: \fBMAP\fR command
294: .RE
295: .sp
296: .RS 4
297: .ie n \{\
298: \h'-04'\(bu\h'+03'\c
299: .\}
300: .el \{\
301: .sp -1
302: .IP \(bu 2.3
303: .\}
304: \fBTHROW\fB command
305: .RE
306: .sp
307: .RS 4
308: .ie n \{\
309: \h'-04'\(bu\h'+03'\c
310: .\}
311: .el \{\
312: .sp -1
313: .IP \(bu 2.3
314: .\}
315: \fBUSING\fR command
316: .RE
317: .sp
318: .RS 4
319: .ie n \{\
320: \h'-04'\(bu\h'+03'\c
321: .\}
322: .el \{\
323: .sp -1
324: .IP \(bu 2.3
325: .\}
326: \fBWATCH\fR command
327: .RE
328: .sp
329: .RS 4
330: .ie n \{\
331: \h'-04'\(bu\h'+03'\c
332: .\}
333: .el \{\
334: .sp -1
335: .IP \(bu 2.3
336: .\}
337: \fBWITH\fR command
338: .RE
339: .RE
340:
341: .SH SUPPORTED CHARACTER SET PROFILES
342: .RS 4
343: Supported character set profiles are:
344: .sp
345: .RS 4
346: .ie n \{\
347: \h'-04'\(bu\h'+03'\c
348: .\}
349: .el \{\
350: .sp -1
351: .IP \(bu 2.3
352: .\}
353: \fBM\fR
354: .RE
355: .RE
356:
357: .SH $SYSTEM
358: 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.
359:
360: \fB$SYSTEM\fR looks like this:
361:
362: .EX
363: 49,"hesperos:931fac9d-b2b3-4e86-adb5-6c248b87d6ae"
364: .EE
365: .SH DISABLING NONSTANDARD FEATURES
366: 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.
367:
368: See \fIThe FreeM Manual\fR (\fBinfo freem\fR) for further information.
369: .SH AUTHOR
370: Written by Serena Willis (snw@coherent-logic.com)
371:
372: .SH COPYRIGHT
373: Copyright (C) 2025 Coherent Logic Development LLC
374:
375: 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.
376:
377: .SH "SEE ALSO"
378: .PP
379: \fBfreem\fR(1),
380: \fBfmadm\fR(8),
381: \fBfreem.conf\fR(5),
382: \fBenv.conf\fR(5)
383:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>