Skip to content

Commit fb35c66

Browse files
luispedroclaude
andcommitted
RLS Version 1.6.0
First stable release of the 1.6 series (previous 1.6 builds were betas). - Cargo.toml / src/lib.rs (VERSION_STR_LONG, DATE_STR, and the matching unit test) / docs conf.py / pixi.toml / CLAUDE.md: version -> 1.6.0, release date 4 August 2026. `--version` now reports "ngless v1.6.0 (release date: 4 August 2026)". - ChangeLog: rename the Unreleased block to Version 1.6.0, with a lead-in pointing at the beta1/beta2 blocks for the full delta against 1.5.0. - docs/sources/whatsnew.rst: retitle from a beta note to "Released on August 4 2026". Promote the two post-beta2 changes that are new relative to 1.5.0 (the early output-directory check and the module-import error listing searched locations) into the user-facing list; fold the rest, which restore 1.5 behaviour the betas had not ported, into a section covering both pre-releases. Install docs: 1.6.0 goes to bioconda, so drop the pre-release workaround of pinning the .conda package by URL. pixi_install_ngless.toml now depends on `ngless = ">=1.6.0,<2"` only -- the external tools (bwa, samtools, minimap2, megahit, prodigal) come in as dependencies of the bioconda package, so they no longer need to be listed. README.md and docs/sources/install.md are reworded from "Beta releases (via pixi)" to "Using pixi" to match. This also fixes the README manifest snippet, which had been missing its closing brace since the 1.6.0-beta2 release commit and was therefore invalid TOML. Also remove the Docker and statically-linked-binary sections from both README.md and docs/sources/install.md: they pointed at 1.4.2/1.5.0 artifacts and claimed the download "bundles bwa, samtools and megahit", which is not true of the Rust build (no external tools are embedded). Retarget the README release-docs link from 1.5.0 to 1.6.0, and correct the functional test count in CLAUDE.md from 99 to 108. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0166PqYxwN7gA91X5RH6zzdq
1 parent b734ee1 commit fb35c66

10 files changed

Lines changed: 77 additions & 113 deletions

File tree

CLAUDE.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ root (`Cargo.toml`, `src/`) is the sole, supported implementation. Many doc comm
1616
are **stale** — they still describe features as "deferred to a later milestone" or "a scaffold"
1717
even where the Rust code fully implements them. Do not trust those; treat the Rust code as the
1818
full implementation. `rust-migration.md` is the most
19-
accurate status doc (all 99 functional tests pass against the Rust binary). Current crate
20-
version is `1.6.0-beta2` (see `Cargo.toml`).
19+
accurate status doc (all 108 functional tests pass against the Rust binary). Current crate
20+
version is `1.6.0` (see `Cargo.toml`), released 4 August 2026 — the first stable release of
21+
the 1.6 series.
2122

2223
## Build & test
2324

@@ -31,7 +32,7 @@ cargo fmt --all -- --check # formatting is enforced in CI
3132
Functional test suite (the primary correctness bar):
3233

3334
```sh
34-
NGLESS_BIN=target/release/ngless ./run-tests.sh # all 99 tests
35+
NGLESS_BIN=target/release/ngless ./run-tests.sh # all 108 tests
3536
NGLESS_BIN=target/release/ngless ./run-tests.sh regression # only tests/regression*
3637
```
3738

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ngless"
3-
version = "1.6.0-beta2"
3+
version = "1.6.0"
44
edition = "2021"
55
description = "NGLess: NGS processing with Less work — a domain-specific language for next-generation sequencing data"
66
license = "MIT"

ChangeLog

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
Unreleased
1+
Version 1.6.0 2026-08-04 by luispedro
2+
3+
This is the first stable release of the 1.6 series. See the 1.6.0-beta2 and
4+
1.6.0-beta1 entries below for the full set of changes with respect to 1.5.0;
5+
the most important one is that NGLess is now based on a new implementation
6+
written in Rust and supports a single language version, "1.6".
27

