Skip to content

Commit 4a9153d

Browse files
Merge branch 'master' into patch-1
2 parents 316f392 + 9e3aeed commit 4a9153d

File tree

286 files changed

+16721
-4990
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

286 files changed

+16721
-4990
lines changed

.github/workflows/build.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,6 @@ jobs:
247247
with:
248248
fetch-depth: 0
249249
submodules: true
250-
ref: ${{ github.head_ref || github.ref_name }}
251250

252251
- name: Setup Java 17
253252
uses: actions/setup-java@v4

CLAUDE.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ The project follows a modular architecture with a plugin-based system for cloud
5050
- **Other**: nf-console (interactive interface), nf-cloudcache (cloud caching)
5151

5252
### Key Technologies
53-
- **Language**: Groovy 4.0.28 (Java-compatible, targeting Java 17)
53+
- **Language**: Groovy 4.0.29 (Java-compatible, targeting Java 17)
5454
- **Concurrency**: GPars 1.2.1 (Actor model, parallel/concurrent programming)
5555
- **Build**: Gradle with Java 21 toolchain
5656
- **Parsing**: ANTLR for Nextflow DSL
@@ -124,9 +124,17 @@ Follow these actions to make a new release:
124124
- Run `make releaseInfo` to update the version number and generate checksums.
125125
- Run this command to stage for commit the release files:
126126
```
127-
git add VERSION changelog.txt nextflow nextflow.md5 nextflow.sha1 nextflow.sha256 modules/nextflow/src/main/resources/META-INF/plugins-info.txt
127+
git add \
128+
VERSION \
129+
changelog.txt \
130+
nextflow \
131+
nextflow.md5 \
132+
nextflow.sha1 \
133+
nextflow.sha256 \
134+
modules/nextflow/src/main/resources/META-INF/plugins-info.txt \
135+
modules/nextflow/src/main/resources/META-INF/build-info.properties
128136
```
129-
- Make a commit using the `[release]` tag in the comment and push it upstream to trigger the release automation with GitHub action:
137+
- Make a commit using the `[release]` and `[e2e prod]` tags in the comment and push it upstream to trigger the release automation with GitHub action:
130138
```
131139
git commit -m "[release] Nextflow version 25.09.0-edge"
132140
git push origin master

Makefile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ install:
5757
BUILD_PACK=1 \
5858
./gradlew installLauncher publishToMavenLocal installPlugin
5959

60+
installScratch:
61+
BUILD_PACK=1 \
62+
./gradlew installScratch publishToMavenLocal installPlugin
63+
6064
#
6165
# Show dependencies try `make deps config=runtime`, `make deps config=google`
6266
#
@@ -133,4 +137,6 @@ dockerPack:
133137
release-plugins:
134138
./gradlew releasePluginToRegistryIfNotExists
135139

140+
publish-artifacts:
141+
./gradlew publishAllPublicationsToSeqeraRepository
136142

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
25.09.1-edge
1+
25.10.0

build.gradle

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ allprojects {
105105

106106
// Documentation required libraries
107107
groovyDoc 'org.fusesource.jansi:jansi:2.4.0'
108-
groovyDoc "org.apache.groovy:groovy-groovydoc:4.0.28"
109-
groovyDoc "org.apache.groovy:groovy-ant:4.0.28"
108+
groovyDoc "org.apache.groovy:groovy-groovydoc:4.0.29"
109+
groovyDoc "org.apache.groovy:groovy-ant:4.0.29"
110110
}
111111

112112
test {
@@ -202,12 +202,6 @@ task buildInfo {
202202
if (System.getenv('GITHUB_RUN_NUMBER')) {
203203
buildNum = System.getenv('GITHUB_RUN_NUMBER').toInteger()
204204
println "Using GitHub Actions run number: $buildNum"
205-
} else {
206-
def src = file0.text
207-
src.find(/build *= *([0-9]*)/) { buildNum = it[1]?.toInteger()+1 }
208-
if( !buildNum ) {
209-
println "WARN: Unable to find current build number"
210-
}
211205
}
212206

213207
// -- update build-info file
@@ -230,6 +224,7 @@ task buildInfo {
230224
* This task always runs to ensure all release artifacts are updated with current versions.
231225
*/
232226
task releaseInfo {
227+
dependsOn buildInfo
233228
// Always run this task - never consider it up-to-date
234229
outputs.upToDateWhen { false }
235230

@@ -462,6 +457,7 @@ configure(coreProjects) {
462457

463458
repositories {
464459
maven {
460+
name = 'Seqera'
465461
// change URLs to point to your repos, e.g. http://my.org/repo
466462
def releasesRepoUrl = "s3://maven.seqera.io/releases/"
467463
def snapshotsRepoUrl = "s3://maven.seqera.io/snapshots/"

changelog.txt

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,34 @@
11
NEXTFLOW CHANGE-LOG
22
===================
3+
25.10.0 - 22 Oct 2025
4+
- Add publish-artifacts step to release process [75d8ebf9b]
5+
- Add type checking utils (#6482) [3e9a2c091]
6+
- Fix no secrets in AWS Batch jobs (#6499) [c76c32582]
7+
- Prioritize Google Batch API exit codes with fallback to .exitcode file (#6498) [6ac2efcba]
8+
- Show workspace roles in 'auth status', tweak error message on 403 (#6497) [0633d90d1]
9+
- Simplify S3 configuration options (#6496) [0b7f18049]
10+
- Track remote input files in lineage (#6490) [b0660caf3]
11+
- Bump nf-amazon@3.4.1 [0d5ced94a]
12+
- Bump nf-google@1.23.3 [e6c765217]
13+
- Bump nf-tower@1.17.1 [2069c9729]
14+
15+
25.09.2-edge - 21 Oct 2025
16+
- Add .command.log redirection in K8s container command (#6455) [e6eed7949]
17+
- Add nextflow auth command for Seqera Platform authentication (#6463) [bedf02a99]
18+
- Add nextflow launch command (#6491) [7c8fa3d9d]
19+
- Bring workflow outputs out of preview (#6487) [c41677b40]
20+
- Fix e2e test infrastructure and add config.schema compatibility aliases (#6495) [d3cee2bab]
21+
- Fix false error for `executor.jobName` config option (#6375) [81ae62bf2]
22+
- Fix false error with storeDir and val outputs (#6408) [1aa8c4468]
23+
- Fix type casting in PluginSpec for ConfigScope (#6469) [b00644c9b]
24+
- Improve plugin create confirmation prompt (#6473) [215925c47]
25+
- Improve release script validation [3e3a938d6]
26+
- Limit S3 client connections when using virtual threads (#6369) [295c60b5c]
27+
- Migrate SraExplorer to use HxClient for HTTP operations (#6467) [84e3e7873]
28+
- Rename `config.schema` package to `config.spec` (#6485) [ef0d2d601]
29+
- Typed processes (#6368) [30f3c3c2a]
30+
- Update buildInfo on releaseInfo [46a8a2b53]
31+
332
25.09.1-edge - 9 Oct 2025
433
- Improve build metadata generation and validation [60225374f]
534
- Fix Missing static type definition [67a532040]

docs/developer/config-scopes.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ This page provides guidance on defining configuration scopes in the Nextflow run
88

99
The Nextflow configuration is defined as a collection of *scope classes*. Each scope class defines the set of available options, including their name, type, and an optional description for a specific configuration scope.
1010

11-
Scope classes are used to generate a configuration schema, which is in turn used for several purposes:
11+
Scope classes are used to generate a configuration spec, which is in turn used for several purposes:
1212

1313
- Validating config options at runtime (`nextflow run` and `nextflow config`)
1414

@@ -29,15 +29,15 @@ For example:
2929
```groovy
3030
package nextflow.hello
3131
32-
import nextflow.config.schema.ConfigScope
33-
import nextflow.config.schema.ScopeName
32+
import nextflow.config.spec.ConfigScope
33+
import nextflow.config.spec.ScopeName
3434
3535
@ScopeName('hello')
3636
class HelloConfig implements ConfigScope {
3737
}
3838
```
3939

40-
A scope class must provide a default constructor, so that it can be instantiated as an extension point. If no such constructor is defined, the config scope will not be included in the schema. In the above example, this constructor is implicitly defined because no constructors were declared.
40+
A scope class must provide a default constructor, so that it can be instantiated as an extension point. If no such constructor is defined, the config scope will not be detected by Nextflow. In the above example, this constructor is implicitly defined because no constructors were declared.
4141

4242
The fully-qualified class name (in this case, `nextflow.hello.HelloConfig`) must be included in the list of extension points.
4343

@@ -59,7 +59,7 @@ The `@ConfigOption` annotation can specify an optional set of types that are val
5959
String tags
6060
```
6161

