Skip to content

Stop shipping HTTPDSL and HTTPJES2 - #158

Merged
mgrossmann merged 1 commit into
mainfrom
retire-httpdsl-httpjes2
Aug 9, 2026
Merged

Stop shipping HTTPDSL and HTTPJES2#158
mgrossmann merged 1 commit into
mainfrom
retire-httpdsl-httpjes2

Conversation

@mgrossmann

Copy link
Copy Markdown
Contributor

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] globs src/*.c, so dropping the [[module]] entries alone would have left both clusters compiling into the archive with nothing rooting them. The sources are in tbd/ now — outside that glob — which takes them out of the build rather than merely un-autocalling them.

tbd/src/      httpdsl.c httpdsld.c httpdsle.c httpdsli.c httpdsll.c httpdslp.c
              httpdslx.c httpjes2.c jespr.c jesst.c jestime.c stck2tv.c
tbd/include/  httpds.h jestime.h
tbd/README.md

All via git mv, so history follows. Moved rather than deleted, per the issue — tbd/README.md records what each file was and what the link test showed, because a directory called tbd holding 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.h only in the JES ones.

stck2tv.c came 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

Docs

Three places went stale the moment the modules stopped shipping:

  • docs/configuration.md — listed both as configurable modules with MOD= 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 the MOD= lines, drop the two DDs.
  • CLAUDE.md — documented the endpoints as usable. Also loses the line calling /jes/status a quick JES2 cross-check, which is mvsMF's job now, and the jesst.c printf-to-stdout note, which described a file that is no longer built.

Verification

make and make test clean 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.

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
@mgrossmann
mgrossmann merged commit 8f93d10 into main Aug 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Stop shipping HTTPDSL and HTTPJES2 — mvsMF replaces both

1 participant