File:  [Coherent Logic Development] / freem / TODO
Revision 1.2: download - view: text, annotated - select for diffs
Thu Apr 10 03:48:53 2025 UTC (3 months, 3 weeks ago) by snw
Branches: MAIN
CVS tags: HEAD
Update TODO

    1: * = TODO
    2: - = DONE
    3: 
    4: Core MUMPS
    5: ==========
    6: * Extend string lengths to 16MiB throughout (especially symbol table and globals)
    7: * Support the MDC X Window System binding
    8: * Support MWAPI via the Motif widget set
    9: * Support OMI
   10: * Add optional compile-time support for libcurl, using pthreads and X11/1998-28 async events for the request/response lifecycle
   11: * Verify that all SSVNs needing to be switched from global storage to shared memory storage have had this migration done
   12: * Correct LOCKs to be hierarchical, correct, and MDS-compliant
   13:   (hierarchical locks added 12-23-2024 by snw)
   14: * Add optional compile-time support for libpcre with some kind of ^$JOB flag, to allow for Perl-compatible REs in pattern matching
   15: * Rewrite MERGE as native code for performance
   16: * Provide a callout interface for native library usage
   17: * Add support for JSON-M parsing and generation
   18: * Add support for user-defined collation algorithms written in M
   19: * Finish refactoring xecline to have command implementations in their own functions and compilation units
   20: * Finish moving VIEW/$VIEW features into SSVNs and/or libraries
   21: * Make environment daemons monitor changes in the filesystem and handle updates to ^$ROUTINE and ^$GLOBAL
   22: * Add interface to edit routines via ^$ROUTINE
   23: * Finish debugger
   24: 
   25: Input/Output
   26: ============
   27: * Rewrite terminal I/O code to use termcap/terminfo
   28: * Make FreeM I/O commands syntax-compatible with Reference Standard M
   29: * Add support for pipes
   30: * Complete support for sockets (add server sockets to include forking servers, support IPv6 and UDP throughout, support RSM syntax and semantics)
   31: * Remove dedicated I/O channel ranges
   32: * Make support for control mnemonics work like Reference Standard M (i.e., mnemonic spaces should be implemented in M)
   33: 
   34: Daemon/Shared Memory
   35: ====================
   36: - Debug issues with starting from init (daemon quits sporadically without an error when launched under systemd)
   37: - Correct the problem where the daemon will leave the terminal in a bad state when exiting
   38: 
   39: FreeM Administrator (fmadm)
   40: ===========================
   41: * Fix issues created by multi-environment support (most options don't currently work)
   42: - Support creating and removing namespaces
   43: 
   44: Global Handler
   45: ==============
   46: - 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
   47: * Add fields to block footers to support metadata for OO
   48: * Add fields to block footers for transaction number and journal sequence number, to enable future support of before-image journaling
   49: * Support block sizes other than 1K
   50: * Support block-spanning nodes
   51: * Make block size variable rather than using a preprocessor macro
   52: 
   53: Journaling
   54: ==========
   55: * Add automatic journal recovery with after-image journaling, especially for transaction processing
   56: * Add replication by sending journals over TCP/IP to a receiver that replays them (in daemon on sender side)
   57: 
   58: Libraries
   59: =========
   60: * Support OO classes as return types and argument types
   61: * Implement MTUI-like functionality library as OO library
   62: * Implement I/O classes to wrap primitive M I/O
   63: 
   64: Object-Oriented Programming
   65: ===========================
   66: * Support nested calls in OO method dispatch
   67: * Support objects instantiated in globals
   68: * Support dot notation for member vars rather than methods only
   69: 
   70: Documentation
   71: =============
   72: * Finish the FreeM manual to include tutorial content as well as full documentation of OO features
   73: * Add a more accessible administrator section or a separate administrator's manual
   74: 
   75: Testing, Integration, Deployment
   76: ================================
   77: - Refactor and improve CI/CD scripts
   78: * Develop a test suite (relies on the terminal I/O rewrite for much)
   79: * Make sure FreeM can pass the MVTS (will require learning the MVTS)
   80: 
   81: CI/CD System
   82: ============
   83: - Generalize scripts
   84: - Make flexible enough to run CI/CD checks without generating a full release
   85: * Deploy storage environment compatible with older UNIXes, including fibre channel
   86: 
   87: Ports
   88: =====
   89: - Fix ARM-based ports
   90: * Verify readline support exists wherever available
   91: * Port to SunOS 4.1.4
   92: * Port to SGI IRIX (32-bit and 64-bit) (requires solving build chain issues on the Indy)
   93: * Port to HP-UX (PA-RISC 32-bit, 11.00)
   94: * Verify operation on AIX 7x
   95: * Try to restore support for GNU HURD (will require an alternative to SysV semaphores)
   96: * Examine possibility of porting to POSIX environment on VMS (perhaps FreeM-Lite?)
   97: - Examine possibility of porting to emx on OS/2 (this works now)
   98: * Examine possibility of porting to DJGPP on MS-DOS (definitely FreeM-Lite, single-user)
   99: * Verify current functionality of GNU/Linux-on-s390 port
  100: 
  101: Build Farm
  102: ==========
  103: * Restore AIX 5L 5.1
  104: * Add AIX 7x
  105: * Get HP9000 working with build chain (need a BlueSCSI and a fix for power switch; possible re-cap of boards and PSUs)
  106: * Restore Linux on System/390 and zArchitecture (requires Hercules emulator)
  107: * Restore hemera (will require a new hard drive or BlueSCSI-type device, or FC) for Solaris 7
  108: - Restore yuna and move from Solaris 10 to Solaris 8
  109: * Add SunOS 4.1.4 
  110: * Make SCO OpenServer more reliable
  111: * Add all systems to new build farm
  112: 
  113: Packaging
  114: =========
  115: * Finish NetBSD pkgsrc package and get it moved from pkgsrc-wip to pkgsrc
  116: * Create packages for:
  117:   - Solaris 8
  118:   - Solaris 10
  119:   * Solaris 11
  120:   - Illumos (OpenIndiana)
  121:   * Illumos (OmniOS)
  122:   * FreeBSD
  123:   * OpenBSD
  124:   - Debian GNU/Linux
  125:   * Slackware Linux
  126:   - rpm/yum/dnf/zypper
  127:   * Arch Linux
  128:   
  129: Applications
  130: ============
  131: * Support Victory Programming Environment (VPE)
  132: * Support Standalone Fileman
  133: * Support VistA (target OSEHRA VistA and WorldVistA; FOIA is not a priority)
  134: * Provide moral and technical support and encouragement for DLW to get NodeM support finished
  135: * Provide Java binding
  136:   * Implement CFMumps connector for this
  137: * Provide Apache module for CGI scripting

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