Annotation of freem/doc/freem_conformance.1, revision 1.2

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>