Annotation of freem/doc/freem.1, revision 1.11

1.1       snw         1: .\" To display this man page, either:
                      2: .\"   1) Install this file along with the other subject.1 files in your
                      3: .\"      system's man1 directory (usually this is /usr/man/man1) and
                      4: .\"      enter the command:
1.3       snw         5: .\"        man freem
1.1       snw         6: .\"   or
                      7: .\"   2) Specify the input (this file) and the output (your favorite pager)
                      8: .\"      explicitly.  For example, if this file is in your current working
                      9: .\"      directory, you can use the following to view the formatted man page
                     10: .\"      using the "less" pager:
1.3       snw        11: .\"        man ./freem.1 | less
1.1       snw        12: .\"
                     13: .\" To print this man page to a PostScript printer:
1.3       snw        14: .\"   man -t ./freem.1 | lpr
1.1       snw        15: .\"
1.11    ! snw        16: .\"   $Id: freem.1,v 1.10 2025/04/28 14:52:54 snw Exp $
1.1       snw        17: .\"    FreeM man page
                     18: .\"
                     19: .\"  
1.2       snw        20: .\"   Author: Serena Willis <snw@coherent-logic.com>
1.1       snw        21: .\"    Copyright (C) 1998 MUG Deutschland
1.3       snw        22: .\"    Copyright (C) 2020, 2025 Coherent Logic Development LLC
1.1       snw        23: .\"
                     24: .\"
                     25: .\"   This file is part of FreeM.
                     26: .\"
                     27: .\"   FreeM is free software: you can redistribute it and/or modify
                     28: .\"   it under the terms of the GNU Affero Public License as published by
                     29: .\"   the Free Software Foundation, either version 3 of the License, or
                     30: .\"   (at your option) any later version.
                     31: .\"
                     32: .\"   FreeM is distributed in the hope that it will be useful,
                     33: .\"   but WITHOUT ANY WARRANTY; without even the implied warranty of
                     34: .\"   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     35: .\"   GNU Affero Public License for more details.
                     36: .\"
                     37: .\"   You should have received a copy of the GNU Affero Public License
                     38: .\"   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.
                     39: .\"
1.5       snw        40: .\"   $Log: freem.1,v $
1.11    ! snw        41: .\"   Revision 1.10  2025/04/28 14:52:54  snw
        !            42: .\"   Temporarily revert global handler refactor and fix reference regression in xecline
        !            43: .\"
1.10      snw        44: .\"   Revision 1.9  2025/04/18 22:12:29  snw
                     45: .\"   Fix texinfo bogosity and add subjects to man pages
                     46: .\"
1.9       snw        47: .\"   Revision 1.8  2025/04/18 01:23:05  snw
                     48: .\"   More documentation updates
                     49: .\"
1.8       snw        50: .\"   Revision 1.7  2025/04/17 17:57:35  snw
                     51: .\"   Major updates to man pages
                     52: .\"
1.7       snw        53: .\"   Revision 1.6  2025/04/17 15:08:24  snw
                     54: .\"   Add documentation on FREEM_LOG_THRESHOLD environment variables to man pages
                     55: .\"
1.6       snw        56: .\"   Revision 1.5  2025/04/04 12:49:19  snw
                     57: .\"   Dollar signs cut off in ENVIRONMENT sections of both man pages
                     58: .\"
1.5       snw        59: .\"   Revision 1.4  2025/04/03 15:56:41  snw
                     60: .\"   Add fmadm man page to CVS
                     61: .\"
