Skip to content

CC/370 v1.4.0

Choose a tag to compare

@github-actions github-actions released this 05 Oct 11:54
· 64 commits to main since this release
2821ebb

CC/370 (cc370) 1.4.0 is a minor release of the host-native MVS 3.8j toolchain. The driver no longer links a separate crt0.o: the C startup @@CRT0 now comes from libc.a by automatic library call. This needs LIBC/370 (libc370) >= 2.3.0, which is where the startup moved into the archive. Compiling, assembling and every other command line behave as in 1.3.1. With LIBC/370 2.3.0 or later it is a drop-in; install.sh picks the newest LIBC/370 that accepts this CC/370 (2.3.1 today).

Read this first: what a caller can see

  • A link through the driver (cc370 foo.c -o foo) needs LIBC/370 >= 2.3.0. Against an older LIBC/370, main fails to link because @@CRT0 is unresolved. The packages enforce the floor: the .deb has Depends/Breaks and the .rpm has Requires/Conflicts on LIBC/370 2.3.0. To upgrade an existing install, run install.sh again or brew upgrade; either brings in the matching libc370.
  • @@CRT0 no longer has to sit at offset 0 of the load module. The directory entry points to it wherever it lands (0x80 for a plain hello world), and ld370 --pack reads a bare member's entry from its CESD.
  • A link that calls ld370 directly with its own object list is unaffected.

Changed: before and now

1.3.1 1.4.0
startup on a driver link crt0.o named on the link line, first in the module @@CRT0 pulled from libc.a by autocall, entry set in the directory
LIBC/370 required >= 2.1.0 >= 2.3.0

Install

curl -fsSL https://github.com/mvslovers/cc370/releases/latest/download/install.sh | sh

install.sh asks the GitHub API for the release lists, which allows 60 requests an hour per address. When that is used up, it says so, names the minutes until the reset and stops with rc 1. Retry later, set GITHUB_TOKEN, or name the releases with CC370_VERSION= and LIBC370_VERSION=. (The install.sh first attached to this release reported that case as "no LIBC/370 release fits" and installed CC/370 alone; it was replaced on 2026-10-05.)

With Homebrew (macOS, Linux):

brew trust mvslovers/tap            # once
brew install mvslovers/tap/cc370    # cc370 and, as its dependency, libc370
brew upgrade mvslovers/tap/cc370    # an existing install

Or the pieces, all listed in SHA256SUMS:

file what
cc370-1.4.0-{darwin,linux}-{amd64,arm64}.tar.gz the toolchain for one host
cc370_1.4.0_{amd64,arm64}.deb Debian/Ubuntu; depends on libc370-dev (>= 2.3.0)
cc370-1.4.0.{x86_64,aarch64}.rpm Fedora/RHEL; requires libc370-devel the same way
install.sh the installer above
ml01-0001-0.pdf CC/370 User's Guide, Draft edition
ml01-0002-0.pdf CC/370 Command Reference, Draft edition

The two manuals were added to this release on 2026-10-07, together with their lines in SHA256SUMS; the lines of the other files are unchanged. They describe CC/370 1.4; what is marked "From CC/370 1.5.0 on" (-mrent) is not in this release. The Draft edition still lacks the figures whose output is captured on MVS.

Full changelog

Changed

  • The link no longer names crt0.o; it needs LIBC/370 >= 2.3.0
    (libc370#159). Since LIBC/370 2.3.0 the startup @@CRT0 is a member of
    libc.a, and main's stub refers to it, so the automatic library call
    pulls it like any other routine. The driver's startfile is empty, and the
    packages require LIBC/370 2.3.0 (.deb Depends/Breaks, .rpm
    Requires/Conflicts). With an older LIBC/370 a main would not link.
    @@CRT0 no longer has to sit at offset 0: the directory's entry points to
    it, and ld370 --pack takes a bare member's entry from its CESD (#850).