62-
The field type and any additional types are included in the schema, allowing them to be used for validation.
62+
The field type and any additional types are included in the config spec, allowing them to be used for validation.
6363

6464
The field type can be any Java or Groovy class, but in practice it should be a class that can be constructed from primitive values (numbers, booleans, strings). For example, `Duration` and `MemoryUnit` are standard Nextflow types that can each be constructed from an integer or string.
6565

@@ -83,7 +83,7 @@ See `AzBatchOpts` and `AzPoolOpts` for an example of how placeholder scopes are
8383

8484
### Descriptions
8585

86-
Top-level scope classes and config options should use the `@Description` annotation to provide a description of the scope or option. This description is included in the schema, which is in turn used by the language server to provide hover hints.
86+
Top-level scope classes and config options should use the `@Description` annotation to provide a description of the scope or option. This description is included in the config spec, which is in turn used by the language server to provide hover hints.
8787

8888
For example:
8989

@@ -121,9 +121,9 @@ The Nextflow runtime adheres the following best practices where appropriate:
121121
For example:
122122

123123
```groovy
124-
import nextflow.config.schema.ConfigOption
125-
import nextflow.config.schema.ConfigScope
126-
import nextflow.config.schema.ScopeName
124+
import nextflow.config.spec.ConfigOption
125+
import nextflow.config.spec.ConfigScope
126+
import nextflow.config.spec.ScopeName
127127
128128
@ScopeName('hello')
129129
class HelloConfig implements ConfigScope {
@@ -147,7 +147,7 @@ class HelloConfig implements ConfigScope {
147147

148148
### Runtime
149149

150-
Nextflow validates the config map after it is loaded. Top-level config scopes are loaded by the plugin system as extension points and converted into a schema, which is used to validate the config map.
150+
Nextflow validates the config map after it is loaded. Top-level config scopes are loaded by the plugin system as extension points and converted into a config spec, which is used to validate the config map.
151151

152152
Plugins are loaded after the config is loaded and before it is validated, since plugins can also define config scopes. If a third-party plugin declares a config scope, it must be explicitly enabled in order to validate config options from the plugin. Otherwise, Nextflow will report these options as unrecognized.
153153

@@ -165,12 +165,12 @@ new ExecutorConfig( Global.session.config.executor as Map ?: Collections.emptyMa
165165
In practice, it is better to avoid the use of `Global` and provide an instance of `Session` to the client class instead.
166166
:::
167167

168-
### JSON Schema
168+
### Config spec
169169

170-
Config scope classes can be converted into a schema with the `SchemaNode` class, which uses reflection to extract metadata such as scope names, option names, types, and descriptions. This schema is rendered to JSON and used by the language server at build-time to provide code intelligence such as code completion and hover hints.
170+
Config scope classes can be converted into a config spec with the `SpecNode` class, which uses reflection to extract metadata such as scope names, option names, types, and descriptions. This spec is rendered to JSON and used by the language server at build-time to provide code intelligence such as code completion and hover hints.
171171

172172
### Documentation
173173

174-
The schema described above can also be rendered to Markdown using the `MarkdownRenderer` class. It produces a Markdown document approximating the {ref}`config-options` page.
174+
The config spec described above can be rendered to Markdown using the `MarkdownRenderer` class. It produces a Markdown document approximating the {ref}`config-options` page.
175175

176176
This approach to docs generation is not yet complete, and has not been incorporated into the build process yet. However, it can be used to check for discrepancies between the source code and docs when making changes. The documentation should match the `@Description` annotations as closely as possible, but may contain additional details such as version notes and extra paragraphs.

docs/guides/aws-java-sdk-v2.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# AWS Java SDK v2
44

5-
AWS Java SDK v1 will reach end of life at the end of 2025. Starting with version `25.06.0-edge`, Nextflow uses AWS Java SDK v2 in the `nf-amazon` plugin.
5+
AWS Java SDK v1 will reach end of life at the end of 2025. Starting in Nextflow 25.10, Nextflow uses AWS Java SDK v2 in the `nf-amazon` plugin.
66

77
This migration introduces several breaking changes to the `aws.client` config scope, including new and removed options. This page describes these changes and how they affect your Nextflow configuration.
88

@@ -16,18 +16,21 @@ The HTTP client in SDK v2 does not support overriding certain advanced HTTP opti
1616
- `aws.client.socketSendBufferSizeHint`
1717
- `aws.client.userAgent`
1818

19-
## S3 transfer manager
19+
## Parallel S3 operations
2020

21-
The *S3 transfer manager* is a subsystem of SDK v2 that handles S3 uploads and downloads.
21+
Nextflow manages S3 transfers, including uploads, downloads, and S3-to-S3 copies, separately from other S3 API calls such as listing a directory or retrieving object metadata.
2222

23-
You can configure the concurrency and throughput of the S3 transfer manager manually using the `aws.client.maxConcurrency` and `aws.client.maxNativeMemory` configuration options. Alternatively, you can use the `aws.client.targetThroughputInGbps` option to set both values automatically based on a target throughput.
23+
Use the `aws.client.targetThroughputInGbps` option to control the concurrency of S3 transfers based on the available network bandwidth. This setting defaults to `10`, which allows Nextflow to perform concurrent S3 transfers up to 10 Gbps of network throughput.
24+
25+
Use the `aws.client.maxConnections` config option to control the maximum number of concurrent HTTP connections for all other S3 API calls.
2426

2527
## Multi-part transfers
2628

27-
Multi-part transfer are handled by the S3 transfer manager. You can use the `aws.client.minimumPartSize` and `aws.client.multipartThreshold` config options to control when and how multi-part transfers are performed.
28-
Concurrent multi-part downloads can consume large heap memory space due to the buffer size created per transfer. To avoid out of memory errors, the size consumed by these buffers is limited to 400 MB. You can use `aws.client.maxDownloadHeapMemory` to change this value.
29+
Nextflow transfers large files to and from S3 as multipart transfers. Use the `aws.client.minimumPartSize` and `aws.client.multipartThreshold` configuration options to control when and how multipart transfers are performed.
30+
31+
Concurrent multipart downloads can consume a large amount of heap memory due to the buffer allocated by each transfer. To avoid out-of-memory errors, the size consumed by these buffers is limited to 400 MB by default. Use the `aws.client.maxDownloadHeapMemory` option to control this value.
2932

30-
The following multi-part upload config options are no longer supported:
33+
The following multipart upload config options are no longer supported:
3134

3235
- `aws.client.uploadChunkSize`
3336
- `aws.client.uploadMaxAttempts`

docs/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ reports
7777
script
7878
working-with-files
7979
process
80+
process-typed
8081
channel
8182
workflow
8283
module
@@ -174,6 +175,7 @@ developer/packages
174175
tutorials/rnaseq-nf
175176
tutorials/data-lineage
176177
tutorials/workflow-outputs
178+
tutorials/static-types
177179
tutorials/metrics
178180
tutorials/flux
179181
```

docs/install.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,12 +164,14 @@ The standalone distribution will still download core and third-party plugins as
164164
165165
You can launch workflows directly from [Seqera Platform](https://seqera.io/platform/) without installing Nextflow locally.
166166
167-
Launching from Seqera Platform provides you with:
167+
Launching from Seqera provides you with:
168168
169169
- User-friendly launch interfaces.
170170
- Automated cloud infrastructure creation.
171171
- Organizational user management.
172172
- Advanced analytics with resource optimization.
173173
174174
Seqera Cloud Basic is free for small teams. Researchers at qualifying academic institutions can apply for free access to Seqera Cloud Pro.
175-
See the [Seqera Platform documentation](https://docs.seqera.io/platform) for tutorials to get started.
175+
See [Seqera Platform Cloud](https://docs.seqera.io/platform) to get started.
176+
177+
If you have installed Nextflow locally, you can use the {ref}`nextflow auth <cli-auth>` command to authenticate with Seqera and automatically configure workflow monitoring.

0 commit comments

Comments
 (0)