Skip to content

Prepares the 9.4.2 release (HELD for the operator) - #229

Merged
johnnyt merged 1 commit into
mainfrom
px-svb-release-942
Sep 22, 2026
Merged

johnnyt merged 1 commit into
mainfrom
px-svb-release-942

Conversation

@johnnyt

@johnnyt johnnyt commented Sep 22, 2026

Copy link
Copy Markdown
Member

What this is

The 9.4.2 release prep, opened last in this repository and HELD for the
operator
. The merge, the tag and the publish are the operator's; this pull
request exists to be read and then acted on by them. No tag was created,
locally or on the remote.

Why this release exists

A sibling package vendors this repository's conformance corpus from a tag,
and the library world's guards landed on main as corpus rows after v9.4.1
was cut. There is no tag carrying them. This release cuts one, and picks up
the two unreleased lexer fixes that were waiting on it.

What moved

Four files, and only the release carriers:

  • mix.exs - @version 9.4.1 -> 9.4.2.
  • CHANGELOG.md - a new dated ## [9.4.2] section at the top.
  • changelog.d/px-2ms.md - deleted, promoted into that section.
  • changelog.d/px-h7p.md - deleted, promoted into that section.

The version is an honest patch

git log v9.4.1..HEAD at the base of this branch enumerates four commits:

  1. 6dd1758 - fixes non-ASCII truncation in date literals (take_date/5).
  2. d06ece1 - documents string escapes and the numeric refusal; docs only.
  3. 71ae4da - refuses an uppercase \U escape like \u (take_string/6).
  4. f2f982d - adds the library world's guards as corpus rows.

Two bug fixes, one documentation pass, one conformance-fixture addition. No
public function is added, removed or changed, and no observable behaviour
changes except the two refusals/messages the fixes name. A patch bump is what
SemVer gives for that set.

The 9.4.2 section

Both fragments carry ### Fixed and both are promoted byte for byte, with no
paraphrase and nothing added:

  • A \U escape in a string literal is refused with the same error as \u.
  • An invalid date literal's error message keeps its non-ASCII characters.

Each is true against 9.4.1 as released. 9.4.1's own ### Fixed block
names the lowercase \u refusal and non-ASCII string literals; neither of
these two bullets restates it. The uppercase spelling was still falling
through after 9.4.1 shipped, and the date-literal message was still being
truncated.

The README install pin is unchanged, on purpose

9.4.1 -> 9.4.2 is a patch. The release recipe says of the pin, verbatim:

It moves only on a major/minor bump - a patch release leaves it alone, so
the two carriers agree on major and minor and say nothing about patch.

The pin already reads the current major and minor, so an unchanged pin here
is the recipe being followed, not a missed step.

No fragment for the library corpus rows

changelog.d/README.md's "Do not write a fragment for" list opens with "test
harness, corpus tooling, or conformance fixtures", with no exception. The
library world's guards are conformance fixtures, so they take no fragment and
no bullet. The 9.4.2 section is assembled from the two fragments already open
on main and nothing else.

Gate

Full mix quality green at the head of this branch, attested:

Running quality checks...

✓ Format: No changes needed (280ms)
✓ Compile: dev + test compiled (warnings as errors) (310ms)

Running analysis stages in parallel...

○ Doctor: skipped (:doctor not installed)
○ Gettext: skipped (:gettext not installed)
○ Sobelow: skipped (:sobelow not installed)
✓ Dependencies: No unused dependencies (347ms)
✓ Credo: No issues (3.1s)
✓ Tests: 2,914 of 2,914 passed, 95.6% coverage (4.2s)
✓ Dialyzer: No warnings (4.4s)

✓ All quality checks passed!

Doctor is a standing project-level gap (:doctor not installed), skipped on
every run here and not a passing stage.

mix hex.build

Succeeds at 9.4.2. Its file list:

lib/predicator
lib/predicator/instructions.ex
lib/predicator/instructions
lib/predicator/instructions/upgrade.ex
lib/predicator/visitors
lib/predicator/visitors/string_visitor.ex
lib/predicator/visitors/instructions_visitor.ex
lib/predicator/duration.ex
lib/predicator/types.ex
lib/predicator/compiled.ex
lib/predicator/cast.ex
lib/predicator/compiler.ex
lib/predicator/errors.ex
lib/predicator/simple.ex
lib/predicator/evaluator.ex
lib/predicator/vocabulary.ex
lib/predicator/context_location.ex
lib/predicator/functions
lib/predicator/functions/system_functions.ex
lib/predicator/functions/json_functions.ex
lib/predicator/functions/provider.ex
lib/predicator/functions/date_functions.ex
lib/predicator/functions/math_functions.ex
lib/predicator/parser.ex
lib/predicator/errors
lib/predicator/errors/undefined_variable_error.ex
lib/predicator/errors/type_mismatch_error.ex
lib/predicator/errors/parse_error.ex
lib/predicator/errors/evaluation_error.ex
lib/predicator/errors/location_error.ex
lib/predicator/context.ex
lib/predicator/visitor.ex
lib/predicator/undefined.ex
lib/predicator/lexer.ex
lib/predicator/conformance
lib/predicator.ex
mix.exs
README.md
LICENSE
CHANGELOG.md

The built tarball was deleted after the file list was read; it is not in the
tree and not in this branch.

ISA and corpus

Neither moves here. This branch touches no file under conformance/, not
docs/isa.md, and not lib/predicator/instructions.ex. The corpus rows this
release carries landed separately and are already on main.

Provenance

No edit outside the four release carriers was needed, so nothing is listed
here beyond them.

For the operator

Merge (rebase), then tag and publish. Nothing in this branch does any of
those.

`@version` moves to 9.4.2 and the two open `changelog.d/` fragments are
assembled into a dated 9.4.2 section at the top of `CHANGELOG.md`, then
deleted. Both are `### Fixed` entries and both are promoted byte for
byte: the uppercase `\U` escape refusal and the non-ASCII date-literal
error message. Nothing else on main since v9.4.1 earns a bullet - the
language-reference pass carried no behaviour change, and the library
corpus rows are conformance fixtures, which `changelog.d/README.md`
lists first under "Do not write a fragment for".

A patch bump, so the README install pin does not move. The release
recipe says of it: "It moves only on a major/minor bump - a patch
release leaves it alone, so the two carriers agree on major and minor
and say nothing about patch." The pin already reads the current major
and minor.

No tag is created here. The tag, the push and the publish are the
operator's.

Refs: px-svb
@codecov

codecov Bot commented Sep 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@johnnyt
johnnyt merged commit d8067df into main Sep 22, 2026
2 checks passed
@johnnyt
johnnyt deleted the px-svb-release-942 branch September 22, 2026 18:16
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.

1 participant