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