1.1       snw        62: .\"
1.3       snw        63: .TH freem 1 "3 April 2025" FreeM "FreeM User Manual"
1.1       snw        64: .SH NAME
1.9       snw        65: freem - FreeM programming language interpreter
1.1       snw        66: .SH SYNOPSIS
                     67: .B freem [OPTION...]
                     68: .SH DESCRIPTION
                     69: The
                     70: .B freem
                     71: program runs an instance of
                     72: .IR "FreeM"
                     73: \.
                     74: 
                     75: FreeM is an implementation of the MUMPS programming language, began by the efforts of the mysterious Shalom ha-Ashkenaz. In response to InterSystems' spree of buying up all competing MUMPS implementations, Shalom gifted FreeM to MUG Deutschland in 1998, in hopes that the MUMPS community would turn it into a viable, freely available, and fully-featured MUMPS implementation.
                     76: 
                     77: After years of dormancy, the FreeM project has been resurrected, and under the stewardship of Coherent Logic Development and a small core team of contributors, work is proceeding towards completing the original FreeM team's goals, and much more.
                     78: 
                     79: More information is available at https://freem.coherent-logic.com/
                     80: 
1.8       snw        81: Please see the FreeM
                     82: \fIinfo\fR documentation for language, database, and administration details.
1.1       snw        83: .SH OPTIONS
                     84: .TP
                     85: \-h, --help
1.7       snw        86: .RS 4
1.3       snw        87: Display a list of freem command-line flags
1.7       snw        88: .RE
1.1       snw        89: .TP
                     90: \-i, --import
1.7       snw        91: .RS 4
1.3       snw        92: Imports UNIX environment variables as M locals
1.7       snw        93: .RE
1.3       snw        94: .TP
                     95: \-e <environment-name>, --environment=<environment-name>
1.7       snw        96: .RS 4
                     97: Sets active environment to
                     98: \fI<environment-name>\fR;
                     99: \fIDEFAULT\fR if unspecified
                    100: .RE
1.1       snw       101: .TP
                    102: \-f, --filter
1.7       snw       103: .RS 4
1.3       snw       104: Allows M code to be used as a filter
1.7       snw       105: .RE
1.1       snw       106: .TP
                    107: \-n <NAMESPACE>, --namespace=<NAMESPACE>
1.7       snw       108: .RS 4
                    109: Selects
                    110: \fI<NAMESPACE>\fR as the startup namespace instead of
                    111: \fIUSER\fR
                    112: .RE
1.1       snw       113: .TP
                    114: \-q, --quiet
1.7       snw       115: .RS 4
                    116: Disables startup messages and prompt string
                    117: .RE
1.1       snw       118: .TP
1.3       snw       119: \-r <LABEL^ROUTINE>, --routine=<LABEL^ROUTINE>
1.7       snw       120: .RS 4
                    121: Executes
                    122: \fI<LABEL^ROUTINE>\fR on startup instead of entering direct mode
                    123: .RE
                    124: .TP