38
Changes with respect to 1.6.0-beta2:
49
* Fixed the `encoding` argument to `fastq()` and `paired()` (and forwarded

README.md

Lines changed: 11 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -57,57 +57,29 @@ The recommended way to install NGLess is through
5757

5858
conda install -c bioconda ngless
5959

60-
### Beta releases (via pixi)
60+
### Using pixi
6161

62-
Pre-release/beta builds are published as `.conda` packages on the [GitHub
63-
releases page](https://github.com/ngless-toolkit/ngless/releases) before they
64-
reach bioconda. The easiest way to install one (together with the external tools
65-
NGLess drives) is with [pixi](https://pixi.sh) and a manifest that pins the beta
66-
package by URL. The [`pixi_install_ngless.toml`](pixi_install_ngless.toml) file
67-
in this repository is a ready-to-use example:
62+
[pixi](https://pixi.sh) is an alternative to conda that installs NGLess into a
63+
self-contained, per-project environment. The external tools NGLess drives (bwa,
64+
minimap2, samtools, prodigal, megahit) are dependencies of the bioconda package,
65+
so they are pulled in automatically. The
66+
[`pixi_install_ngless.toml`](pixi_install_ngless.toml) file in this repository is
67+
a ready-to-use example:
6868

6969
[dependencies]
70-
prodigal = ">=2.6.3,<3"
71-
megahit = ">=1.2.9,<2"
72-
samtools = ">=1.23.1,<2"
73-
minimap2 = ">=2.31,<3"
74-
bwa = ">=0.7.19,<0.8"
75-
ngless = { url = "https://github.com/ngless-toolkit/ngless/releases/download/v1.6.0-beta2/ngless-1.6.beta2-ha35fb5c_0.conda"
70+
ngless = ">=1.6.0,<2"
7671

7772
pixi only reads a manifest named exactly `pixi.toml`, so copy the example into a
7873
fresh directory under that name:
7974

80-
mkdir ngless-beta && cp pixi_install_ngless.toml ngless-beta/pixi.toml
81-
cd ngless-beta
75+
mkdir ngless-env && cp pixi_install_ngless.toml ngless-env/pixi.toml
76+
cd ngless-env
8277

8378
Then install and run it with:
8479

8580
pixi install
8681
pixi run ngless --version
8782

88-
### Docker
89-
90-
Alternatively, a docker container with NGLess is available at
91-
[docker hub](https://hub.docker.com/r/nglesstoolkit/ngless):
92-
93-
docker run -v $PWD:/workdir -w /workdir -it nglesstoolkit/ngless:1.5.0 ngless --version
94-
95-
Adapt the mount flags (``-v``) as needed.
96-
97-
### Linux
98-
99-
You can download a [statically linked version of NGless
100-
1.5.0](https://github.com/ngless-toolkit/ngless/releases/download/v1.5.0/NGLess-v1.5.0-Linux-static-full)
101-
102-
This should work across a wide range of Linux versions (please
103-
[report](https://github.com/ngless-toolkit/ngless/issues) any issues you encounter):
104-
105-
curl -L -O https://github.com/ngless-toolkit/ngless/releases/download/v1.5.0/NGLess-v1.5.0-Linux-static-full
106-
chmod +x NGLess-v1.5.0-Linux-static-full
107-
./NGLess-v1.5.0-Linux-static-full
108-
109-
This downloaded file bundles bwa, samtools and megahit (also statically linked).
110-
11183
### From Source
11284

11385
Installing/compiling from source is also possible. Clone
@@ -182,7 +154,7 @@ Haskell. Point the harness at the build via `NGLESS_BIN` (it needs the external
182154
- [Frequently Asked Questions (FAQ)](https://ngless.readthedocs.io/en/latest/faq.html)
183155
- [ngless mailing list](https://groups.google.com/forum/#!forum/ngless)
184156
- [What's new log](https://ngless.readthedocs.io/en/latest/whatsnew.html)
185-
- [NGless 1.5.0 Release Documentation](https://ngless.readthedocs.io/en/latest/whatsnew.html#version-1-5-0)
157+
- [NGless 1.6.0 Release Documentation](https://ngless.readthedocs.io/en/latest/whatsnew.html#version-1-6-0)
186158

187159
## Authors
188160

docs/sources/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
# |version| and |release|, also used in various other places throughout the
5555
# built documents.
5656

57-
release = '1.6.0-beta2'
57+
release = '1.6.0'
5858
version = '1.6'
5959

6060
# The language for content autogenerated by Sphinx. Refer to documentation

docs/sources/install.md

Lines changed: 6 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@ The recommended way to install NGLess is through
99

1010
This will install the most recent released version
1111

12-
## Beta releases (via pixi)
12+
## Using pixi
1313

14-
Pre-release/beta builds are published as `.conda` packages on the [GitHub
15-
releases page](https://github.com/ngless-toolkit/ngless/releases) before they
16-
reach bioconda. The easiest way to install one, together with the external tools
17-
that NGLess drives (`bwa`, `samtools`, `minimap2`, `megahit`, `prodigal`), is
18-
with [pixi](https://pixi.sh) and a manifest that pins the beta package by URL.
14+
[pixi](https://pixi.sh) is an alternative to conda that installs NGLess into a
15+
self-contained, per-project environment. The external tools that NGLess drives
16+
(`bwa`, `samtools`, `minimap2`, `megahit`, `prodigal`) are dependencies of the
17+
bioconda package, so they are pulled in automatically.
1918

2019
pixi only reads a manifest named exactly `pixi.toml`, so create a directory for
2120
the install and put the manifest there as `pixi.toml` (a ready-to-use copy ships
@@ -29,45 +28,13 @@ repository](https://github.com/ngless-toolkit/ngless/blob/master/pixi_install_ng
2928
version = "0.1.0"
3029

3130
[dependencies]
32-
prodigal = ">=2.6.3,<3"
33-
megahit = ">=1.2.9,<2"
34-
samtools = ">=1.23.1,<2"
35-
minimap2 = ">=2.31,<3"
36-
bwa = ">=0.7.19,<0.8"
37-
ngless = { url = "https://github.com/ngless-toolkit/ngless/releases/download/v1.6.0-beta2/ngless-1.6.beta2-ha35fb5c_0.conda" }
31+
ngless = ">=1.6.0,<2"
3832

3933
Then, from that directory, install and run it with:
4034

4135
pixi install
4236
pixi run ngless --version
4337

44-
Update the `url` to point at the beta release you want to install.
45-
46-
### Docker
47-
48-
Alternatively, a docker container with NGLess is available at
49-
[docker hub](https://hub.docker.com/r/nglesstoolkit/ngless):
50-
51-
docker run -v $PWD:/workdir -w /workdir -it nglesstoolkit/ngless:1.4.2 ngless --version
52-
53-
Adapt the mount flags (``-v``) as needed. You can use the `latest` tag to get a
54-
more up to date version as well.
55-
56-
57-
## Linux (binary)
58-
59-
You can download a [statically linked version of NGless
60-
1.4.2](https://github.com/ngless-toolkit/ngless/releases/download/v1.4.2/NGLess-v1.4.2-Linux-static-full).
61-
62-
This should work across a wide range of Linux versions (please
63-
[report](https://github.com/ngless-toolkit/ngless/issues) any issues you encounter):
64-
65-
curl -L -O https://github.com/ngless-toolkit/ngless/releases/download/v1.4.2/NGLess-v1.4.2-Linux-static-full
66-
chmod +x NGLess-v1.4.2-Linux-static-full
67-
./NGLess-v1.4.2-Linux-static-full
68-
69-
This downloaded file bundles bwa, samtools and megahit (also statically linked).
70-
7138
## From source
7239

7340
Since version 1.6, NGLess is written in [Rust](https://www.rust-lang.org/) and

docs/sources/whatsnew.rst

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ What's New (History)
55
Version 1.6.0
66
-------------
77

8-
*Beta release (1.6.0-beta2, released on July 4 2026).*
8+
*Released on August 4 2026*
99

1010
Starting with version 1.6, **NGLess is based on a new implementation written in
1111
Rust** (previous versions were written in Haskell). See `Rust implementation
@@ -53,25 +53,49 @@ deprecation warning.
5353
half-written file), recompresses paired output concurrently under ``--jobs``,
5454
and sorts directly to BAM when a ``samtools_sort`` result feeds a BAM
5555
``write()``.
56+
* Functions that take an output file now check the output directory *before* the
57+
script runs, even when the file name is only computed at run time (e.g.
58+
``ofile=OUTPUT_DIRECTORY </> sample.name() + '.fna.gz'``). Previously, a
59+
missing output directory was only reported once the write was reached, i.e.
60+
after mapping or assembly had already run.
61+
* When an ``import`` of a local module cannot be found, the error lists every
62+
location that was searched (and, if other versions of the module are
63+
available, lists those too). Under ``--trace``, each candidate is printed as
64+
it is checked.
5665

5766
For the complete list, see the ``ChangeLog``.
5867

59-
Changes with respect to 1.6.0-beta1
60-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61-
62-
If you were testing the earlier ``1.6.0-beta1`` pre-release:
63-
64-
* The build now supports only ``ngless "1.6"``; declaring ``"1.5"`` (which
65-
beta1 accepted with a warning) is now an error.
66-
* Removed the deprecated ``count()`` ``strand`` argument, the ``--search-dir``
67-
flag, and the unimplemented ``--check-deprecation`` flag.
68-
* The internal output hash (``auto_comments=[{hash}]`` and the parallel
69-
lock/stats directory names) changed its values; it remains deterministic and
70-
content-addressed.
71-
* beta2 also restores many features beta1 had not yet ported from earlier ngless
72-
versions: transparent ``.xz`` support, the HTML run report, parallel-module
73-
progress reporting, ``format={sam|bam}`` on ``write()``,
74-
``preprocess(keep_singles=False)``, reference-based ``count()``, and more.
68+
Changes with respect to the 1.6.0 pre-releases
69+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70+
71+
If you were testing the ``1.6.0-beta1`` or ``1.6.0-beta2`` pre-releases, note
72+
that the final release fixes several features that the pre-releases had not
73+
fully ported from 1.5:
74+
75+
* The ``encoding`` argument to ``fastq()``/``paired()`` (and, through them,
76+
``load_fastq_directory()``/``load_mocat_sample()``) is honoured again; the
77+
betas accepted it but always auto-detected the quality encoding.
78+
* External modules can declare ``references:`` again, so catalog modules such as
79+
``igc``, ``om-rgc``, and the gut-catalog modules resolve their bundled
80+
references in ``map()`` and ``count()``.
81+
* The distinction between global and local module imports is restored: a plain
82+
``import`` is again only accepted for known modules (which are auto-downloaded
83+
if not present locally), while a local-only module requires ``local import``.
84+
* External module commands see ``NGLESS_NR_CORES`` set to the configured worker
85+
thread count instead of a hard-coded 1.
86+
* Fixed a deadlock where ``map()`` could hang forever on samples where ``bwa
87+
mem`` writes a large amount of output to stderr.
88+
89+
Relative to beta1 specifically, beta2 had already made ``ngless "1.6"`` the only
90+
accepted language version (beta1 accepted ``"1.5"`` with a warning), removed the
91+
deprecated ``count()`` ``strand`` argument, the ``--search-dir`` flag and the
92+
unimplemented ``--check-deprecation`` flag, and restored transparent ``.xz``
93+
support, the HTML run report, parallel-module progress reporting,
94+
``format={sam|bam}`` on ``write()``, ``preprocess(keep_singles=False)`` and
95+
reference-based ``count()``. The internal output hash
96+
(``auto_comments=[{hash}]`` and the parallel lock/stats directory names) also
97+
changed its values between beta1 and beta2; it remains deterministic and
98+
content-addressed.
7599

76100

77101
Version 1.5.0

pixi.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ preview = ["pixi-build"]
99
[tasks]
1010

1111
[package]
12-
# For "normal" versions, this can come from Cargo.toml, but for pre-releases,
13-
# we need to specify it here because of difference conventions between Cargo
12+
# For "normal" versions such as this one, the version matches Cargo.toml. It only
13+
# needs to differ for pre-releases, because of different conventions between Cargo
1414
# and conda (-beta vs .beta).
15-
version = "1.6.beta2"
15+
version = "1.6.0"
1616

1717
[package.build]
1818
backend = { name = "pixi-build-rust", version = "*" }

pixi_install_ngless.toml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,4 @@ version = "0.1.0"
99

1010

1111
[dependencies]
12-
prodigal = ">=2.6.3,<3"
13-
megahit = ">=1.2.9,<2"
14-
samtools = ">=1.23.1,<2"
15-
minimap2 = ">=2.31,<3"
16-
bwa = ">=0.7.19,<0.8"
17-
ngless = { url = "https://github.com/ngless-toolkit/ngless/releases/download/v1.6.0-beta2/ngless-1.6.beta2-ha35fb5c_0.conda" }
12+
ngless = ">=1.6.0,<2"

src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ pub mod values;
5252
/// and `Execs/Main.hs`).
5353
pub mod version {
5454
pub const VERSION_STR: &str = "1.6.0";
55-
pub const VERSION_STR_LONG: &str = "1.6.0-beta2";
56-
pub const DATE_STR: &str = "4 July 2026";
55+
pub const VERSION_STR_LONG: &str = "1.6.0";
56+
pub const DATE_STR: &str = "4 August 2026";
5757
// The Rust build does not yet embed external tool binaries (samtools/bwa/...).
5858
pub const EMBEDDED_STR: &str = "No";
5959

@@ -290,7 +290,7 @@ mod tests {
290290
fn version_line_matches_haskell_format() {
291291
assert_eq!(
292292
version::version_line(),
293-
"ngless v1.6.0-beta2 (release date: 4 July 2026)"
293+
"ngless v1.6.0 (release date: 4 August 2026)"
294294
);
295295
}
296296

0 commit comments

Comments
 (0)