From 2fe82d02641bc86339d81bea5b1ee5988f37a8eb Mon Sep 17 00:00:00 2001 From: Marko Lahma Date: Sun, 23 Aug 2026 13:32:07 +0300 Subject: [PATCH] Maintenance: give the 4.x branch its CI, its version and its row in the README MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 4.x branch exists now, cut at the last commit before the opt-in Web API foundation and the security-defaults stack — both of which change what a default engine is and therefore belong to 5.x, not to a maintenance line. Three pieces of housekeeping follow from the branch existing at all. `build.yml` filtered its push trigger to `[ main, 3.x ]`, so a push to 4.x built nothing and published no preview package. 4.x joins the list. `pr.yml` needs no change: it deliberately carries no `branches:` filter, so a pull request based on 4.x already gets the full matrix. `VersionPrefix` moves to 4.16.1, which is what the MyGet preview stream coming off this branch should be numbered. It is not what a release will carry — `release.yml` derives that from the pushed `vX.Y.Z` tag and passes it to `dotnet pack`, so the property only ever names the preview feed's version. The README's "Branches and releases" section described `main` alone, which was true when `main` was the only branch anyone was asked to target. It now says what each of the three live branches is for and how a release is actually cut. What is deliberately *not* here: the AGENTS.md split (#3284). The maintenance branch keeps its single pre-split AGENTS.md, so a backport cherry-picked from main never conflicts on documentation layout. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_014W5mbjGhyvgAS4pivXoc4S --- .github/workflows/build.yml | 2 +- Directory.Build.props | 2 +- README.md | 17 ++++++++++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9b66456c3f..791acf0384 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,7 +3,7 @@ name: Build on: push: - branches: [ main, 3.x ] + branches: [ main, 4.x, 3.x ] paths-ignore: - 'doc/**' - '**.md' diff --git a/Directory.Build.props b/Directory.Build.props index e6d71c0d7d..a9c2490c35 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -11,7 +11,7 @@ BSD-2-Clause 0 - 4.16.0 + 4.16.1 beta-$(BuildNumber) true diff --git a/README.md b/README.md index cf574f70f9..ae3a955af2 100644 --- a/README.md +++ b/README.md @@ -1154,6 +1154,17 @@ a hardened deployment baseline. ## Branches and releases -- The recommended branch is __main__, any PR should target this branch -- The __main__ branch is automatically built and published on [MyGet](https://www.myget.org/feed/Packages/jint). Add this feed to your NuGet sources to use it: https://www.myget.org/F/jint/api/v3/index.json -- The __main__ branch is occasionally published on [NuGet](https://www.nuget.org/packages/jint) +Three branches are live, and which one a change belongs on depends on whether it is allowed to change +observable behaviour. + +| Branch | What it is | What lands on it | +| --- | --- | --- | +| __main__ | Development of the next major version, __5.x__. The default target for a pull request. | Anything, including breaking changes to the public API and to default behaviour. | +| __4.x__ | Maintenance of the __4.16.x__ line, branched from `main` at the last commit before the 5.x work began. | Correctness and conformance fixes backported from `main`, and nothing that changes an existing API or an existing default. | +| __3.x__ | Maintenance of the __3.x__ line, which still parses with Esprima rather than Acornima. | Security and severe-correctness fixes only. | + +- Open a pull request against __main__ unless the change is a backport, in which case target the + maintenance branch it belongs to +- __main__, __4.x__ and __3.x__ are automatically built and published on [MyGet](https://www.myget.org/feed/Packages/jint). Add this feed to your NuGet sources to use it: https://www.myget.org/F/jint/api/v3/index.json +- A release to [NuGet](https://www.nuget.org/packages/jint) is cut by pushing a `vX.Y.Z` tag to the + branch being released; the tag, not `Directory.Build.props`, is the version the package carries