1.3       snw       125: \-s <standard>, --standard=<standard>
1.7       snw       126: .RS 4
                    127: Restricts access to FreeM vendor extensions not present in relevant standards
                    128: \fI*\fR. In this flag,
                    129: \fI<standard>\fR can be:
                    130: .sp
                    131: .RS 4
                    132: .ie n \{\
                    133: \h'-04'\(bu\h'+03'\c
                    134: .\}
                    135: .el \{\
                    136: .sp -1
                    137: .IP \(bu 2.3
                    138: .\}
                    139: M77
                    140: .RE
                    141: .sp
                    142: .RS 4
                    143: .ie n \{\
                    144: \h'-04'\(bu\h'+03'\c
                    145: .\}
                    146: .el \{\
                    147: .sp -1
                    148: .IP \(bu 2.3
                    149: .\}
                    150: M84
                    151: .RE
                    152: .sp
                    153: .RS 4
                    154: .ie n \{\
                    155: \h'-04'\(bu\h'+03'\c
                    156: .\}
                    157: .el \{\
                    158: .sp -1
                    159: .IP \(bu 2.3
                    160: .\}
                    161: M90
                    162: .RE
                    163: .sp
                    164: .RS 4
                    165: .ie n \{\
                    166: \h'-04'\(bu\h'+03'\c
                    167: .\}
                    168: .el \{\
                    169: .sp -1
                    170: .IP \(bu 2.3
                    171: .\}
                    172: M95
                    173: .RE
                    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: MDS
                    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: M5
                    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: FREEM
                    206: 
                    207: .RE
                    208: \fB*\fR FreeM is not entirely compliant with any MDC standard, regardless of the value of the
                    209: \fI--standard\fR command-line flag.
                    210: 
                    211: See the
                    212: \fBCompliance Clause\fR on the FreeM Wiki for more information on FreeM's deviations from MDC standards.
                    213: .RE
1.1       snw       214: .TP
                    215: \-v, --version
1.3       snw       216: Display FreeM version information
1.1       snw       217: .TP
                    218: \-x <MCODE>, --execute=<MCODE>
1.8       snw       219: Execute M code
                    220: \fI<MCODE>\fR on startup
1.3       snw       221: .TP
                    222: \-d, --daemon
                    223: Run the FreeM daemon (one and only one FreeM daemon must always be running for each configured environment)
                    224: .TP
                    225: \-k, --nofork
1.8       snw       226: Run the FreeM daemon in foreground (requires
                    227: \fI--daemon\fR)
1.3       snw       228: .TP
                    229: \-S <BYTES>, --shmsize=<BYTES>
                    230: Sets the size of the shared memory segment where FreeM stores the job table, lock table, and IPC table.
                    231:  - Each concurrent job takes 1024 bytes (1 page) of shared memory
                    232:  - Each LOCK takes 2048 bytes (2 pages) of shared memory
                    233:  - Each IPC takes 1024 bytes (1 page) of shared memory
1.1       snw       234: .SH "RETURN VALUES"
                    235: Returns 0 for non-error condition.
                    236: .SH FILES
                    237: .TP
1.3       snw       238: env.conf
1.8       snw       239: The FreeM environment catalog. Normally located in
                    240: \fI$PREFIX/etc/freem/env.conf\fR
1.3       snw       241: .TP
1.1       snw       242: freem.conf
1.8       snw       243: The FreeM configuration file. Normally located in
                    244: \fI$PREFIX/etc/freem/<environment-name>/freem.conf\fR
1.1       snw       245: .SH ENVIRONMENT
1.3       snw       246: .TP
1.5       snw       247: $DISPLAY
1.8       snw       248: Determines the value of the
                    249: \fI$PDISPLAY\fR intrinsic special variable. This determines the X11 display used by the M Windowing API. Only applies when FreeM is built with the
                    250: \fI--enable-mwapi\fR configuration option.
1.3       snw       251: .TP
1.5       snw       252: $TERM
1.8       snw       253: Used by the
                    254: \fI^$DEVICE\fR structured system variable to provide the
                    255: \fITERMID\fR value for I/O channel 0.
1.6       snw       256: .TP
                    257: $FREEM_LOG_THRESHOLD_FILE
1.8       snw       258: Overrides the configured threshold at which log messages are written to files in
                    259: \fI/var/log/freem\fR, corresponding to the
                    260: \fIlog_threshold_file\fR environment setting in
                    261: \fI$PREFIX/etc/env.conf\fR. The default value is
                    262: \fIinfo\fR.
1.6       snw       263: .TP
                    264: $FREEM_LOG_THRESHOLD_SYSLOG
1.8       snw       265: Overrides the configured threshold at which log messages are sent to the
                    266: \fIsyslog\fR facility on systems that support it, corresponding to the
                    267: \fIlog_threshold_syslog\fR environment setting in
                    268: \fI$PREFIX/etc/env.conf\fR. The default value is
                    269: \fIinfo\fR.
1.6       snw       270: .TP
                    271: $FREEM_LOG_THRESHOLD_STDERR
1.8       snw       272: Overrides the configured threshold at which log messages are sent to
                    273: \fIstderr\fR, corresponding to the
                    274: \fIlog_threshold_stderr\fR environment setting in
                    275: \fI$PREFIX/etc/env.conf\fR. The default value is
                    276: \fIwarning\fR.
1.6       snw       277: .SH LOG THRESHOLD VALUES
1.8       snw       278: This section details the valid values for each of the
                    279: \fI$FREEM_LOG_THRESHOLD_*\fR environment variables, and each value indicates a minimum diagnostic level at which the indicated class of message will be delivered through the selected mechanism. All messages with an equal or higher diagnostic level than the class indicated will be delivered, i.e., if
                    280: \fIwarning\fR is selected, messages with a diagnostic class of
                    281: \fIwarning\fR,
                    282: \fIerror\fR, and
                    283: \fIfatal\fR will be delivered through the selected mechanism.
1.6       snw       284: 
                    285: Valid values for each of these environment variables are as follows:
                    286: .TP
                    287: debug
1.8       snw       288: .RS 4
1.6       snw       289: Messages useful mostly for developers contributing to FreeM itself. Will produce a high volume of log messages, and is likely to impact system performance. Not recommended for production usage.
1.8       snw       290: .RE
1.6       snw       291: .TP
                    292: info
1.8       snw       293: .RS 4
                    294: Includes messages of an informational nature. Will produce a moderately high volume of log messages. For heavily multi-user and multi-process systems, it is recommended to use
                    295: \fIwarning\fR instead.
                    296: .RE
1.6       snw       297: .TP
                    298: warning
1.8       snw       299: .RS 4
1.6       snw       300: Includes warning messages. These indicate conditions (including retries when attempting to acquire semaphores) that warrant further investigation by the system operator, but do not typically prevent applications from running.
1.8       snw       301: .RE
1.6       snw       302: .TP
                    303: error
1.8       snw       304: .RS 4
1.6       snw       305: Includes error messages. This class of messages indicates that a recoverable error has occurred in the FreeM engine. Warrants immediate attention by the system operator.
1.8       snw       306: .RE
1.6       snw       307: .TP
                    308: fatal
1.8       snw       309: .RS 4
1.6       snw       310: Includes messages indicating errors that are not recoverable. If this class of message occurs, the process that triggered the message has terminated abnormally. Requires immediate system operator intervention, and can indicate gross misconfiguration of the FreeM engine or the host operating system environment, or even a FreeM bug.
1.8       snw       311: .RE
1.1       snw       312: .SH BUGS
1.3       snw       313: Check the issue tracker at https://bugs.coherent-logic.com for more detailed information on current bugs.
1.1       snw       314: .SH AUTHOR
                    315: Provided by Shalom ha-Ashkenaz, 1998/06/18 CE, to the stewardship of the
                    316: MUG Deutschland. The GUMP (Generic Universal M Project) took over after this point,
1.2       snw       317: and ownership of the original SourceForge project was handed over to Serena Willis of
1.1       snw       318: Coherent Logic Development LLC in 2014.
                    319: .br
                    320: The author's identity is a mystery.  Can anyone shed light on this?
                    321: .br
                    322: 
                    323: .br
                    324: Man page written by Ron Fox (rfox@dls.queens.org)
                    325: .br
1.2       snw       326: Maintained and updated by Serena Willis (snw@coherent-logic.com)
1.1       snw       327: .SH COPYRIGHT
                    328: 
                    329: Copyright (C) 1998 MUG Deutschland
                    330: .br
1.4       snw       331: Copyright (C) 2025 Coherent Logic Development LLC
                    332: 
                    333: 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.
1.1       snw       334: .SH "SEE ALSO"
1.7       snw       335: .PP
                    336: \fBfmadm\fR(8),
                    337: \fBenv.conf\fR(5),
1.11    ! snw       338: \fBfreem.conf\fR(5),
        !           339: \fBfreem_conformance\fR(1)
        !           340: 

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