5. Tools and languages

5.2 Several versions of the same tool

Keeping PHP 8.3 and 8.4 or Node 20 and 24 side by side: adding, removing, pinned versions and which one the kit uses.

In the app: «Tools»

In short

  • Languages and servers can have several versions installed together, one per minor version (8.3, 8.4…).
  • The kit always uses the newest one on disk; each project can choose another one on its page.
  • A version used by a project is “locked”: it cannot be removed while the project uses it.
  • “Update all” brings every version to the latest patch (8.4.1 → 8.4.3) without removing any.

A component's versions

In the tab's “Versions” section (or under the row, in the table) there is a row for each version on disk, for example “8.4 (8.4.3)”, with some labels:

LabelMeaning
latestIt is the newest version offered by the source.
locked (padlock)Some projects use it: the “Used by” menu says which ones. It cannot be removed.
not for …Another component is not compatible with this version (for example an extension that does not support it).
trash can “Remove …”Removes that version. It appears only if there are at least two: the last one is removed with the component's checkbox.
  1. To add a version, press + “Add a version of …”: the “Versions to download” menu groups them (8.x, 7.x…).
  2. Choose the version: the download starts and the row appears in grey until it is ready.
  3. If the list seems old, “Look for other versions of …” asks the source for it again.

Special cases

  • Composer follows PHP: there is one copy for each PHP version, compatible with it; it is installed, updated and removed with PHP.
  • Maven and Gradle follow Java and appear as labels on the version's row.
  • MySQL and MongoDB: each version has its own data and its own port, which stays its own even when you change the server's version; see the Databases page.
  • Python and PHP: a new installation takes the newest line; the other lines are downloaded from this menu and each project chooses its own. Settings no longer has a version choice (the pythonVersion and phpVersion values of an older settings.json are ignored).
  • Rust, only on Windows: on its page, “Details” section, “Rust compiler” chooses GNU (default, all in the kit) or MSVC, which requires Visual Studio Build Tools on the PC. It applies from the next install or update of Rust. On macOS and Linux Rust has a single compiler and the setting does not appear.
Under the hood
  • Each version lives in its own folder: data\apps\<system>\<component>\<minor version>, with the full version in the .atollo-version file.
  • The lists of offered versions are in data\app\version-lines.json, refreshed when they are more than 24 hours old.
  • On Windows PHP also offers the last builds of versions no longer supported (8.1, 8.0, 7.4…), useful for old projects; on macOS and Linux only those with a build pinned by the kit.