From 8a55926ec799402c6bdf9c65bd930e23ee9d2aa3 Mon Sep 17 00:00:00 2001 From: Qiheng He Date: Sun, 18 Oct 2026 17:31:11 +0800 Subject: [PATCH] docs: move the unreleased changes under 0.6.2 and drop the 0.6.1 remarks --- README.md | 4 ---- README_CN.md | 4 ---- docs/changes.md | 8 ++++---- docs/development.md | 2 +- docs/distributions.md | 10 +++++----- docs/foojay.md | 4 +--- docs/install-from-source.md | 4 ++-- docs/sdkmanrc.md | 2 -- docs/troubleshooting.md | 4 ++-- docs/versions.md | 16 +++++----------- docs/zh-CN/changes.md | 8 ++++---- docs/zh-CN/development.md | 2 +- docs/zh-CN/distributions.md | 10 +++++----- docs/zh-CN/foojay.md | 4 +--- docs/zh-CN/install-from-source.md | 4 ++-- docs/zh-CN/sdkmanrc.md | 2 -- docs/zh-CN/troubleshooting.md | 4 ++-- docs/zh-CN/versions.md | 16 +++++----------- 18 files changed, 40 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index 099b1a9..e90b36d 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,6 @@ vfox install java@21-tem vfox use --global java@21-tem ``` -Unreleased: release 0.6.1, the newest when this was written, installs `21+35-tem` here, and `vfox use --global java@21-tem` then fails with `java@21-tem is not installed`. Use the name that `vfox install` prints, or [install from source](docs/install-from-source.md). - You can verify this using the following command: ```bash @@ -34,8 +32,6 @@ java -version `vfox search java tem` lists the Temurin releases, and in an interactive terminal it lets you pick one and installs it. -Behavior that only exists on `main` and not in the latest release is marked "Unreleased" in the pages below. [docs/changes.md](docs/changes.md) lists it, and [docs/install-from-source.md](docs/install-from-source.md) gets you `main`. - ## Versions and names A version is `-`, such as `21.0.8-tem`, with `-fx` after it for JavaFX. Without a distribution you get OpenJDK from jdk.java.net, which has nothing newer than 17.0.2 for 17 and 21.0.2 for 21. See [docs/versions.md](docs/versions.md) for details. diff --git a/README_CN.md b/README_CN.md index 6094d42..ddfac6b 100644 --- a/README_CN.md +++ b/README_CN.md @@ -24,8 +24,6 @@ vfox install java@21-tem vfox use --global java@21-tem ``` -未发布:0.6.1(写这篇文档时最新的发布版)在这里装的是 `21+35-tem`,随后 `vfox use --global java@21-tem` 会报 `java@21-tem is not installed`。请改用 `vfox install` 打印出的名字,或者[从源码安装](docs/zh-CN/install-from-source.md)。 - 可以用下面的命令验证: ```bash @@ -34,8 +32,6 @@ java -version `vfox search java tem` 会列出 Temurin 的各个版本,在交互式终端里还可以直接选一个并安装。 -只存在于 `main`、还没进入最新发布版的行为,在下面各页里标有“未发布”。完整列表见 [docs/zh-CN/changes.md](docs/zh-CN/changes.md),想直接用上 `main`,见 [docs/zh-CN/install-from-source.md](docs/zh-CN/install-from-source.md)。 - ## 版本与命名 版本写成 `<版本>-<发行版>`,例如 `21.0.8-tem`,后面加 `-fx` 表示带 JavaFX。不写发行版时得到的是 jdk.java.net 上的 OpenJDK,它的 17 只到 17.0.2,21 只到 21.0.2。详见 [docs/zh-CN/versions.md](docs/zh-CN/versions.md)。 diff --git a/docs/changes.md b/docs/changes.md index 06569e1..1439f38 100644 --- a/docs/changes.md +++ b/docs/changes.md @@ -2,19 +2,19 @@ [中文](zh-CN/changes.md) | [English](changes.md) -What changed in each release, as a user notices it. GitHub's release pages list the pull requests. The newest release at the time of writing is 0.6.1, and `main` is ahead of it by everything under "Unreleased". [install-from-source.md](install-from-source.md) gets you those changes now. +What changed in each release, as a user notices it. GitHub's release pages list the pull requests. -## Unreleased +## 0.6.2 (2026-10-18) - `.sdkmanrc` works under vfox 1.x again. Release 0.6.1 fails with `expected 0 arguments for func() []string, got 1` under vfox 1.x (tested with 1.0.12 and 1.0.13), and vfox hides the error ([#65](https://github.com/version-fox/vfox-java/pull/65)). - `vfox use java@21`, a bare major, works under vfox 1.0.13. Release 0.6.1 fails there with `cannot unmarshal string into plugin.PreUseHookResult` ([#65](https://github.com/version-fox/vfox-java/pull/65)). - `.sdkmanrc` matches SDKMAN's `jbr` and JavaFX identifiers ([#78](https://github.com/version-fox/vfox-java/pull/78)), zero-padded releases ([#85](https://github.com/version-fox/vfox-java/pull/85)) and early-access identifiers ([#88](https://github.com/version-fox/vfox-java/pull/88), [#96](https://github.com/version-fox/vfox-java/pull/96)). It selects the JDK it names when several of the same major are installed ([#84](https://github.com/version-fox/vfox-java/pull/84)). See [sdkmanrc.md](sdkmanrc.md). - A bare major installs the newest release. `java@21-tem` is `21.0.12.1+1-tem` and not `21+35-tem` ([#74](https://github.com/version-fox/vfox-java/pull/74)). `java@25-graal` installs `25.0.4.1-graal`, the newest build of the 25.0 line, where release 0.6.1 installed `25-graal` ([#101](https://github.com/version-fox/vfox-java/pull/101)). - `vfox use java@21.0.8-tem` finds the installed `21.0.8+9-tem` ([#76](https://github.com/version-fox/vfox-java/pull/76)). The same goes for OpenJDK names with `-open` or `openjdk-` ([#77](https://github.com/version-fox/vfox-java/pull/77)) and for zero-padded releases ([#92](https://github.com/version-fox/vfox-java/pull/92)). -- `java@21.0.5+63130-jb` installs the build it names and not the newest build of the release ([#83](https://github.com/version-fox/vfox-java/pull/83)). +- `java@21.0.5+63130-jb` and `java@28.ea.15-open` install the build they name and not the newest build of the release ([#83](https://github.com/version-fox/vfox-java/pull/83)). - `vfox search` on Windows lists releases that ship only as tar.gz ([#81](https://github.com/version-fox/vfox-java/pull/81)). - The plugin no longer sets `GRAALVM_HOME` ([#93](https://github.com/version-fox/vfox-java/pull/93)). -- `java@tem`, a distribution without a version, asks for one instead of failing with a Lua error ([#99](https://github.com/version-fox/vfox-java/pull/99)). +- `java@tem` and `java@-tem`, a distribution without a version, ask for one. Release 0.6.1 stops with `attempt to index a non-table object(nil) with key 'match'` for the first and installs the newest release for the second ([#99](https://github.com/version-fox/vfox-java/pull/99)). - `vfox search` no longer marks GraalVM's monthly feature releases as LTS ([#100](https://github.com/version-fox/vfox-java/pull/100)). - The repository has a container e2e suite for Linux and Windows, see [e2e.md](e2e.md) ([#65](https://github.com/version-fox/vfox-java/pull/65), [#82](https://github.com/version-fox/vfox-java/pull/82)). diff --git a/docs/development.md b/docs/development.md index a2bc249..7346abb 100644 --- a/docs/development.md +++ b/docs/development.md @@ -125,7 +125,7 @@ The ids are Foojay's (`oracle_open_jdk` is `open`). The notes under "Only some r A maintainer runs **Actions → Plugin → Run workflow** on the default branch with the version, without `v`. The README describes what the shared workflow does. Afterwards `plugins/java.json` in [vfox-plugins](https://github.com/version-fox/vfox-plugins) shows the version that `vfox add java` serves. -The documentation marks what is newer than the last release with "Unreleased" ("未发布" in Chinese). After a release, move those entries in [changes.md](changes.md) under the new version and take the remarks out, in both languages: `grep -rn -i -e unreleased -e 未发布 docs README*`. +The documentation marks what is newer than the last release with "Unreleased" ("未发布" in Chinese). After a release, move those entries in [changes.md](changes.md) under the new version and take the remarks out, in both languages: `grep -rn -i -e unreleased -e 未发布 docs README*`. Also search for the number of the previous release: a few sentences compare against it without saying "Unreleased". ## Writing the docs diff --git a/docs/distributions.md b/docs/distributions.md index e734f75..4719c32 100644 --- a/docs/distributions.md +++ b/docs/distributions.md @@ -101,17 +101,17 @@ Mandrel and Liberica NIK numbered their releases after themselves up to version ### Behavior of Oracle GraalVM and GraalVM Community -- Since 25.1 (June 2026) GraalVM puts out a feature release every month next to its 25.0 line: `25.1.3`, `25.2.4`, `25.3.4.1`, `25.4.4.1`. Each is replaced within about a month. Foojay marks them LTS because the JDK they build on is LTS, and `vfox search` leaves the LTS note off them. Unreleased: 0.6.1 still adds the note. -- `java@25-graal` installs the newest build of the 25.0 line (`25.0.4.1-graal`), the line Oracle's own `25/latest` download follows. A feature release needs its full version: `java@25.4.4.1-graal`. Unreleased: 0.6.1 installed the GA build `25-graal`. -- GraalVM Community's 25.0 line ended with `25.0.2`, and the feature releases are all it still ships. `java@25-graalce` installs the newest of them, `25.4.4.1-graalce` on 2026-10-18. Unreleased: 0.6.1 installs the GA build `25-graalce`. -- The plugin sets `JAVA_HOME` and `PATH`, and no `GRAALVM_HOME`. A `GRAALVM_HOME` that points at a GraalVM of your own stays as it is, and the native-image build plugins fall back to `JAVA_HOME` when it is unset. Unreleased: 0.6.1 set `GRAALVM_HOME` for `graal` and `graalce`, replacing yours. +- Since 25.1 (June 2026) GraalVM puts out a feature release every month next to its 25.0 line: `25.1.3`, `25.2.4`, `25.3.4.1`, `25.4.4.1`. Each is replaced within about a month. Foojay marks them LTS because the JDK they build on is LTS, and `vfox search` leaves the LTS note off them. +- `java@25-graal` installs the newest build of the 25.0 line (`25.0.4.1-graal`), the line Oracle's own `25/latest` download follows. A feature release needs its full version: `java@25.4.4.1-graal`. +- GraalVM Community's 25.0 line ended with `25.0.2`, and the feature releases are all it still ships. `java@25-graalce` installs the newest of them, `25.4.4.1-graalce` on 2026-10-18. +- The plugin sets `JAVA_HOME` and `PATH`, and no `GRAALVM_HOME`. A `GRAALVM_HOME` that points at a GraalVM of your own stays as it is, and the native-image build plugins fall back to `JAVA_HOME` when it is unset. - There is no Windows ARM64 and no Alpine build, and Intel Macs get nothing after 25.0.1. See [platforms.md](platforms.md#graalvm). ## Others ### JetBrains Runtime (`jb`) -The [fork of OpenJDK](https://github.com/JetBrains/JetBrainsRuntime) that JetBrains' IDEs run on. Java 11, 17, 21 and 25. On Windows some releases ship only as tar.gz. The plugin installs those, and `vfox search` lists them. Unreleased: 0.6.1 does not list them. +The [fork of OpenJDK](https://github.com/JetBrains/JetBrainsRuntime) that JetBrains' IDEs run on. Java 11, 17, 21 and 25. On Windows some releases ship only as tar.gz. The plugin installs those, and `vfox search` lists them. ### TravaOpenJDK (`trava`) diff --git a/docs/foojay.md b/docs/foojay.md index 3b8f918..7779447 100644 --- a/docs/foojay.md +++ b/docs/foojay.md @@ -34,11 +34,9 @@ https://api.foojay.io/disco/v3.0/packages/jdks Without `latest=available`, `version=21` matches the 21 GA build only (`21+35`). With it Foojay picks the newest 21.x, which is what `java@21-tem` installs. Longer versions match as they are. -Unreleased: release 0.6.1 sends a `+` as it is, never adds `latest=available` (so `java@21-tem` installs `21+35-tem`), and on Windows asks for `zip` only, falling back to `tar.gz` when that returns nothing. - The answer is a list of packages. The plugin names a release after `java_version`, adds `-fx` where `javafx_bundled` is true, marks it LTS where `term_of_support` is `lts`, and prefers a `zip` over a `tar.gz` of the same version on Windows. For the install it then fetches the package's `links.pkg_info_uri` and downloads its `direct_download_uri`, which is a vendor's own server (GitHub Releases for Temurin). That record also holds a `checksum`. The plugin does not pass it on, so vfox prints `WARNING: Checksum is not provided, skip verify...` and does not verify the download. -`vfox search` differs from the raw list in a few ways. It lists a name once where Foojay has two records for it, and it leaves the LTS note off GraalVM's feature releases (unreleased, see [distributions.md](distributions.md#behavior-of-oracle-graalvm-and-graalvm-community)). It only lists GA releases. +`vfox search` differs from the raw list in a few ways. It lists a name once where Foojay has two records for it, and it leaves the LTS note off GraalVM's feature releases (see [distributions.md](distributions.md#behavior-of-oracle-graalvm-and-graalvm-community)). It only lists GA releases. ## Which distributions have a build for my platform diff --git a/docs/install-from-source.md b/docs/install-from-source.md index f717c9a..a60fe69 100644 --- a/docs/install-from-source.md +++ b/docs/install-from-source.md @@ -2,7 +2,7 @@ [中文](zh-CN/install-from-source.md) | [English](install-from-source.md) -`vfox add java` installs the latest release. `main` has fixes that are not in it yet ([changes.md](changes.md)), and a change you are working on is not in any release. A plugin is a `metadata.lua` plus the `hooks` and `lib` directories, and vfox adds one from a zip of them. +`vfox add java` installs the latest release. To try `main` before its next release, or a change you are working on, build the plugin from source. A plugin is a `metadata.lua` plus the `hooks` and `lib` directories, and vfox adds one from a zip of them. ## Ubuntu 26.04 @@ -40,7 +40,7 @@ vfox use --global java@21-tem java -version ``` -A build of `main` installs the newest Temurin 21 (`21.0.12.1+1-tem` on 2026-10-18). Release 0.6.1 installs `21+35-tem`, the first build of 21. +`vfox install java@21-tem` installs the newest Temurin 21, `21.0.12.1+1-tem` on 2026-10-18. ## When java is already added diff --git a/docs/sdkmanrc.md b/docs/sdkmanrc.md index fb9210d..4978446 100644 --- a/docs/sdkmanrc.md +++ b/docs/sdkmanrc.md @@ -11,8 +11,6 @@ java=21.0.8-tem Only the `java=` line is read. Other lines, such as `maven=3.9.9`, are not this plugin's business. -> Unreleased: release 0.6.1 cannot read `.sdkmanrc` under vfox 1.x. Its hook calls `ctx:getInstalledVersions()`, which every vfox 1.x rejects (tested with 1.0.12 and 1.0.13) with `expected 0 arguments for func() []string, got 1`, and vfox drops that error, so nothing happens. `main` fixes it, matches more of SDKMAN's spellings (`jbr`, JavaFX, zero padding, early access) and picks the right JDK when several of one major are installed. Try it with [install-from-source.md](install-from-source.md). The details are in [changes.md](changes.md). - ## Using it ```bash diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 7420adc..034cbf5 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -16,7 +16,7 @@ Foojay has no package for that release, distribution and flavour on this platfor ### `No version in tem; add one, such as 21-tem. Please check available versions with 'vfox search java tem'` -The spec holds a distribution and no version. `java@-tem`, `java@temurin-` and `java@zulu-fx` are the same case. Unreleased: 0.6.1 stops with `attempt to index a non-table object(nil) with key 'match'` for `java@tem`, and installs the newest release for `java@-tem`. +The spec holds a distribution and no version. `java@-tem`, `java@temurin-` and `java@zulu-fx` are the same case. ### `Could not extract a valid distribution: 21-foo` @@ -65,7 +65,7 @@ While `proxy.enable` is `false`, the usual `HTTP_PROXY`, `HTTPS_PROXY` and `NO_P - **`WARNING: Checksum is not provided, skip verify...` on every install.** The plugin does not pass a checksum to vfox, so the download is not verified, see [foojay.md](foojay.md#what-the-plugin-asks). - **The installed name has a build number you did not type.** `java@21.0.8-tem` installs `21.0.8+9-tem`. The build is part of the name, see [versions.md](versions.md#installed-names). - **`vfox install java@21-tem` and `vfox install java tem` do different things.** The second one is two SDKs, `java` and `tem`. -- **A `GRAALVM_HOME` you set is left alone.** The plugin sets `JAVA_HOME` and `PATH` only. Unreleased: 0.6.1 replaced it for GraalVM. +- **A `GRAALVM_HOME` you set is left alone.** The plugin sets `JAVA_HOME` and `PATH` only. ## Where the JDK is diff --git a/docs/versions.md b/docs/versions.md index fee64bf..d13d630 100644 --- a/docs/versions.md +++ b/docs/versions.md @@ -15,8 +15,6 @@ vfox install java@21 # no distribution: OpenJDK from jdk.java.net The distribution is a short name (`tem`) or a long name (`temurin`). Both lists are in [distributions.md](distributions.md). `-fx` goes last and asks for a JavaFX build, see [javafx.md](javafx.md). -> This page describes `main`. Release 0.6.1, the newest one when this was written, differs in places marked "Unreleased", and [changes.md](changes.md) lists all of them. - ## Without a distribution `java@21` means OpenJDK as published on [jdk.java.net](https://jdk.java.net/), and its installed name has no suffix (`21.0.2+13`). That site carries the newest releases and the last build of older ones: 17 stops at `17.0.2`, 21 at `21.0.2`. So `vfox install java@17.0.17` fails, while `java@17.0.17-tem` works. For a release that is still maintained, name a distribution. @@ -25,14 +23,14 @@ The distribution is a short name (`tem`) or a long name (`temurin`). Both lists `vfox install` asks the plugin which package matches, then vfox downloads and unpacks it. -- A bare major (`21`, `21-tem`) installs the newest release of that major the distribution lists, for example `21.0.12.1+1-tem` on 2026-10-18. Unreleased: 0.6.1 installed the first GA build, `21+35-tem`. +- A bare major (`21`, `21-tem`) installs the newest release of that major the distribution lists, for example `21.0.12.1+1-tem` on 2026-10-18. - A longer version must match a release the distribution lists. `21.0.8-tem` installs `21.0.8+9-tem`, the newest build of 21.0.8. A release nobody published fails with `No JDK found for 21.0.99-tem on linux/amd64`. -- A build number selects that build: `21.0.5+63130-jb`. Unreleased: 0.6.1 installed the newest build of the release instead. +- A build number selects that build: `21.0.5+63130-jb`. - A release padded with zeros, as SDKMAN writes it, is accepted: `27.0.0-librca` installs `27+36-librca`. -- Oracle GraalVM's bare major installs the newest build of its 25.0 line, not one of the monthly feature releases, which have to be named in full (`25.4.4.1-graal`). See [GraalVM](distributions.md#graalvm-family). Unreleased: 0.6.1 installed the GA build, `25-graal`. +- Oracle GraalVM's bare major installs the newest build of its 25.0 line, not one of the monthly feature releases, which have to be named in full (`25.4.4.1-graal`). See [GraalVM](distributions.md#graalvm-family). - With `-fx` only JavaFX builds are considered, without it only builds without JavaFX. The two are never mixed. - On Windows a release shipped as zip and as tar.gz installs from the zip. -- A distribution without a version (`java@tem`, `java@-tem`, `java@zulu-fx`) is rejected with a message that asks for one. Unreleased: 0.6.1 failed with a Lua error for `java@tem` and installed the newest release for `java@-tem`. +- A distribution without a version (`java@tem`, `java@-tem`, `java@zulu-fx`) is rejected with a message that asks for one. An install that finds the name already present prints `java@21.0.12.1+1-tem is already installed` and downloads nothing. @@ -75,8 +73,6 @@ vfox uninstall java@21.0.8+9-tem If you name a build or a release, it does not cross over to another one (`21.0.12-tem` does not select `21.0.12.1+1-tem`). It does not cross to another distribution, between JavaFX and plain, or between early-access and GA either. A name that matches nothing is reported as `java@99-tem is not installed`. -Unreleased: 0.6.1 passed what you typed on as it was, so `vfox use java@21.0.8-tem` found nothing and needed the full name, `21.0.8+9-tem`. The same goes for the `-open` and `openjdk-` spellings and for zero-padded releases. Under vfox 1.0.13 and later, `vfox use java@21` and `java@21-open` fail outright with 0.6.1, with `cannot unmarshal string into plugin.PreUseHookResult`, because it answers a bare major with an empty string. - Pick the scope with `vfox use`'s flags: `--global`, `--project` or `--session`, the default. In a shell without vfox's hook, Windows switches to the global scope with a warning, while Linux and macOS stop with `vfox requires hook support`. `--project` writes a `.vfox.toml` that holds the installed name (`java = "17.0.10+7-tem"`). A `.sdkmanrc` is read as well, see [sdkmanrc.md](sdkmanrc.md). ## Early-access builds @@ -88,8 +84,6 @@ vfox install java@28.ea-open # newest early-access build, 28-ea+19 on 2026 vfox install java@28.ea.15-open # 28-ea+15 ``` -Unreleased: 0.6.1 ignores the build number and installs the newest early-access build. - The installed name uses Foojay's spelling, `28-ea+19`, and `vfox use java@28-ea+19` takes it as it is. `vfox search` lists GA releases only. Foojay lists early-access builds for OpenJDK, Temurin, Zulu, SapMachine, GraalVM and GraalVM Community, among others. Vendors remove old ones from their servers while Foojay keeps the record, so an old build may fail to download. ## Searching @@ -117,4 +111,4 @@ The list holds what exists for the machine you run it on, see [platforms.md](pla `vfox install java tem` does not select Temurin: arguments separated by spaces are several SDKs. Write `java@21-tem`. -The LTS note is Foojay's, except that GraalVM's monthly feature releases (`25.4.4.1-graal`) carry none, though Foojay marks them LTS. Unreleased: 0.6.1 still adds the note. +The LTS note is Foojay's, except that GraalVM's monthly feature releases (`25.4.4.1-graal`) carry none, though Foojay marks them LTS. diff --git a/docs/zh-CN/changes.md b/docs/zh-CN/changes.md index a94e377..6182f40 100644 --- a/docs/zh-CN/changes.md +++ b/docs/zh-CN/changes.md @@ -2,19 +2,19 @@ [中文](changes.md) | [English](../changes.md) -按发布版本列出用户能感受到的变化。GitHub 的 Release 页面列出了对应的 PR。写这篇文档时最新的发布版是 0.6.1,`main` 比它多出“未发布”下面的所有内容。想现在就用上这些变化,见 [install-from-source.md](install-from-source.md)。 +按发布版本列出用户能感受到的变化。GitHub 的 Release 页面列出了对应的 PR。 -## 未发布 +## 0.6.2(2026-10-18) - `.sdkmanrc` 在 vfox 1.x 下重新可用。0.6.1 在 vfox 1.x 下会报 `expected 0 arguments for func() []string, got 1`(测试过 1.0.12 和 1.0.13),但 vfox 不会把这个错误显示出来([#65](https://github.com/version-fox/vfox-java/pull/65))。 - 只写大版本号的 `vfox use java@21` 在 vfox 1.0.13 下可用。0.6.1 在那里会报 `cannot unmarshal string into plugin.PreUseHookResult`([#65](https://github.com/version-fox/vfox-java/pull/65))。 - `.sdkmanrc` 能匹配 SDKMAN 的 `jbr` 和 JavaFX 标识符([#78](https://github.com/version-fox/vfox-java/pull/78))、补零的版本([#85](https://github.com/version-fox/vfox-java/pull/85))和 EA 标识符([#88](https://github.com/version-fox/vfox-java/pull/88)、[#96](https://github.com/version-fox/vfox-java/pull/96))。同一大版本装了多个 JDK 时,会选中文件里指明的那个([#84](https://github.com/version-fox/vfox-java/pull/84))。见 [sdkmanrc.md](sdkmanrc.md)。 - 只写大版本号时,安装最新的版本。`java@21-tem` 装的是 `21.0.12.1+1-tem`,不再是 `21+35-tem`([#74](https://github.com/version-fox/vfox-java/pull/74))。`java@25-graal` 装的是 25.0 系列的最新构建 `25.0.4.1-graal`,0.6.1 装的是 `25-graal`([#101](https://github.com/version-fox/vfox-java/pull/101))。 - `vfox use java@21.0.8-tem` 能找到已安装的 `21.0.8+9-tem`([#76](https://github.com/version-fox/vfox-java/pull/76))。带 `-open` 或 `openjdk-` 的 OpenJDK 名字([#77](https://github.com/version-fox/vfox-java/pull/77))和补零的版本([#92](https://github.com/version-fox/vfox-java/pull/92))同样如此。 -- `java@21.0.5+63130-jb` 装的是它指明的那个构建,不再是这个版本的最新构建([#83](https://github.com/version-fox/vfox-java/pull/83))。 +- `java@21.0.5+63130-jb` 和 `java@28.ea.15-open` 装的是它们指明的那个构建,不再是这个版本的最新构建([#83](https://github.com/version-fox/vfox-java/pull/83))。 - Windows 上的 `vfox search` 会列出只提供 tar.gz 的版本([#81](https://github.com/version-fox/vfox-java/pull/81))。 - 插件不再设置 `GRAALVM_HOME`([#93](https://github.com/version-fox/vfox-java/pull/93))。 -- `java@tem` 这种只写发行版的写法会提示补上版本,不再报 Lua 错误([#99](https://github.com/version-fox/vfox-java/pull/99))。 +- `java@tem`、`java@-tem` 这种只写发行版的写法会提示补上版本。0.6.1 对前者报 `attempt to index a non-table object(nil) with key 'match'`,对后者则装上最新版本([#99](https://github.com/version-fox/vfox-java/pull/99))。 - `vfox search` 不再把 GraalVM 每月发布的特性版本标成 LTS([#100](https://github.com/version-fox/vfox-java/pull/100))。 - 仓库有了覆盖 Linux 和 Windows 的容器 e2e 套件,见 [e2e.md](e2e.md)([#65](https://github.com/version-fox/vfox-java/pull/65)、[#82](https://github.com/version-fox/vfox-java/pull/82))。 diff --git a/docs/zh-CN/development.md b/docs/zh-CN/development.md index 4246b6c..dd53847 100644 --- a/docs/zh-CN/development.md +++ b/docs/zh-CN/development.md @@ -125,7 +125,7 @@ id 是 Foojay 的(`oracle_open_jdk` 对应 `open`)。“只有部分版本 维护者在默认分支上执行 **Actions → Plugin → Run workflow**,填入不带 `v` 的版本号。共享工作流具体做什么,README 里有说明。发布之后,[vfox-plugins](https://github.com/version-fox/vfox-plugins) 里的 `plugins/java.json` 会显示 `vfox add java` 提供的是哪个版本。 -文档里用“未发布”(英文是“Unreleased”)标记比最新发布版更新的内容。发布之后,把 [changes.md](changes.md) 里的这些条目移到新版本下面,并去掉这些标注,两种语言都要处理:`grep -rn -i -e unreleased -e 未发布 docs README*`。 +文档里用“未发布”(英文是“Unreleased”)标记比最新发布版更新的内容。发布之后,把 [changes.md](changes.md) 里的这些条目移到新版本下面,并去掉这些标注,两种语言都要处理:`grep -rn -i -e unreleased -e 未发布 docs README*`。上一个发布版的版本号也要搜一遍:有几句话是拿它做对比的,没有写“未发布”。 ## 编写文档 diff --git a/docs/zh-CN/distributions.md b/docs/zh-CN/distributions.md index ab62573..616eeb7 100644 --- a/docs/zh-CN/distributions.md +++ b/docs/zh-CN/distributions.md @@ -101,17 +101,17 @@ Mandrel 和 Liberica NIK 在 24 及以前用自己的版本号体系(Mandrel ### Oracle GraalVM 与 GraalVM 社区版的行为 -- 从 25.1(2026 年 6 月)起,GraalVM 在 25.0 系列之外每月发布一个特性版本(feature release):`25.1.3`、`25.2.4`、`25.3.4.1`、`25.4.4.1`,每个大约一个月后就被下一个取代。它们基于的 JDK 是 LTS,所以 Foojay 也把它们标成了 LTS,而 `vfox search` 不给它们加 LTS 备注。未发布:0.6.1 仍会加上这个备注。 -- `java@25-graal` 装的是 25.0 系列的最新构建(`25.0.4.1-graal`),Oracle 官方的 `25/latest` 下载链接跟的也是这个系列。特性版本要写全版本号:`java@25.4.4.1-graal`。未发布:0.6.1 装的是 GA 构建 `25-graal`。 -- GraalVM 社区版的 25.0 系列到 `25.0.2` 为止,现在只发布特性版本。`java@25-graalce` 装其中最新的一个,截至 2026-10-18 是 `25.4.4.1-graalce`。未发布:0.6.1 装的是 GA 构建 `25-graalce`。 -- 插件只设置 `JAVA_HOME` 和 `PATH`,不设置 `GRAALVM_HOME`。你设置的、指向自己的 GraalVM 的 `GRAALVM_HOME` 保持原样;没有设置时,native-image 的构建插件会回退到 `JAVA_HOME`。未发布:0.6.1 会为 `graal` 和 `graalce` 设置 `GRAALVM_HOME`,覆盖你原来的值。 +- 从 25.1(2026 年 6 月)起,GraalVM 在 25.0 系列之外每月发布一个特性版本(feature release):`25.1.3`、`25.2.4`、`25.3.4.1`、`25.4.4.1`,每个大约一个月后就被下一个取代。它们基于的 JDK 是 LTS,所以 Foojay 也把它们标成了 LTS,而 `vfox search` 不给它们加 LTS 备注。 +- `java@25-graal` 装的是 25.0 系列的最新构建(`25.0.4.1-graal`),Oracle 官方的 `25/latest` 下载链接跟的也是这个系列。特性版本要写全版本号:`java@25.4.4.1-graal`。 +- GraalVM 社区版的 25.0 系列到 `25.0.2` 为止,现在只发布特性版本。`java@25-graalce` 装其中最新的一个,截至 2026-10-18 是 `25.4.4.1-graalce`。 +- 插件只设置 `JAVA_HOME` 和 `PATH`,不设置 `GRAALVM_HOME`。你设置的、指向自己的 GraalVM 的 `GRAALVM_HOME` 保持原样;没有设置时,native-image 的构建插件会回退到 `JAVA_HOME`。 - 没有 Windows ARM64 和 Alpine 的构建,Intel Mac 上 25.0.1 之后的版本也没有。见 [platforms.md](platforms.md#graalvm)。 ## 其他 ### JetBrains Runtime(`jb`) -JetBrains 各 IDE 运行所用的 [OpenJDK 分支](https://github.com/JetBrains/JetBrainsRuntime)。覆盖 Java 11、17、21 和 25。在 Windows 上,有些版本只提供 tar.gz,插件可以安装,`vfox search` 也会列出。未发布:0.6.1 的 `vfox search` 不会列出它们。 +JetBrains 各 IDE 运行所用的 [OpenJDK 分支](https://github.com/JetBrains/JetBrainsRuntime)。覆盖 Java 11、17、21 和 25。在 Windows 上,有些版本只提供 tar.gz,插件可以安装,`vfox search` 也会列出。 ### TravaOpenJDK(`trava`) diff --git a/docs/zh-CN/foojay.md b/docs/zh-CN/foojay.md index 1203134..250684b 100644 --- a/docs/zh-CN/foojay.md +++ b/docs/zh-CN/foojay.md @@ -34,11 +34,9 @@ https://api.foojay.io/disco/v3.0/packages/jdks 不加 `latest=available` 时,`version=21` 只匹配 21 的 GA 构建(`21+35`);加上之后,Foojay 会挑出最新的 21.x,`java@21-tem` 装的就是它。更具体的版本则按原样匹配。 -未发布:0.6.1 发送的 `+` 不做编码,也从不加 `latest=available`(所以 `java@21-tem` 装的是 `21+35-tem`),在 Windows 上只请求 `zip`,没有结果时才退回 `tar.gz`。 - 返回的是一个包列表。插件用 `java_version` 给版本命名;`javafx_bundled` 为真时加上 `-fx`;`term_of_support` 是 `lts` 时标注 LTS;在 Windows 上,同一版本既有 `zip` 又有 `tar.gz` 时优先用 `zip`。安装时,插件再取这个包的 `links.pkg_info_uri`,并从其中的 `direct_download_uri` 下载,那是厂商自己的服务器(Temurin 是 GitHub Releases)。这条记录里还有 `checksum`,但插件没有把它交给 vfox,所以 vfox 会打印 `WARNING: Checksum is not provided, skip verify...`,下载内容不做校验。 -`vfox search` 与原始列表有几处不同:Foojay 里同一个名字有两条记录时,它只列一次;不给 GraalVM 的特性版本加 LTS 备注(未发布:见 [distributions.md](distributions.md#oracle-graalvm-与-graalvm-社区版的行为));只列 GA 版本。 +`vfox search` 与原始列表有几处不同:Foojay 里同一个名字有两条记录时,它只列一次;不给 GraalVM 的特性版本加 LTS 备注(见 [distributions.md](distributions.md#oracle-graalvm-与-graalvm-社区版的行为));只列 GA 版本。 ## 我的平台上有哪些发行版 diff --git a/docs/zh-CN/install-from-source.md b/docs/zh-CN/install-from-source.md index 4307c8e..eee1e6c 100644 --- a/docs/zh-CN/install-from-source.md +++ b/docs/zh-CN/install-from-source.md @@ -2,7 +2,7 @@ [中文](install-from-source.md) | [English](../install-from-source.md) -`vfox add java` 安装的是最新的发布版。`main` 上有尚未发布的修复([changes.md](changes.md)),你正在改的代码也不在任何发布版里。插件就是一个 `metadata.lua` 加上 `hooks` 和 `lib` 两个目录,vfox 可以从它们的 zip 包添加插件。 +`vfox add java` 安装的是最新的发布版。想在下一个版本发布之前用上 `main`,或者试用你正在改的代码,就从源码构建插件。插件就是一个 `metadata.lua` 加上 `hooks` 和 `lib` 两个目录,vfox 可以从它们的 zip 包添加插件。 ## Ubuntu 26.04 @@ -40,7 +40,7 @@ vfox use --global java@21-tem java -version ``` -用 `main` 构建出的插件装的是最新的 Temurin 21(截至 2026-10-18 是 `21.0.12.1+1-tem`);0.6.1 装的是 `21+35-tem`,也就是 21 的第一个构建。 +`vfox install java@21-tem` 装的是最新的 Temurin 21,截至 2026-10-18 是 `21.0.12.1+1-tem`。 ## 已经添加过 java 时 diff --git a/docs/zh-CN/sdkmanrc.md b/docs/zh-CN/sdkmanrc.md index dcf3d4c..2f58f89 100644 --- a/docs/zh-CN/sdkmanrc.md +++ b/docs/zh-CN/sdkmanrc.md @@ -11,8 +11,6 @@ java=21.0.8-tem 只读取 `java=` 这一行。其他行,例如 `maven=3.9.9`,与这个插件无关。 -> 未发布:0.6.1 在 vfox 1.x 下读不了 `.sdkmanrc`。它的钩子调用了 `ctx:getInstalledVersions()`,所有 vfox 1.x 都会拒绝这种调用(测试过 1.0.12 和 1.0.13),报 `expected 0 arguments for func() []string, got 1`,而 vfox 又不会显示这个错误,所以看上去什么都没发生。`main` 已修复,并且支持 SDKMAN 更多的写法(`jbr`、JavaFX、补零、EA),也能在同一大版本装了多个 JDK 时选对。可以用 [install-from-source.md](install-from-source.md) 先试用,详情见 [changes.md](changes.md)。 - ## 使用方法 ```bash diff --git a/docs/zh-CN/troubleshooting.md b/docs/zh-CN/troubleshooting.md index cb38422..c54c4a9 100644 --- a/docs/zh-CN/troubleshooting.md +++ b/docs/zh-CN/troubleshooting.md @@ -16,7 +16,7 @@ Foojay 在这个平台上没有对应的包:版本、发行版、带不带 Jav ### `No version in tem; add one, such as 21-tem. Please check available versions with 'vfox search java tem'` -`java@` 后面只有发行版,没有版本。`java@-tem`、`java@temurin-` 和 `java@zulu-fx` 都属于这种情况。未发布:0.6.1 对 `java@tem` 会报 `attempt to index a non-table object(nil) with key 'match'`,对 `java@-tem` 则会装上最新版本。 +`java@` 后面只有发行版,没有版本。`java@-tem`、`java@temurin-` 和 `java@zulu-fx` 都属于这种情况。 ### `Could not extract a valid distribution: 21-foo` @@ -65,7 +65,7 @@ vfox config proxy.url http://127.0.0.1:7890 - **每次安装都有 `WARNING: Checksum is not provided, skip verify...`。** 插件没有把校验和交给 vfox,所以下载内容没有校验,见 [foojay.md](foojay.md#插件发出的请求)。 - **安装后的版本名里多了一个你没写的构建号。** `java@21.0.8-tem` 装出来是 `21.0.8+9-tem`。构建号是版本名的一部分,见 [versions.md](versions.md#安装后的版本名)。 - **`vfox install java@21-tem` 和 `vfox install java tem` 做的是不同的事。** 后者是两个 SDK,`java` 和 `tem`。 -- **你设置的 `GRAALVM_HOME` 不会被改动。** 插件只设置 `JAVA_HOME` 和 `PATH`。未发布:0.6.1 对 GraalVM 会把它替换掉。 +- **你设置的 `GRAALVM_HOME` 不会被改动。** 插件只设置 `JAVA_HOME` 和 `PATH`。 ## JDK 在哪里 diff --git a/docs/zh-CN/versions.md b/docs/zh-CN/versions.md index 47bb759..1a3baf9 100644 --- a/docs/zh-CN/versions.md +++ b/docs/zh-CN/versions.md @@ -15,8 +15,6 @@ vfox install java@21 # 不写发行版:jdk.java.net 上的 Open 发行版可以写简称(`tem`)或长名(`temurin`),两份名单都在 [distributions.md](distributions.md)。`-fx` 放在最后,表示要带 JavaFX 的构建,见 [javafx.md](javafx.md)。 -> 本页描述的是 `main`。写这篇文档时最新的发布版是 0.6.1,它在下文标有“未发布”的地方与本页不同,完整列表见 [changes.md](changes.md)。 - ## 不写发行版 `java@21` 指 [jdk.java.net](https://jdk.java.net/) 上发布的 OpenJDK,安装后的版本名不带后缀(`21.0.2+13`)。这个站点只提供最新的几个版本,旧版本只留最后一个构建:17 停在 `17.0.2`,21 停在 `21.0.2`。所以 `vfox install java@17.0.17` 会失败,`java@17.0.17-tem` 才能装上。要用仍在维护的版本,请指定发行版。 @@ -25,14 +23,14 @@ vfox install java@21 # 不写发行版:jdk.java.net 上的 Open `vfox install` 先问插件该装哪个包,再由 vfox 下载并解压。 -- 只写大版本号(`21`、`21-tem`)时,安装这个发行版列出的、这个大版本下最新的版本,例如截至 2026-10-18 是 `21.0.12.1+1-tem`。未发布:0.6.1 装的是第一个 GA 构建 `21+35-tem`。 +- 只写大版本号(`21`、`21-tem`)时,安装这个发行版列出的、这个大版本下最新的版本,例如截至 2026-10-18 是 `21.0.12.1+1-tem`。 - 写得更具体时,必须是这个发行版列出的版本。`21.0.8-tem` 装的是 21.0.8 的最新构建 `21.0.8+9-tem`。根本不存在的版本会失败,报 `No JDK found for 21.0.99-tem on linux/amd64`。 -- 写了构建号就装那个构建:`21.0.5+63130-jb`。未发布:0.6.1 会改装这个版本的最新构建。 +- 写了构建号就装那个构建:`21.0.5+63130-jb`。 - SDKMAN 写法里补了零的版本也能识别:`27.0.0-librca` 装的是 `27+36-librca`。 -- Oracle GraalVM 只写大版本号时,装 25.0 系列的最新构建,不装每月发布的特性版本(feature release)。特性版本要写全版本号(`25.4.4.1-graal`)。见 [GraalVM](distributions.md#graalvm-系列)。未发布:0.6.1 装的是 GA 构建 `25-graal`。 +- Oracle GraalVM 只写大版本号时,装 25.0 系列的最新构建,不装每月发布的特性版本(feature release)。特性版本要写全版本号(`25.4.4.1-graal`)。见 [GraalVM](distributions.md#graalvm-系列)。 - 写了 `-fx` 就只考虑带 JavaFX 的构建,没写就只考虑不带的,两者不会混用。 - 在 Windows 上,同一版本既有 zip 又有 tar.gz 时,装 zip。 -- 只写发行版不写版本(`java@tem`、`java@-tem`、`java@zulu-fx`)会被拒绝,并提示补上版本。未发布:0.6.1 对 `java@tem` 报 Lua 错误,对 `java@-tem` 则装上最新版本。 +- 只写发行版不写版本(`java@tem`、`java@-tem`、`java@zulu-fx`)会被拒绝,并提示补上版本。 如果这个版本名已经装过,会提示 `java@21.0.12.1+1-tem is already installed`,不会重新下载。 @@ -75,8 +73,6 @@ vfox uninstall java@21.0.8+9-tem 写明了构建或版本时,不会跳到别的构建或版本(`21.0.12-tem` 不会选中 `21.0.12.1+1-tem`)。也不会跨发行版,不会在带 JavaFX 和不带 JavaFX 的构建之间串用,不会在 EA 和 GA 之间串用。什么都匹配不上时,报 `java@99-tem is not installed`。 -未发布:0.6.1 把输入原样交给 vfox,所以 `vfox use java@21.0.8-tem` 找不到,必须写完整名字 `21.0.8+9-tem`。`-open`、`openjdk-` 写法和补零的版本同理。在 vfox 1.0.13 及以后,0.6.1 上的 `vfox use java@21` 和 `java@21-open` 会直接报错 `cannot unmarshal string into plugin.PreUseHookResult`,因为它对只写大版本号的输入返回了空字符串。 - 作用域用 `vfox use` 的参数选择:`--global`、`--project` 或 `--session`,默认是会话作用域。如果 Shell 没有挂载 vfox,Windows 会警告并切到全局作用域,Linux 和 macOS 则报 `vfox requires hook support` 后退出。`--project` 会写出 `.vfox.toml`,里面记录的是安装后的版本名(`java = "17.0.10+7-tem"`)。`.sdkmanrc` 也会被读取,见 [sdkmanrc.md](sdkmanrc.md)。 ## 早期访问(EA)构建 @@ -88,8 +84,6 @@ vfox install java@28.ea-open # 最新的 EA 构建,截至 2026-10-18 是 vfox install java@28.ea.15-open # 28-ea+15 ``` -未发布:0.6.1 会忽略构建号,装的总是最新的 EA 构建。 - 安装后的版本名沿用 Foojay 的写法 `28-ea+19`,`vfox use java@28-ea+19` 按原样识别。`vfox search` 只列 GA 版本。Foojay 列有 EA 构建的发行版包括 OpenJDK、Temurin、Zulu、SapMachine、GraalVM 和 GraalVM 社区版等。厂商会把旧的 EA 构建从服务器上撤掉,而 Foojay 仍保留记录,所以较旧的构建可能下载失败。 ## 搜索 @@ -117,4 +111,4 @@ Available versions: `vfox install java tem` 选的不是 Temurin:用空格分隔的参数表示多个 SDK。请写 `java@21-tem`。 -LTS 备注来自 Foojay,唯独 GraalVM 每月发布的特性版本(`25.4.4.1-graal`)不带这个备注,尽管 Foojay 把它们标成了 LTS。未发布:0.6.1 仍会给它们加上 LTS 备注。 +LTS 备注来自 Foojay,唯独 GraalVM 每月发布的特性版本(`25.4.4.1-graal`)不带这个备注,尽管 Foojay 把它们标成了 LTS。