* = TODO - = DONE Core MUMPS ========== * Extend string lengths to 16MiB throughout (especially symbol table and globals) * Support the MDC X Window System binding * Support MWAPI via the Motif widget set * Support OMI * Add optional compile-time support for libcurl, using pthreads and X11/1998-28 async events for the request/response lifecycle * Verify that all SSVNs needing to be switched from global storage to shared memory storage have had this migration done * Correct LOCKs to be hierarchical, correct, and MDS-compliant (hierarchical locks added 12-23-2024 by snw) * Add optional compile-time support for libpcre with some kind of ^$JOB flag, to allow for Perl-compatible REs in pattern matching * Rewrite MERGE as native code for performance * Provide a callout interface for native library usage * Add support for JSON-M parsing and generation * Add support for user-defined collation algorithms written in M * Finish refactoring xecline to have command implementations in their own functions and compilation units * Finish moving VIEW/$VIEW features into SSVNs and/or libraries * Make environment daemons monitor changes in the filesystem and handle updates to ^$ROUTINE and ^$GLOBAL * Add interface to edit routines via ^$ROUTINE * Generalize Shalom's currency conversion extension * Finish debugger Input/Output ============ * Rewrite terminal I/O code to use termcap/terminfo * Make FreeM I/O commands syntax-compatible with Reference Standard M * Add support for pipes * Complete support for sockets (add server sockets to include forking servers, support IPv6 and UDP throughout, support RSM syntax and semantics) * Remove dedicated I/O channel ranges * Make support for control mnemonics work like Reference Standard M (i.e., mnemonic spaces should be implemented in M) Daemon/Shared Memory ==================== * Debug issues with starting from init (daemon quits sporadically without an error when launched under systemd) - Correct the problem where the daemon will leave the terminal in a bad state when exiting FreeM Administrator (fmadm) =========================== * Fix issues created by multi-environment support (most options don't currently work) * Support creating and removing namespaces Global Handler ============== * Add header with magic value to all DB files, to include magic value, block size, FreeM version, endianness, last transaction number written, replication information, and collation * Add fields to block footers to support metadata for OO * Add fields to block footers for transaction number and journal sequence number, to enable future support of before-image journaling * Support block sizes other than 1K * Support block-spanning nodes * Make block size variable rather than using a preprocessor macro Journaling ========== * Add automatic journal recovery with after-image journaling, especially for transaction processing * Add replication by sending journals over TCP/IP to a receiver that replays them (in daemon on sender side) Libraries ========= * Support OO classes as return types and argument types * Implement MTUI-like functionality library as OO library * Implement I/O classes to wrap primitive M I/O Object-Oriented Programming =========================== * Support nested calls in OO method dispatch * Support objects instantiated in globals * Support dot notation for member vars rather than methods only Documentation ============= * Finish the FreeM manual to include tutorial content as well as full documentation of OO features * Add a more accessible administrator section or a separate administrator's manual Testing, Integration, Deployment ================================ * Refactor and improve CI/CD scripts * Develop a test suite (relies on the terminal I/O rewrite for much) * Make sure FreeM can pass the MVTS (will require learning the MVTS) CI/CD System ============ * Generalize scripts * Make flexible enough to run CI/CD checks without generating a full release * Deploy storage environment compatible with older UNIXes, including fibre channel Ports ===== * Fix ARM-based ports * Verify readline support exists wherever available * Port to SunOS 4.1.4 * Port to SGI IRIX (32-bit and 64-bit) (requires solving build chain issues on the Indy) * Port to HP-UX (PA-RISC 32-bit, 11.00) * Verify operation on AIX 7x * Try to restore support for GNU HURD (will require an alternative to SysV semaphores) * Examine possibility of porting to POSIX environment on VMS (perhaps FreeM-Lite?) * Examine possibility of porting to emx on OS/2 (perhaps FreeM-Lite?) * Examine possibility of porting to DJGPP on MS-DOS (definitely FreeM-Lite, single-user) * Verify current functionality of GNU/Linux-on-s390 port Build Farm ========== * Restore AIX 5L 5.1 * Add AIX 7x * Get HP9000 working with build chain (need a BlueSCSI and a fix for power switch; possible re-cap of boards and PSUs) * Restore Linux on System/390 and zArchitecture (requires Hercules emulator) * Restore hemera (will require a new hard drive or BlueSCSI-type device, or FC) for Solaris 7 * Restore yuna and move from Solaris 10 to Solaris 8 * Add SunOS 4.1.4 * Make SCO OpenServer more reliable * Add all systems to new build farm Packaging ========= * Finish NetBSD pkgsrc package and get it moved from pkgsrc-wip to pkgsrc * Create packages for: * Solaris 7-11 * Illumos (OpenIndiana, OmniOS) * FreeBSD * OpenBSD * Debian GNU/Linux * Slackware Linux * rpm/yum/dnf/zypper * Arch Linux Applications ============ * Support Victory Programming Environment (VPE) * Support Standalone Fileman * Support VistA (target OSEHRA VistA and WorldVistA; FOIA is not a priority) * Provide moral and technical support and encouragement for DLW to get NodeM support finished * Provide Java binding * Implement CFMumps connector for this * Provide Apache module for CGI scripting