Stop shipping HTTPDSL and HTTPJES2 - #158
Merged
Merged
Conversation
Both are fully covered by mvsMF's dataset and jobs REST APIs, both have been documented as deprecated since the 4.0.0 work started, and the running system had already dropped the routes. What they still cost was two load modules, ~3,000 lines of build, and two JES2 spool DDs in the STC procedure. The two [[module]] entries are gone, so the build drops from 6 load modules to 4. Removing the entries alone would not have been enough: [internal] globs src/*.c, so the sources would have kept compiling into the archive with nothing rooting them. They are in tbd/ now, outside that glob, which takes them out of the build entirely rather than merely un-autocalling them -- 112 archive objects down to 100. They are moved rather than deleted so the code stays readable while the replacements settle; tbd/README.md says what is there and why. Which sources could go was settled by link test, not by reading: take the candidates out, rebuild, and let an unresolved symbol speak up. All four remaining load modules and all eleven test modules link without them. The clusters turned out cleanly separated -- httpds_* appears only in the DSL files, clibjes2.h only in the JES ones. stck2tv.c travelled with them for a different reason: nothing in the tree has ever referenced it, not even the two modules. The same link test found it. The HTTPX vector exports none of these functions, so no external CGI (mvsMF included) could reach them at runtime. That is the check worth recording: the vector's offsets are frozen, so had one been exported this would have broken the published ABI instead of shrinking the build. The STC procedure loses HASPCKPT and HASPACE1. Those are the JES2 spool datasets HTTPJES2 read; no other part of the server opens them, so they would otherwise have sat in every installation's PROC pointing at SYS1.HASPACE for nothing. Docs: configuration.md listed both as configurable modules with MOD= syntax, migration.md said they were "still present in the code", and CLAUDE.md documented their endpoints as usable. All three now say they are gone, and migration.md names the two steps a 3.3.x configuration needs -- the MOD= lines and the two DDs. CLAUDE.md also loses the line calling /jes/status a quick JES2 cross-check, since that is mvsMF's job now. Also in the sample Parmlib: the TZOFFSET example goes. The keyword was retired in #145 and the sample was the last place still suggesting it. Closes #157
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #157
Retires the two modules mvsMF replaced. Build goes from 6 load modules to 4, and the internal archive from 112 objects to 100.
What moved, and why moving matters
[internal]globssrc/*.c, so dropping the[[module]]entries alone would have left both clusters compiling into the archive with nothing rooting them. The sources are intbd/now — outside that glob — which takes them out of the build rather than merely un-autocalling them.All via
git mv, so history follows. Moved rather than deleted, per the issue —tbd/README.mdrecords what each file was and what the link test showed, because a directory calledtbdholding 3,000 lines with no explanation is a puzzle for whoever opens it next.How the exclusive set was determined
Link test, not reading. Two attempts at static analysis of the call graph gave contradicting answers — the sources use two different function-definition layouts, and CGI modules reach the server through the HTTPX vector rather than by symbol, so a naive graph is both incomplete and misleading. So instead: take the candidates out, rebuild, and let an unresolved symbol speak up, since autocall pulls only referenced members.
All 4 remaining load modules and all 11 test modules link without any of them. The clusters are cleanly separated —
httpds_*appears only in the DSL files,clibjes2.honly in the JES ones.stck2tv.ccame along for a different reason: nothing in the tree has ever referenced it, not even the two modules being retired. The same test surfaced it.The ABI check
The HTTPX vector exports none of these functions, so no external CGI — mvsMF included — can reach them at runtime. Worth recording because the vector's offsets are frozen: had one been exported, this would have broken the published ABI instead of shrinking the build.
Samplib
httpprm0: the two commentedMOD=lines are gone. Also theTZOFFSETexample — that keyword was retired in Parmlib TZOFFSET never reaches a module: __tzset() writes the per-task CRT, so CGI timestamps render with the system CVTTZ instead #145 and the sample was the last place still suggesting it. Bundled here deliberately rather than left for a third pass at the same file.httpd(STC PROC):HASPCKPTandHASPACE1removed. Those are the JES2 spool datasets HTTPJES2 read; nothing else in the server opens them, so they would otherwise sit in every installation's PROC pointing atSYS1.HASPACEfor nothing.Docs
Three places went stale the moment the modules stopped shipping:
docs/configuration.md— listed both as configurable modules withMOD=syntax. Now states that such a line parses but fails to load the program on the first matching request.docs/migration.md— said they were "still present in the code". Now names the two concrete migration steps: drop theMOD=lines, drop the two DDs.CLAUDE.md— documented the endpoints as usable. Also loses the line calling/jes/statusa quick JES2 cross-check, which is mvsMF's job now, and thejesst.cprintf-to-stdout note, which described a file that is no longer built.Verification
makeandmake testclean under-Wall -Werror: 4 modules, 11 test modules, archive at 100 objects. That is compile-and-link — which is exactly the property at issue here, since the question was whether anything still resolves against these files. No runtime behaviour changed for the four surviving modules.Not verified on MVS, and it does not need a deploy to be judged: the change removes code from the build rather than altering any code path that runs.