Repository navigation
Releases: 3dl-dev/vms
Release list
OpenVMX V0.7-13
OVMX V0.7-13 Release Notes
Generated by tools/gen_release_notes.py from the merged history since V0.7-12 (22 commits). Do not hand-edit this file -- re-run the tool against the release tag instead.
Highlights
- OVMX/VAX Node B no longer runs out of memory during startup (vms-4029, vms-83d). Node B is a small VAX, and it had been losing its memory before STARTUP.COM finished. It now stages the heavy
SYS$SYSTEMutilities on first use instead of all at boot (#1784), and DCL symbols take the space of their value instead of 4.4 KB each (#1793). A new 16 MB VAX CI leg with a free-memory floor guards this (#1794), and the public demo boots Node B with 32 MB, a MicroVAX 3900 configuration (openvmx-site #82). The pre-tag visitor gate on the release candidate (openvmx-site run 39187392378, Node B built from the candidate at 32 MB) passed 8 of 8 join orders with 0 VAX bugchecks; the real VAX admitted both OVMX nodes, offered Username:, and both OVMX nodes reached a logged-in DCL prompt in every order. One run per order is evidence, not proof. - The visitor gate no longer mistakes a late login for a failure (vms-25f). The gate was racing a login prompt that arrives late; it now starts the login over like a visitor would, with a bounded and counted retry (#1804). This changes how the demo is proven, not what OVMX does.
- Shell and toolchain work toward self-hosting. DCL
LINKruns LINK.EXE with VMS syntax and an options file (vms-ce4, #1791). On OVMX/Alpha, the realxgccdriver runscc1andas(vms-1eb, #1789), GNUasassemblescc1's output (vms-5303e, #1746), and cc1, as and LINK.EXE built for the alpha-dec-vms host compile, assemble and link a C program (vms-e40, #1790).$LKWSETand$ULWSETlock and unlock pages (vms-18c2, #1779). - DCL commands reject qualifiers they do not implement (vms-097).
READ,WRITE,LIBRARY,TELNETandFTPanswer%DCL-W-IVQUALfor an unsupported qualifier,READhonours/END_OF_FILEand/ERROR=label, andWRITEhonours/SYMBOLand/ERROR=label(#1782, #1796, #1801, #1795). Eleven stale "absent" rows in the compatibility register were re-grounded against the source (#1802). - Faster, tiered CI. Heavy legs run nightly and before a tag, and are path-filtered in the merge queue (#1749). This changes how a release is proven, not what it does.
Known open items
- A rare console-input wedge remains (vms-25f residual). In about 1 of 50 throttled runs during development, a cluster node's console stopped taking input after a login timeout and the visitor could not log in. No peer crashes. It is not fixed in this release.
- The 0b/05 database request names transfer connection 0, where real requests name one (19 of 19 in the capture corpus) (vms-9045).
- Clusterwide logical names are not sent from OVMX yet. A local change to a clusterwide table is refused with SS$_UNSUPPORTED while other members exist (vms-94a follow-up).
- Lock-tree remastering on the wire is not done yet (vms-380), and a former master does not yet answer "not master here" (vms-657).
Features
- cut: V0.7-13 -- Node B memory starvation fixed; the 3-node cluster demo passes its visitor gate 8/8 (vms-4029, vms-83d, vms-25f) (#1806)
- vms-097: SHOW validates qualifiers per sub-verb (IVQUAL) (#1799)
- vms-097: SET validates qualifiers per sub-verb (IVQUAL) (#1798)
- vms-097: RUN refuses unknown/ambiguous qualifiers (IVQUAL/ABKEYW, oracle-pinned) (#1783)
- vms-65a: the real xgcc driver compiles AND links hello.c on OVMX/Alpha (system() via LIB$SPAWN, $CREPRC on Alpha, getcwd, LINK default search) (#1792)
- vms-097: MAIL validates qualifiers; /SUBJECT forwarded intact (#1797)
- vms-25f: the gate starts a late login over like a visitor (Password: before the password; Timeout -> wake and retry, bounded and counted) (#1804)
- ci: tier heavy legs (queue by path; nightly + pre-tag full; none on push) (#1749)
- vms-097: LIBRARY validates qualifiers (IVQUAL); /COMPRESS and /VAX are no-ops by construction (#1801)
- vms-097: WRITE validates qualifiers; /SYMBOL writes the symbol value, /ERROR=label branches (#1796)
- vms-ce4: DCL LINK runs LINK.EXE with VMS syntax and an options file (what vms-ld.c calls) (#1791)
- compat: re-ground 11 stale absent rows against origin/main (ots string copy/dd, sys$getlki(w), sys$setprn, sys$schdwk, sys$gettim_prec; drop duplicate lib$sig_to_stop) (#1802)
- vms-097: TELNET and FTP validate their qualifiers (IVQUAL), guest test + negctl (#1795)
- vms-83d: DCL symbols sized to their value, not 4.4 KB each (16 MB VAX headroom) (#1793)
- vms-e40: link-gate — cc1, as and OVMX LINK.EXE built for the alpha-dec-vms host compile, assemble and link a C program on OVMX/Alpha (#1790)
- vms-83d: stage SYS$SYSTEM utilities on first use, not all at boot (the staging dir is RAM on a 16 MB VAX) (#1784)
- vms-18c2: $LKWSET/$ULWSET really lock and unlock pages (#1779)
- vms-1eb: driver-gate — the real xgcc driver runs cc1 and as on OVMX/Alpha (#1789)
- reconcile after V0.7-12: highlights corrected to what the gate shows (6/8 on the tag, vms-4029 known issue); notes regenerated from the tag; roadmap + compat surface regenerated (#1786)
- vms-5303e: GNU as (binutils 2.43 for the alpha-dec-vms host) runs on OVMX/Alpha and assembles cc1's output; DUMP equals the cross assembler's object (#1746)
- vms-097: DCL READ validates its qualifiers and honours /END_OF_FILE and /ERROR labels + guest test + host test + 2 negctls (#1782)
Fixes
- vms-83d: 16 MB VAX CI leg + free-memory floor (regression guard for Node B starvation) (#1794)
OpenVMX V0.7-12
OVMX V0.7-12 Release Notes
Generated by tools/gen_release_notes.py from the merged history since V0.7-11 (29 commits). Do not hand-edit this file -- re-run the tool against the release tag instead.
Highlights
- A real VAX no longer bugchecks LOCKMGRERR or CNXMGRERR when OVMX joins its cluster. Three changes close the crashes seen in the demo gate. A master now tells a directory to drop an entry only if that directory holds one; OVMX had been sending a removal to a directory that never registered the entry, which is the cat-0x02 op-0x19 seen in every crash capture (vms-c55, #1776). The executive also holds cross-node lock requests while a cluster state transition is running (#1734). A connection-manager send that the port did not take now hands its send number back, closing the gap that bugchecked a VAX with CNXMGRERR (vms-fb0, #1775). The crashes were intermittent, so a clean gate is evidence, not proof.
- The 3-node cluster demo reaches a DCL prompt on both OVMX nodes in most visitor orders; it does not pass every time yet. On the tagged commit the visitor gate passed 6 of 8 orders with 0 VAX bugchecks (openvmx-site run 39111772800); both failures are the Node B memory exhaustion below (vms-4029). An earlier build of this release passed 8 of 8 (run 39101853519). V0.7-11 failed this gate.
- OVMX Node B reaches
Username:and a DCL prompt as a cluster member when it has memory to (vms-97c2). DCL staged each@command procedure in tmpfs and a low-memory write failed, so Node B stopped silently in STARTUP.COM. DCL now holds the procedure in memory (#1768), and other runtime paths no longer assume a tmpfs size (#1770). $CANCELcancels real queued I/O. It used to return success and do nothing. It now cancels the channel's pending requests, completes the IOSB with SS$_CANCEL, sets the event flag and runs the AST, and a read whose data has already arrived keeps its result (vms-c8c #1766, race fixed in #1772).$DGBLSCreturns SS$_NOSUCHSEC for a section that is not registered (#1767).times()writes the kernel'sstruct tmsinto its own buffer (#1774).- Faster CI. The bootable image, the kernel base and the layer caches are built once and shared across jobs; the host negative-control sweep runs in parallel. This changes how a release is proven, not what it does.
Known open items
- The demo's Node B (a 16 MB VAX) runs out of memory during startup in roughly 1 in 4 of the slow visitor orders. It logs "No space left on device", then
%OVMX-F-EXECINIT, the startup process did not complete, and never offers Username: (vms-4029; runs 39101862126, 39111772800). Free memory falls from 5.8 MB to about 20 KB during boot on every run; the fix is to reduce OVMX's memory footprint. The same exhaustion explains the login prompt that does not return after a timeout (below). - The login prompt on a cluster node sometimes does not restart after its 20 s timeout.
Timeout period expiredis the VMS login-read timeout; in the gate's slowest throttled order, OVMXB sometimes did not print a fresh prompt after it (vms-25f). - The 0b/05 database request names transfer connection 0, where real requests name one (19 of 19 in the capture corpus) (vms-9045).
- Clusterwide logical names are not sent from OVMX yet. A local change to a clusterwide table is refused with SS$_UNSUPPORTED while other members exist (vms-94a follow-up).
- Lock-tree remastering on the wire is not done yet (vms-380), and a former master does not yet answer "not master here" (vms-657).
Features
- cut: V0.7-12 -- the 3-node cluster demo passes its visitor gate; real-VAX LOCKMGRERR/CNXMGRERR fixes, Node B startup, $CANCEL (vms-c55, vms-fb0, vms-97c2, vms-c8c) (#1781)
- vms-558e: CONVERT/FDL is a plain %DCL-W-IVQUAL, not an invented CONVERT message (#1780)
- vms-558e: CONVERT stops claiming a conversion it did not perform (/FDL refused, plain copy silent) + guest test + host test + negctl (#1777)
- vms-c55: a master tells a directory to drop an entry only if that directory holds one (#1776)
- vms-d91: sys$dgblsc returns SS$_NOSUCHSEC for an unregistered section (#1767)
- vms-5303e: times() writes the kernel's struct tms into its own buffer (32-bit clock_t overran the caller) (#1774)
- visitor gate: record every keystroke per node with delivery and console growth (vms-25f) (#1773)
- vms-fb0: a CM send the port did not take hands its send-msg# back (real VAX CNXMGRERR) (#1775)
- vms-532: $CANCEL lets an already-ready io_uring request post its completion before cancelling (fixes cancel-vs-completion race); test repeats the already-arrived case 100x (#1772)
- tmpfs-sized assumptions off the runtime paths: sysinput, pager, spawn, OPCOM spool (vms-f47) (#1770)
- visitor gate: follow a console wake up fast enough to log in (vms-124) (#1769)
- DCL: stage @-procedures in memory, not tmpfs (vms-97c2: clustered Node B never offered Username:) (#1768)
- vms-c8c: sys$cancel cancels real io_uring-queued I/O (#1766)
- ci: Alpha gates share one build of the Linux/Alpha kernel + vms.ko + userland (#1764)
- ci: aarch64 jobs use prebuilt arm64 kernel bases (cross + native) from GHCR (#1762)
- tests: parallelize host negctl (persistent per-worker tree, incremental rebuild, xargs-style workers) (#1763)
- ci: kernel-base carries no signing key; the real key is injected at use time (#1761)
- ci: ci-alpha layer caches (cross-alpha, cross-alpha-vms) move from type=gha to GHCR registry (#1759)
- ci: remaining buildx layer caches move from type=gha to GHCR registry (vax, selfhost, core-gates, boot image) (#1758)
- ci: kernel-executive layer caches move from type=gha to a GHCR registry cache (#1756)
- ci: Alpha stage-2 C/C++ toolchain cached in GHCR, not actions/cache (#1757)
- ci: build the bootable image once per SHA (GHCR); 13 e2e jobs pull it (#1755)
- ci: prebuilt kernel-base image in GHCR; src/kernel change rebuilds only vms.ko (#1753)
- ci: red-main bot (re-run once, bisect, auto-revert through the queue) + AGENTS.md dispatch guidance (#1750)
- ci: safe_merge.sh is emergency-only; per-skipped-check dispatch requirement now opt-in (--require-heavy) (#1751)
- vms-c55: the executive holds cross-node lock traffic for the duration of a cluster state transition (#1734)
- roadmap: reconcile after V0.7-11; notes regenerated from the tag with the #1730 correction; compat surface regenerated (#1742)
- cut-release.sh peels an annotated tag to its commit; release.yml can be rehearsed on a throwaway annotated tag before the real one (#1741)
- vms-4f4: a BUGCHECK verdict beside a stale OVMX node says it is not the build under test (#1735)
OpenVMX V0.7-11
OVMX V0.7-11 Release Notes
Generated by tools/gen_release_notes.py from the merged history since V0.7-10 (22 commits). Do not hand-edit this file -- re-run the tool against the release tag instead.
Highlights
- aarch64 downloads, for the first time. Every earlier release shipped x86_64, Alpha and VAX assets only. V0.7-11 adds a bootable aarch64 set: an arm64 kernel Image (
vmlinuz) with the signed in-treevms.ko, the slim initramfs, the pre-installedovmx-distrib.imgand the OS kit, attached to the release with an-AARCH64suffix (for examplevmlinuz-AARCH64). It is built on an arm64 runner from the tagged commit by the sameDockerfile.bootablepipeline as x86_64. The release-acceptance gate boots those exact files underqemu-system-aarch64 -machine virt, runs PARTS and checks the shipped version. If the aarch64 build fails, the whole cut fails (vms-32aa, vms-b58, vms-a07). - Clusterwide logical names: a database OVMX cannot decode no longer hangs a member. When OVMX pulls a member's clusterwide logical-name database and cannot decode all of it, OVMX still answers, so the member's startup goes on. OVMX then marks its own clusterwide tables as not synchronized. It refuses to translate or change names in those tables until a later pull succeeds, so it never answers from a partial copy (vms-94a).
DEFINE,ASSIGNandDEASSIGNtake/TABLE=nameand reach the executive's own tables, includingLNM$SYSCLUSTER. A table this node does not hold is refused with %SYSTEM-F-NOLOGTAB, and nothing is written (vms-aae).
Known open items
- The LOCKMGRERR bugcheck (vms-c55) is not fixed. In the cluster demo, a real VAX running OpenVMS V7.3 still bugchecks with LOCKMGRERR now and then. V0.7-11 includes a change that stops OVMX from removing a directory entry and then asking about that same entry (#1715), but the bugcheck still happens with it. Because the crash is intermittent, a gate run with 0 bugchecks does not show that it is gone.
- The cluster demo does not pass its visitor gate yet. The pre-tag gate (openvmx-site run 38824925565) ran 8 visitor orders, with both OVMX nodes built from this release. All 8 reached CN=3 and the real VAX admitted both OVMX nodes, with 0 VAX bugchecks. In all 8, the OVMX/VAX node stopped during startup after the state transition and never offered Username: (vms-97c2).
- The 0b/05 database request names transfer connection 0, where real requests name one (19 of 19 in the capture corpus) (vms-9045).
- Clusterwide logical names are not sent from OVMX yet. A local change to a clusterwide table is refused with SS$_UNSUPPORTED while other members exist (vms-94a follow-up).
- Lock-tree remastering on the wire is not done yet (vms-380), and a former master does not yet answer "not master here" (vms-657).
Features
- cut: V0.7-11 -- aarch64 downloads ship for the first time (vms-32aa, vms-b58) (#1733)
- vms-6e6: body[28:30] of a lock request is a FIELD, and the corpus already proved it (#1731)
- a cross-node lock request names the requesting process (faithfulness; does not fix vms-c55) (#1730)
- vms-97c2: a cross-node lock request whose frame could not go out is retried, never dropped on a sleeping $ENQW (#1729)
- vms-32aa+b58: aarch64 ships -- the cut builds, attaches and boots a bootable aarch64 set (#1727)
- vms-e79: the cluster demo's emulator builds on WASMFS; the sentinel probes the live fs backend (qemu-wasm-fs, expect wasmfs) (#1728)
- vms-a07: the OVMX kernel and signed vms.ko cross-build for arm64 and boot under qemu-system-aarch64 with /dev/vms (#1726)
- vms-e79: when Node A's worker heartbeat freezes, the visitor gate keeps the worker's JS stack (#1725)
- vms-e79: the drift sentinel checks the in-browser emulator's pthread pool (expect: 16) (#1724)
- vms-208f: the single-node OVMX/VAX browser demo disk follows the tag (built + proven with Node B, attached with a sidecar) (#1723)
- cluster-demo-nodeB: a dispatch whose ref is a release tag attaches Node B to that release (catch-up for V0.7-10, vms-fbdd) (#1719)
- vms-c55: this node never tells a directory to forget a resource and then asks it who masters that same resource (#1715)
- vms-ac4f: ground the directory answer and the rebuild echo -- the conformance ratchet moves from 1 covered frame to 526 (#1717)
- vms-c55: the LOCKMGRERR captured frame-for-frame — OVMX asks where a real VAX tells, and asks about the entry it just removed (#1714)
- vms-649a: the VAX login probe reads the DCL prompt VMS writes; sysboot-single runs in CI (#1712)
- vms-fd8: one deploy inventory and a drift sentinel that goes red when a live surface is not on the latest tag (#1711)
- README: aarch64 builds and boots from source; releases do not carry aarch64 artifacts yet (vms-0ad0) (#1713)
- vms-aae: DEFINE, ASSIGN and DEASSIGN take /TABLE=name and reach the executive's own tables (#1710)
- roadmap: reconcile after V0.7-10; in-tree notes regenerated from the tag (21 commits); compat surface regenerated (#1709)
- cluster-demo-nodeB: identity read in-step; prove the disk standalone, then inject the non-voting identity (#1708)
- vms-94a: a clusterwide logical-name database this node cannot decode still closes the member's transaction, and this node declares its own tables short (#1707)
- cluster demo: build Node B from the ref under test; the gate fails a stale OVMX node (#1706)
OpenVMX V0.7-10
OVMX V0.7-10 Release Notes
Generated by tools/gen_release_notes.py from the merged history since V0.7-9 (21 commits). Do not hand-edit this file -- re-run the tool against the release tag instead.
Highlights
- V0.7-9 could crash a real VAX; V0.7-10 fixes it. In 3 of the 8 visitor orders of the cluster demo's V0.7-9 gate, a real VAX running OpenVMS V7.3 bugchecked with INVEXCEPTN. After joining, OVMX asked an older member for its clusterwide logical-name database (the 0b/05 request) before that member was ready to answer, while it was still early in its own startup. OVMX now waits for a member to be ready, as a real VAX does. A member is ready when its PARAMS say so, or when it sends its own startup query. That rule comes from 54 real database requests. In a lab run of the same topology that had crashed, OVMX held the request for 63.7 s while the VAX started up, then made it 0.79 s after the VAX's query, with 0 bugchecks (vms-f4e).
- Cluster transitions: a member's answer to a logical-name database request is no longer mistaken for a membership-record acknowledgement. While OVMX coordinated a transition, that mistake could count an acknowledgement nobody sent (vms-6e3 follow-up).
- Lock-tree adoption in the lock manager. When a lock tree is handed to OVMX, the engine now creates a real master-side lock for each lock a holder reports, under the right parent resource. A cross-node conversion now converts the lock its handle names rather than looking it up by name (vms-14fd). OVMX does not yet take part in a hand-over on the wire. See the known open items.
- Nothing runs as substrate root after startup. STARTUP and the startup process give up root once startup is done. Powering off is an executive service that needs CMKRNL. The acceptance battery's root audit counts 0 root processes (vms-137e).
- Process identity:
$CREPRCgives a process its identity when it creates it. SETIDENT is accepted only while a process is being logged in (vms-a2c). On NetBSD the executive no longer creates a process row from an ioctl (vms-6ed). - TCP/IP network configuration needs OPER, as on VMS. A refused
SET ROUTEorSET INTERFACEreturns %SYSTEM-E-NOPRIV and changes nothing (vms-ec6). - HW_NAME has one source:
$GETSYI,F$GETSYIandSHOW CPUall report the executive's hardware model (vms-21be).
Known open items
- The 0b/05 database request names transfer connection 0. Real requests name a connection (19 of 19 in the capture corpus). This is recorded with its evidence but not fixed in this release (vms-9045).
- The cluster demo does not pass its visitor gate yet. This release's pre-tag gate ran 8 visitor orders. One order (page-order) still bugchecked the demo's real VAX, with LOCKMGRERR rather than INVEXCEPTN; the cause is under investigation (vms-c55). In 5 other orders the cluster reached three members, but the VAX stopped at
%RMS-E-FNFduring its startup and never offered Username:. One order reached CN=3 with every node usable. - Clusterwide logical names are not sent from OVMX yet. A local change to a clusterwide table is refused with SS$_UNSUPPORTED while other members exist (vms-94a follow-up).
- Lock-tree remastering on the wire: OVMX does not yet parse a real hand-over or send the closing op-0x14 message, because two of its fields are not yet grounded (vms-380). Each adoption that goes unreported is counted.
- A former master does not yet answer "not master here" (the 0xf7 reply). Three lab designs have not produced one on real VAXes (vms-657).
Features
- cut: V0.7-10 -- a real VAX no longer bugchecks when OVMX pulls the clusterwide logical-name database (vms-f4e) (#1705)
- vms-761: untrack build.build.log and build.cfg.log (committed by accident in a711195) and ignore them (#1694)
- vms-9045: the 0b/05 database request names transfer connection 0 where 19 of 19 real requests name a connection (evidence) (#1704)
- vms-21be: HW_NAME has one source -- $GETSYI, F$GETSYI and SHOW CPU read exec_hw_model() (#1688)
- vms-f4e: no 0b/05 database pull from a member not yet ready (a real VAX bugchecked INVEXCEPTN in the V0.7-9 demo gate) (#1702)
- vms-aaf: roadmap-block gate passes a stale PR branch; a hand-edit or a drifted main still reds (#1703)
- vms-6ed: the NetBSD executive creates no row on an ioctl; guest harnesses run their tools under a creator (#1698)
- release notes: correct V0.7-9 (highlights source + what the tag ships); notes come from the tagged SHA, gated in release.yml (#1697)
- cluster-web-demo gate: a DCL prompt after the VMS NUL fill is a DCL prompt (#1699)
- register: OVMX founding a cluster real VAXes join is done (vms-d52c, #1667; labd52c run 3 CN=3) (#1696)
- vms-ec6: TCP/IP network configuration needs OPER, as measured on VMS; a refused SET ROUTE/INTERFACE is %SYSTEM-E-NOPRIV and records nothing (#1700)
- releasing.md: the cut checklist -- the demo visitor gate runs on the frozen build BEFORE the tag (0 VAX bugchecks), green by the tagged SHA, notes from the tagged SHA (#1701)
- roadmap: reconcile after V0.7-9 (#1695)
- vms-a2c: SETIDENT only while a process is being logged in -- $CREPRC gives a process its identity at creation (#1686)
- vms-14fd: the engine ADOPTS a remastered tree -- real RSBs, real LKBs, real lock ids, and no 0x14 (#1692)
- vms-50d RA6: one op-0x14 cell named, five predictions falsified, and the rest of the frame shown to be stale buffer (#1693)
- vms-657: run 4 and park (0xf7 not elicited under 3 pre-registered designs) (#1690)
- vms-6e3: the coordinator takes only 0x81 answers as transition acks (the post-admission "no edge" event was a 0x8b/0x05) (#1687)
- vms-50d RA5: remaster handles named against SDA truth (#1691)
- vms-657: f7 oracle runs 2 and 3 (no 0xf7 yet; why, and the next arm) (#1689)
- vms-137e: nothing runs as substrate root after startup -- STARTUP and the startup process leave root; the executive powers off (#1678)
OpenVMX V0.7-9
OVMX V0.7-9 Release Notes
Generated by tools/gen_release_notes.py from the merged history since V0.7-8 (135 commits). Do not hand-edit this file -- re-run the tool against the release tag instead.
Highlights
- A real VAX running OpenVMS V7.3 now joins an OVMX-founded cluster. OVMX founds the cluster, and the real VAX joins it as a member. OVMX answers the VAX's boot-time closes it used to withhold (vms-db1), and an OVMX-first boot no longer partitions the cluster (vms-d52c, vms-52d). A lost block-transfer REQUEST DATA is retransmitted instead of stalling (vms-c1d). A founding OVMX member now answers a join another member relays to it, so a node that boots last is admitted through any member (vms-6ec). A refused connection-manager send no longer leaves a gap in the message sequence; that gap could crash a real VAX with CNXMGRERR when OVMX joined late (vms-cd8). When OVMX frees a lock resource it mastered, it now removes the resource's entry at the remote directory node as a real VMS master does, so a stale entry at a real VAX no longer leaves a requester waiting on OVMX (vms-e09).
- Clusterwide logical names (vms-94a):
LNM$SYSCLUSTERandLNM$CLUSTER_TABLEare executive state, andLNM$SYSTEMsearchesLNM$SYSCLUSTERafterLNM$SYSTEM_TABLE. When another member creates or deletes a clusterwide logical name or table, OVMX applies the change. A node that joins late pulls the cluster's logical-name database from an existing member. - The terminal driver is in the executive on Linux and NetBSD (vms-f8c). DCL, LOGINOUT and
$QIOreach it: carriage control, VMS line editing and command recall, timed and end-of-file reads, broadcasts, permanent terminal characteristics, and process-permanent files. These are checked against a byte-exact keystroke oracle of a real VAX V7.3 session (vms-370). - EDT line mode and keypad mode, compared against the same oracle.
- Native VMS images run unchanged:
.EXEfiles LINKed on real OpenVMS Alpha V8.4 and on real VAX V7.3 run on OVMX. On Alpha they reach the rights database,$CHKPROand RMS. On VAX they get page 0 per process through the executive. - Process lifecycle: the executive creates each process before it runs (
$CREPRC, DCL image tasks and PIPE segments, DEC Cvfork/exec, the TCP/IP auxiliary server's services, PROVISION at boot), and deletes it when it ends. No process registers itself: only its creator ($CREPRC) or the boot task's singleESTABLISH_SYSTEMmakes a VMS process, and the executive refuses any other task (vms-2a5, vms-a2c). - No substrate root: a root audit runs in the acceptance battery on x86_64, Alpha and VAX. TCP/IP services run under their own accounts with an executive-given substrate identity, never root. The setuid-root mount helper is gone.
Known open items
- A VAX admitted by an OVMX founder reaching
Username:is still in progress: the startup traffic OVMX used to withhold is now answered, but no capture yet shows that VAX completing startup (vms-d52c). - Clusterwide logical names are not sent from OVMX yet: OVMX applies other members' changes and pulls the database, but it does not broadcast its own changes yet. Until it does, a local change to a clusterwide table is refused with SS$_UNSUPPORTED while other members exist (vms-94a follow-up).
- Lock-tree remastering between cluster members is not implemented yet.
- A third node does not join when an OVMX member holds the highest SCSSYSTEMID in the cluster (vms-6e3).
- A former master does not yet answer "not master here" (the 0xf7 reply) to a lock request for a resource it has freed (vms-657).
- Executive privilege checks that still read the substrate's credential (
ESTABLISH_SYSTEM) are being replaced by checks on the process's VMS privileges, and SETIDENT is being confined to a login (vms-a2c). STARTUP and JOB_CONTROL still run as substrate root after boot (vms-137e).
Features
- cut: V0.7-9 — real VAX joins an OVMX-founded cluster (relay admission, directory removal on free, block-transfer retransmit), clusterwide logical names, executive terminal driver + EDT, native VAX/Alpha images, registration by ioctl gone (#1685)
- vms-6e3: a merge-rebuild ADD runs no barrier (OVMX never admitted the next joiner) (#1684)
- vms-562ac: op-0x03 carries the transition's commit time; op-0x14 names the real hardware (#1683)
- vms-e09: a master that frees a resource removes its entry at the remote directory node (named DLM op 0x04) (#1682)
- vms-2a5: registration by ioctl is gone -- only a creator (CREPRC_PCB) or the boot task's one ESTABLISH_SYSTEM makes a VMS process (#1681)
- vms-6ec: a founding OVMX member answers a coordinator's op-0x12 relay (Node C last was never admitted) (#1675)
- vms-c1d: ring block-transfer frames that fit, so a lost REQUEST DATA is retransmitted instead of breaking the circuit (#1669)
- vms-2a5 (harness): no suite registers itself; test_kmod_* run as processes the executive created (#1676)
- vms-7dd: $CREMBX puts a temporary mailbox's name in LNM$JOB, a permanent one's in LNM$SYSTEM (#1679)
- vms-94a: clusterwide logical names -- LNM$SYSCLUSTER/LNM$CLUSTER_TABLE as executive state, 0b/04 apply + startup database pull (0b/05/06) (#1677)
- vms-a2c: vouching for a network terminal needs SETPRV on the caller's VMS process, not a substrate credential (#1674)
- vms-a2c: the executive constructs SYSTEM once, for the boot task; every later process gets its identity from its creator (#1673)
- vms-cd8: no send-msg# hole when a CM send is refused, and the emit guard counts a peer's category-0x0b messages (#1672)
- vms-d52c: OVMX-first no longer partitions -- member PARAMS state membership, quorum/QDSKVOTES; the self record carries its incarnation (CN=3 in the lab) (#1667)
- vms-a2c: PROVISION is a subprocess the executive makes; PID 1's SIGCHLD reaper can no longer steal its status (#1670)
- release notes: a cut's docs/release-highlights/.md leads its generated notes (#1671)
- vms-52d: OVMX answers a booting VAX's cat-0x0b op-0x01 startup query (0x8b/0x01), value read from the CSB (#1668)
- vms-1f8 (PR2d-3): TCPIP$INETD creates each service process DETACHED with the service's identity (#1664)
- ci-alpha: run the public sys$ tier on every push to main, not only nightly/dispatch (#1594)
- vms-db1: OVMX answers a booting VAX's kind-10 (write-back, 5) and kind-5 (pull, 4) closes -- withheld, they held VAX startup (#1655)
- vms-d01 sweep: TCP/IP Services clients read how a $QIOW ended from the IOSB (#1586)
- vms-1f8: remove vms_mount_helper, the retired vmsfs's setuid-root mount helper (#1666)
- vms-1f8 (PR2d-4): DEC C vfork()/exec*() creates its subprocess through the executive (DECC$SHR) (#1665)
- vms-1f8 (PR2d-2): in-tree forkers make their children subprocesses through the executive (ovmx_subprocess.h) (#1663)
- CI: every job that pulls through the docker daemon points it at the registry mirror first (gated) (#1660)
- cluster-web-demo gate: the real VAX passes on offering Username: and is never logged in to; DEMO_PASS_VAXC removed (#1661)
- setup-buildx: pre-pull the BuildKit image with retries, falling back to the public mirror (#1662)
- vms-1f8 (vms-9f32 PR2d-1): DCL PIPE segments are subprocesses DCL creates (CREPRC_PCB), and run verbatim (#1653)
- x86_64 C RTL base: build musl from a vendored, checksum-pinned tarball (hermetic), network as a retried fallback (#1658)
- vms-d4f + vms-232 + vms-0315 + vms-ae8: IVQUAL on its own line, EDT keypad TAB/LINEFEED/PAGE and line-mode COPY/MOVE/WRITE/INCLUDE, RECALL/ALL with line editing, one buffered I/O per file open (#1659)
- vms-e50 (vms-9f32 PR2b): DCL makes its image task its own VMS process (CREPRC_PCB CONTINUE), not REGISTER_CONTINUE (#1651)
- vms-3fa (vms-9f32 PR2c): every QEMU suite runs as a process the executive created (#1652)
- Terminal UX vs the VAX V7.3 keystroke oracle: DCL messages, LOGINOUT, HELP, paging, RECALL, EDT line + keypad mode (#1639)
- vms-cdbd: fire repository_dispatch(release-tagged) to openvmx-site after cut (#1284)
- cluster-web-demo gate: a run passes only if every node, the real VAX included, reaches Username: and a logged-in DCL $ (rd vms-db1) (#1657)
- vms-9f32 PR2a (vms-c43): $CREPRC's creator creates the child's PCB before the child runs (VMS_IOCTL_CREPRC_PCB) (#1626)
- vms-deb0: no pipe into grep -q under pipefail, from any producer; the lint covers them all (#1656)
- vms-64b: OVMX DLM messages carry the cluster's DLM rebuild sequence (body[12:16]) and the measured request tail (#1648)
- vms-c02: facility_record_negctl's sandbox holds everything coverage reads (all of src/, tests/cluster/host), so its pristine baseline is green again (#1654)
- vms-eda8 + vms-eb3d + vms-bc5 + vms-53a + vms-cef + vms-bd71: VMS line editing, command recall, timed/EOF READ, broadcast, wrap and the logout line in the terminal driver (#1604)
- Stamping a process identity (VMS_IOCTL_SETIDENT) requires CMKRNL (#1642)
- vms-046: NETACP answers only into a reply mailbox its requester could read itself (#1588)
- Facility negative controls are one file each (tests/qemu/defects.d), so PRs adding controls never conflict (#1647)
- compat register: record what has merged -- a real VAX V7.3 cluster counts OVMX as a member; terminal carriage control and out-of-band ASTs (#1649)
- Conflict-free append-only lists: unreleased vector entries and known-diff entries are one file each (#1646)
- vms-1f64 + vms-b20: OVMX block transfers carry their measured port opcodes; remote MOUNT/DISMOUNT answered by block transfer (#1631)
- vms-7a8e: host_defects.sh selftest -- 285 fewer execs (heredoc cat, re-apply capture) (#1630)
- vms-15c9: NATIVEACT.EXE is a known image installed /PRIVILEGED=CMKRNL at boot; page 0 only for that copy; NATIVEACT drops CMKRNL before mapping (#1633)
- vms-549c: 20-vaxlab.yaml is the running lab -- replicas 5, image :7, partitioned RollingUpdate, 50m requests; README rolling recipe and image history (#1641)
- vms-40fb: an IOSB at any...
OpenVMX V0.7-8
OVMX V0.7-8 Release Notes
Generated by tools/gen_release_notes.py from the merged history since V0.7-7 (129 commits). Do not hand-edit this file -- re-run the tool against the cut commit instead.
Features
- cut: V0.7-8 — ACLs on ODS-2 (+inheritance) + $CHKPRO, GRPPRV, mailbox protection, RIGHTSLIST holder records, default protection FA00, IO$_ACCESS + ATRDEF, executive lock manager, DECnet FAL remote DIRECTORY/DELETE/RENAME (DAP 7.2) + MAXIMUM LINKS, LIB$INITIALIZE, GCC cc1 on OVMX/Alpha, semantic oracle known-diff 310 -> 20 (#1545)
- vms-c6d1: mailbox protection via the executive's one VMS protection decision (promsk/UIC/BYPASS/READALL/SYSPRV); IO$M_NORSWAIT; sender PID proven (#1532)
- vms-9a63: GCC's cc1 builds VMS-hosted and runs on OVMX/Alpha (patches 0012/0013, <unixlib.h> C linkage, cc1-gate) (#1538)
- semantic oracle burn-down: known-diff 33 → 20 — the executive lock manager answers as OpenVMS (vms-a3d) (#1543)
- corpus: sys_find_held and sys_ident run in the guest (rights database + $GRANTID) (#1523)
- vms-768: GRPPRV enforced at the Files-11 ACP (system category for the accessor's own group) (#1508)
- vms-d404: ACL and protection inheritance on create (DEFAULT ACEs, DEFAULT_PROTECTION, new versions) (#1515)
- vms-b2f: advertise DAP 7.2 so a VMS client issues a remote RENAME (stacked on #1487) (#1534)
- vms-f91: NETACP sizes its inbound link pool from NCP SET EXECUTOR MAXIMUM LINKS (#1528)
- $PARSE of a name with more than one '.' on 64-bit: the last '.' is the type delimiter and the earlier ones stay in the name, ODS-5 escaped, as Alpha V8.4 RMS (VAX keeps RMS$_SYN) (vms-576); known-diff 42 -> 41 (#1544)
- vms-898a: also keep the guest console when a negctl run stops PARTWAY (suites NEVER RAN after some ran) (#1539)
- vms-d404: $CHKPRO + $CREATE_USER_PROFILE as OpenVMS V7.3 decides them (#1513)
- vms-d404 follow-up: a broken lock manager fails test_syssvc_acl instead of hanging the guest (#1541)
- Process default file protection is %XFA00, as VMS's RMS_FILEPROT default (#1531)
- vms-9cd: restore NETACP's three links per node (pool 9) that the #1487 squash reverted (#1537)
- $BRKTHRU to a user logged in on no terminal ends SS$_DEVOFFLINE in the IOSB, as OpenVMS (vms-eb46); sys_brkthruw's designed outcome in the no-login guest is exit(132); known-diff 43 -> 42 (#1540)
- F$USER is the process UIC in named form, rendered by $FAO !%I from the executive row (vms-86f); known-diff 89 -> 88 (#1533)
- vms-ccc: lib$spawn INPUT through RMS, honest FNF; sys_forcex runs its command file (#1524)
- vms-7d5a: RIGHTSLIST holder records + HOLDER key; $ADD_IDENT/$REM_IDENT/$ADD_HOLDER/$REM_HOLDER/$FIND_HOLDER/$FIND_HELD/$FINISH_RDB (#1507)
- vms-38b: SYS$QIO/SYS$QIOW serve IO$_ACCESS/IO$_DEACCESS (FIB, name, resultant name, attribute list) through the executive ACP (#1536)
- vms-cbd: retire the unlinked FIX-record stdio veneer and its host suites (Baron decision 2026-10-08) (#1530)
- vms-38b: ATRDEF captured from a live OpenVMS Alpha V8.4 STARLET.MLB; vms/atrdef.h generated from it; IO$_ACCESS attribute-list observation (#1535)
- vms-277a: DECnet FAL serves remote DIRECTORY/FULL, DELETE, RENAME with VAX-identical status bytes (#1487)
- Channel, device-name and EFN$C_ENF answers as OpenVMS: a channel beyond the table is SS$_IVIDENT, $CANCEL refuses an unheld channel, a malformed device name is SS$_IVDEVNAM, a mailbox's logical name goes with it, $READEF(ENF) writes 1 (vms-4a69 vms-3e9e); known-diff 94 -> 89 (#1527)
- vms-d404: ACLs on ODS-2 files -- stored as VAX V7.3 stores them, enforced by the executive ACP; SET/SHOW ACL, DIRECTORY/ACL, $PARSE_ACL/$FORMAT_ACL/$GET_SECURITY/$SET_SECURITY (#1504)
- CI: bound clang-tidy per file and run in parallel (informational job was cancelled red at the 30-min cap in 4 of 30 runs) (#1529)
- DCL lexical functions evaluate their arguments and answer as OpenVMS (vms-86f); known-diff 164 -> 94 (#1516)
- $GETDVI: TT is this process's terminal (the executive row's), and a device-name logical is translated through LNM$FILE_DEV (SYS$COMMAND) (vms-b14e); known-diff 209 -> 207 (#1526)
- semantic oracle burn-down: known-diff 209 → 201 — $CREPRC PRC$M_HIBER and VMS image specs (vms-ea42) (#1525)
- vms-9cd: NETACP admits three concurrent sessions per node (VMS DELETE ;* holds three FAL links) (#1522)
- vms-ec7e: a process without SYSNAM does not seed LNM$SYSTEM (fixes the Kernel Executive negctl red on main) (#1510)
- Common event flag clusters: re-association releases the old cluster, $DACEFC of none is success (vms-ec97); known-diff 209 -> 207 (#1521)
- One RMS name engine for $PARSE/$SEARCH/$CREATE/$OPEN/$ERASE; LIB$FIND_FILE end result (vms-670 vms-42f8 vms-576 vms-0a2 vms-137); known-diff 209 -> 176 (#1502)
- lab captures: live real-VAX brackets against a booted OVMX -- MAIL-11 inbound, SET HOST LA36, V7.3 DIRECTORY/FULL record formats (#1517)
- semantic oracle burn-down: known-diff 219 → 209 — terminal $QIO through the executive device row; SET TERMINAL reaches it (vms-d900 vms-a36) (#1520)
- $BRKTHRUW reaches real terminals and refuses as OpenVMS; $SNDOPR channel and length checks (vms-eb46); known-diff 229 -> 219 (#1519)
- $QIO/$QIOW: the service status is the queuing status; the I/O status is in the IOSB (vms-d01) (#1497)
- STR$/LIB$ routines as OpenVMS answers them (vms-bad vms-a91f vms-afcd vms-0ff7 vms-dbd vms-e1f vms-4c1 vms-74a) (#1514)
- vms-330: FAL persona proof states WHY GUEST auth / the local PUT source failed (#1511)
- semantic oracle: five new families (lock, lex, prc, brk, tt) — known-diff 140 → 264 (+125 new-family cases, −1 FAO.UIC.ID); $ENQ argument checks (#1509)
- vms-db7: LIB$INITIALIZE executed at image activation (tcc pragma extern_model, LINK.EXE psect collection, IMGACT before main) (#1505)
- test: fix main red — the MMK drive resolves its volume through its own LNM$JOB; re-anchor lnm-manager-delete-noop (per-facility negctl) (#1512)
- vms-f45: lib$spawn /NOWAIT never loses the completion (root cause of sys_forcex rc=124) (#1501)
- $GETJPI/$GETSYI/$GETDVI item codes, wildcards, node targets and widths as OpenVMS answers them (vms-bd30 vms-eb4 vms-74a vms-4ace vms-de3a) (#1498)
- vms-47f7: corpus guest default directory; LIB$CREATE_DIR rooted defaults + large initial allocation (#1496)
- vms-14b: RTAn: Device_Type, width and page from the originating terminal (CTERM) (#1483)
- semantic oracle burn-down: known-diff 192 → 151 — $FAO directive engine + $GETMSG from the observed message catalog (vms-546 …) (#1493)
- vms-9a6: grant packages:read so the buildx composite can use the GHCR mirror (#1503)
- vms-ec2 negctl: name the hole-fill checks by literal text so the host-defects selftest can find them (#1499)
- semantic oracle burn-down: known-diff 197 → 192 — LIB$*_SYMBOL call back into DCL's symbol tables (vms-cded) (#1495)
- semantic oracle burn-down: known-diff 213 → 197 — event flags: low byte names the flag, EFN$C_ENF names none (vms-3e9e) (#1494)
- vms-b447 + vms-6e28: $CREATE records the FAB's record attributes in the FAT; the NAM carries nam$w_fid / nam$w_did (#1485)
- semantic oracle burn-down: known-diff 264 → 213 — logical-name residency: executive LNM$PROCESS, per-mode names, real $CRELNM/$TRNLNM/$DELLNM (vms-ef21) (#1491)
- semantic oracle burn-down: known-diff 272 → 264 — RMS stream and access errors (vms-3b5) (#1492)
- test: startnet gate -- no echo|grep -q under pipefail (flake) (#1488)
- semantic oracle burn-down: known-diff 275 → 272 — LIB$FIND_FILE binds RMS (vms-214) (#1486)
- test_syssvc_privilege_enforce: the NETMBX section skips loudly where no NIC (the Alpha harness) enters no _NET: device (#1489)
- vms-04b: an initial connect that dies frees its block for the joiner to dial again -- no more half-open wait (#1467)
- vms-db7: DEC C feature-switch API (decc$feature_*, decc$set/get_reentrancy) over a table of honoured features; DECC$FILE_SHARING changes how the C RTL opens files (#1472)
- semantic oracle burn-down: known-diff 310 → 275 — RUN from any directory, $QIO completion, mailbox EOF, NLA0:/$GETDVI (#1482)
- CI (vms-9a6): digest-pinned GHCR mirror of base images + buildx setup that no longer needs anonymous Docker Hub (#1484)
- vms-ec2: the VC receiver keeps a frame that arrives ahead of the hole, inside the credit it granted -- as a real V7.3 port does (#1455)
- privileges: NETMBX joins VMS_PRV_M_ENFORCED (the executive refuses a channel to NET: without it) (#1481)
- vms-9f8e: every RMS-backed alpha DECC$SHR is the C RTL file layer — the FIX-record stdio veneer is no longer linked (#1480)
- vms-158 + vms-98e: RMS $OPEN fills the FAB record format; $OPEN/$CREATE fill the NAM resultant (#1442)
- vms-9f8e: directory streams in the C RTL fd layer — opendir/readdir/rewinddir/seekdir over $PARSE/$SEARCH (#1479)
- NETMBX: $ASSIGN of the DECnet network device (NET:/_NET:) requires it; proven by test_syssvc_privilege_enforce, anchored by net-assign-netmbx-check-removed (#1477)
- vms-fd1: gcov-tool builds where <ftw.h> has no nftw; client headers hide callback prototypes DECC$SHR lacks (#1478)
- corpus: lib_create_dir host status + written reason (#1474)
- vms-8d1: semantic oracle, RMS family; RMS $GET points RAB$L_RBF at the record and clears RSZ at EOF (vms-3b5, part); bounded pointer-text fields (#1469)
- vms-898a: keep death console as artifact + stop losing the ttyS1 transcript to a garbled banner (#1436)
- vms-e839: GCC patch 0010 — alpha VMS frame locals no longer overlap the arg-home area (#1475)
- privileges: SYSPRV, BYPASS and READALL join VMS_PRV_M_ENFORCED; DCL gates name the privilege VMS names (#1476)
- vms-38b: VMS-ABI system services — SYS$ASSIGN/SYS$DASSGN/SYS$TRNLNM/SYS$CRELNM over 32-bit descriptors and item lists (#1462)
- vms-8d1: semantic oracle, rights-database family (for vms-7d5a) + RIGHTSLIST.DAT FDL/record observations (#1468)
- vms-8b4d: acp-fileop-no-dlm-lock widens the unserialized RMW window in the MUTATION so the collision is deterministic (#1437)
- vms-0ae: RMS merges a relative directory ([.X], [-], [...
OpenVMX V0.7-7
OVMX V0.7-7 Release Notes
Generated by tools/gen_release_notes.py from the merged history since V0.7-6 (59 commits). Do not hand-edit this file -- re-run the tool against the cut commit instead.
Features
- vms-f811: Alpha V8.4 oracle dumps + 18 more VAX modules; the constants gate falls back to Alpha (#1416)
- vms-fe03: alpha-dec-vms C RTL headers declare only what DECC$SHR exports (fixes GCC configure's strsignal cascade) (#1414)
- vms-f811 step 10: DEV$ + PSL$ = V7.3 values; $GETDVI/F$GETDVI DEVCHAR use them (#1404)
- vms-ce6: ptrdiff_t follows the client's pointer size on alpha-dec-vms (matches the port compiler) (#1411)
- vms-4e9: bound the DLM directory-hash learner -- a long-lived mixed cluster no longer grows the resource table without limit (#1412)
- vms-ec2: oracle -- a real V7.3 port keeps sequenced frames that arrive out of order; OVMX's window-1 receiver discards them (#1406)
- vms-1045: 32-bit-pointer C++ on OVMX/Alpha — 32-bit libstdc++ + GCC fix for 32-bit EH address encoding (#1409)
- vms-28d: DEC C header forms for the GCC port's host sources (vaxc$errno, getcwd 3-arg, psignal not declared, <unixlib.h>) + header-forms gate (#1401)
- vms-f811 step 9: QUI/OPC/OSS/PQL/SEC/CHF/CLI/CHP/BRK/PRT/ACME/RMI/ACL constants are the real OpenVMS V7.3 values (#1400)
- vms-44a: LIB$GET_LOGICAL (over $TRNLNM) and SYS$CREATE_UID (DCE/RFC 4122 v1 uuid), each with a host test (#1408)
- vms-44a: LIB$FIND_FILE over RMS (was glob(3) on the host);
$PARSE honours the default filespec; host test for the LIB$ file routines (#1407) - vms-5bc9: DEC C 32-bit-pointer DECC$SHR entry points — a default-pointer-size program runs on OVMX/Alpha (#1396)
- vms-44a: sys$audit_eventw (real AUDIT-privilege check; no audit server, so unforced events are not audited and forced ones are SS$_UNSUPPORTED); NSA$ constants from the V7.3 $NSADEF oracle (#1402)
- vms-f811 step 11: LKI$ and FSCN$ constants are the real OpenVMS V7.3 values (#1405)
- vms-ce5: OVMX/Alpha image user stack in P1 (32-bit frame addresses and invocation handles) (#1394)
- vms-f811 step 8: EFN$C_ENF is 128 (V7.3); every set-event-flag-on-completion site treats efn >= 128 as 'no flag' (#1398)
- vms-f811 step 7: PRV$ ALTPRI/IMPERSONATE are the V7.3 aliases of SETPRI/DETACH; AUDIT and IMPORT bits added (#1397)
- vms-44a: sys$check_privilegew -- a real privilege check against the executive's mask (#1388)
- vms-122: OVMX/Alpha C RTL heap in the VMS P0 region (32-bit-addressable malloc) (#1386)
- vms-f29: OVMX takes its place as a founding member when a real VAX forms the cluster (#1383)
- vms-f811 step 6: LNM$ item codes and attribute bits are the real OpenVMS V7.3 values (#1395)
- vms-f811 step 5: PRC$ creation flags and bit numbers are the real OpenVMS V7.3 values (#1393)
- vms-f811 step 4: DVI$ item codes are the real OpenVMS V7.3 values (#1392)
- vms-ea8: DCL COPY node:: completes the LOCAL spec with the default directory (#1390)
- LINK: same-TU weak override resolved by the named address, not the section base (#1391)
- vms-f811 step 2: UAI$ item codes, flag masks and algorithm codes are the real OpenVMS V7.3 values (#1387)
- vms-8219: OVMX answers a real VAX's lock-directory lookups -- without it a VAX in a mixed cluster cannot log a user in (#1377)
- vms-a70: Ctrl/Z at the DCL prompt no longer logs the session out (#1384)
- vms-f811 step 3: IO$ function codes and modifiers are the real OpenVMS V7.3 values (#1389)
- vms-ff75: detached $CREPRC identity authorized by the creator's executive row — RUN/DETACHED works from a non-root session (#1376)
- vms-4fb: the DLM directory hash is learned where VMS puts it -- body[128:132], indexed by its high half (#1363)
- vms-f811 step 1: SS$ status codes are the real OpenVMS V7.3 values (kernel + NetBSD + userspace + DCL table) (#1378)
- vms-fd1: port compiler fix -- alpha VMS keeps the hard-frame-pointer elimination for PT_NULL procedures (#1382)
- vms-bb7: NetBSD/vax mailbox $QIO write/read used the Linux ioctl word (ILLIOFUNC) — fix + status-reporting selftest (#1372)
- vms-1f69: booted OVMX is a live DECnet endnode — NCP persists via SYS$SYSTEM, NETACP's datalink rides the executive (#1355)
- vms-fcb: LOCKDIRWT is on the wire -- OVMX holds the weight vector a real VAX cluster holds (#1359)
- vms-4d0: C++ on OVMX/Alpha — real GCC port g++/libstdc++ over the OVMX C RTL, EH via LINK zero-length psect fix (#1379)
- CI health: PR runs stop writing the shared GHA buildx cache; verified-fetch for cross-vax GCC/NetBSD sets (#1380)
- vms-bfd03: SYS$GL_CALL_HANDL and the condition-dispatcher frame's CHF context (part A) (#1375)
- vms-619: constants pinned from a real OpenVMS V7.3 node, oracle ratchet gate, JPI$/SYI$ real; asctoid/idtoasc, file_scan, memtester in the guest (#1373)
- vms-8a8: unlock KVM for NetBSD/amd64 QEMU jobs (stop passing -cpu host) (#1340)
- vms-ed1: genuine Alpha invocation context (FP->PDSC walk, live capture, machine transfer), real PDSC layout, anchorless SYS$UNWIND (#1371)
- vms-43c: LIB$INITIALIZE -- LINK transfer vector, STARLET dispatcher, IMGACT first-transfer call (#1370)
- corpus: close the guest product gaps; runtime 138/140; every process gets its PCB from the executive (vms-003/f07/1e98/967e) (#1366)
- vms-035 stage 2: Alpha executables link in P0 by default; every Alpha gate requires p0=1 (#1369)
- DCL: adjacent tokens form one parameter -- a NODE"user pw":: access string is not split at its quotes (#1365)
- vms-035 stage 1: LINK.EXE --base links Alpha executables in P0; IMGACT places shareables in P0 above them (#1367)
- corpus R2.3: runtime scoreboard column (133 of 140 run under a live /dev/vms), async completion, published scoreboard (vms-44a) (#1364)
- vms-4d0: LINK.EXE searches EVAX object libraries, keeps 64-char names, has no symbol/reloc caps (#1362)
- vms-537: alpha CRTL size_t is 32-bit, as DEC C and the port compiler define it (#1361)
- vms-a8a: DAP re-grounded on the real VMS wire — OVMX FAL client GETs and PUTs against a real OpenVMS VAX (#1354)
- CI: NetBSD 10.1 moved to archive.netbsd.org -- the pinned set URLs 404 on the CDN (#1360)
- vms-3320 + vms-032: alpha CRTL->RMS file-op veneer, and one heap in alpha DECC$SHR (#1085)
- corpus R2: argument-list fidelity, OTS$/PRVDEF/OPCDEF, file delete/rename, $LCKPAG; floor 90 -> 100 (vms-44a) (#1353)
- vms-1e9 follow-on: capture the real OpenVMS NCP / SHOW NETWORK layouts (oracle) (#1358)
- vms-ea8: wire the outbound FAL COPY client into DCL over the datalink (#1230)
- vms-553 + vms-735: the gate holds the quiet-console claim, and V0.7-6 is live (11 of 12) (#1351)
- roadmap: reconcile for V0.7-6 (#1350)
Fixes
- cut: V0.7-7 — real OpenVMS V7.3 header constants (vms-f811 steps 1-8: values changed, REBUILD), OVMX founding member with a real VAX, DLM directory, Alpha P0 heap; CI: vax-substrate cache key + clang-tidy timeout fixes (#1403)
OpenVMX V0.7-6
OVMX V0.7-6 Release Notes
Generated by tools/gen_release_notes.py from the merged history since V0.7-5 (12 commits). Do not hand-edit this file -- re-run the tool against the cut commit instead.
Features
- cut: V0.7-6 — NetBSD/VAX console silent at the source, PE wire fixes, CI hardening (#1349)
- vms-af4: a member back as a new incarnation is removed and readmitted (op 0x08 nodemap grounded) (#1348)
- vms-6b1: a frame addressed to another station never reaches the PE port (#1344)
- vms-af4: the unclean-return oracle and rig evidence (finding, no code change) (#1346)
- vms-b98: the PE listen timeout is the real port's 8 s, and TIMVCFAIL comes from SYSGEN (#1343)
- vms-4e72: harden the NetBSD boot-to-prompt handshake against lossy-TCG drops (#1339)
- vms-c68: fix stale ci.yml comment references (split into ci-kernel-executive.yml by vms-1af) (#1345)
- vms-bfdd: gate against a silent panel never-start (#1342)
- vms-df4: distinguish TOTAL GUEST DEATH from a genuine negctl defect red (#1341)
- vms-735: V0.7-5 on the public demo -- 11 of 12 visitor runs CN=3 (#1338)
- roadmap: reconcile for V0.7-5 (#1337)
Fixes
- vms-553: OpenVMX/VAX console shows no NetBSD boot output -- fixed at the source (OVMX_QUIET kernel + quiet /boot) (#1347)
OpenVMX V0.7-5
OVMX V0.7-5 Release Notes
Generated by tools/gen_release_notes.py from the merged history since V0.7-4 (5 commits). Do not hand-edit this file -- re-run the tool against the cut commit instead.
Features
- vms-eb3: a transition this node answered survives a lost connection (real V7.3 freeze oracle) (#1335)
- vms-e88: a joiner asks the member VMS asks, when VMS asks it (member-count gate, 4 real V7.3 trios) (#1333)
- vms-735 + vms-0bc: V0.7-4 passes the visitor matrix 12 of 12 — and the grader was starving the node it graded (#1334)
- roadmap: reconcile for V0.7-4 (#1332)
Fixes
- cut: V0.7-5 — joiner targets the real member, freeze CNXMGRERR closed, visitor-gate fixes (#1336)
OpenVMX V0.7-4
OVMX V0.7-4 Release Notes
Generated by tools/gen_release_notes.py from the merged history since V0.7-3 (4 commits). Do not hand-edit this file -- re-run the tool against the cut commit instead.
Features
- cut: V0.7-4 — stalled-guest CNXMGRERR closed (fix complete, not mitigation) (#1331)
- vms-1f40: a stalled cluster member re-forms and rejoins -- five reconnect defects, 20/20 on the stall rig (#1327)
- vms-735 + vms-0bc: the V0.7-3 public redeploy graded as a visitor, and a stall counter that meant nothing (#1328)
- roadmap: reconcile for V0.7-3 (#1330)