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>