🌐 AI搜索 & 代理 主页
Skip to content

Releases: graphql-java/graphql-java

25.0

10 Nov 01:21

Choose a tag to compare

Key changes

Dataloader

Refactoring strategy

The existing PerLevelDataLoaderStrategy has been refactored which lead to simplifications and performance improvements.

New strategies

Two new strategies were introduced: CHAINED and EXHAUSTED. Both can be configured via UnusalConfiguration (see next section).

CHAINED allow for chained DataLoaders to be used while keeping a per level dispatch strategies.

EXHAUSTED is a completely new strategy that works on the basis to dispatch once the engine is not busy. It mirrors the JS data loader dispatch strategy, but for a multi threaded system.

Unusual Configuration

A more generalised configuration mechanism has been added for "unusual configuration". By that we mean configuation we dont expect many people to use but if they do its now in a more common place

For example if you wanted to change the maximum depth the document parser will accept you could call the following methods.

        var parserOptions = newParserOptions().maxRuleDepth(99).build()
        GraphQL.unusualConfiguration().parsing().setDefaultParserOptions(parserOptions)

JSpecify Annotations

The team are starting to embrace https://jspecify.dev/ annotations as the way to indicate nullable and non nullable fields. Many important classes have had these annotations added to help make it more semantically clear when a value can be null or not.

Breaking Changes

A wrapping FetchedValue object is not always returned on field fetchers for performance reasons. This means that graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters#getFetchedObject was created to replace the older getFetchedValue method and the returns object can sometimes be a FetchedValue or sometimes a simple POJO value.

Performance improvements

A series of performance improvements have been made to reduce the memory footprint of the library. Also the Java .stream() operator can be slower than a more direct loop and many of these calls have been changed for performance reasons.

  • avoid wrapping materialized fieldValueObject in a CompletableFuture by @samuelAndalon in #3943
  • ExecutionStrategyParameters now has a direct transform without a Builder by @bbakerman in #3935
  • ExecutionStepInfo now has a direct transform without a Builder by @bbakerman in #3934
  • FpKit now longer uses streams for performance reasons by @bbakerman in #3932
  • Implement toString/hashCode/equals for DataFetcherResult by @AlexandreCarlton in #3964
  • Introduce a filter and map imperative method to replace .stream() calls by @bbakerman in #3931
  • Removing some of the Optional.map() and .stream() for performance reasons by @bbakerman in #3930
  • Stop creating NonNullableFieldValidator every for every object or list field by @bbakerman in #3929

What's Changed

Read more

25.0.beta-9

12 Oct 21:04

Choose a tag to compare

25.0.beta-9 Pre-release
Pre-release

This is another beta release for the upcoming version 25.

A word of warning

While all features are tested and we consider them ready to be used, we don't guarantee that this is a stable version: this means there will be more breaking changes until we reach 25.0.

This version is intended for testing and providing feedback to the GraphQL Java team.

What's Changed

Full Changelog: v25.0.beta-7...v25.0.beta-9

25.0.beta-8

28 Sep 12:10
45a7d59

Choose a tag to compare

25.0.beta-8 Pre-release
Pre-release

This is another beta release for the upcoming version 25.

It contains a new Data Loader dispatching strategy ... see #4130

A word of warning

While all features are tested and we consider them ready to be used, we don't guarantee that this is a stable version: this means there will be more breaking changes until we reach 25.0.

This version is intended for testing and providing feedback to the GraphQL Java team.

What's Changed

  • Bump com.google.errorprone:error_prone_core from 2.41.0 to 2.42.0 by @dependabot[bot] in #4125
  • 5.0.3 version of dataloader by @bbakerman in #4126
  • Per level tracking simplification and performance improvements by @andimarek in #4128
  • cleanup and comments for dataloader tracking by @andimarek in #4129
  • Bump com.uber.nullaway:nullaway from 0.12.9 to 0.12.10 by @dependabot[bot] in #4124
  • New Exhaustion based data loader dispatching strategy by @andimarek in #4130

Full Changelog: 25.0.beta-6...v25.0.beta-8

25.0.beta-7

28 Sep 12:08
45a7d59

Choose a tag to compare

25.0.beta-7 Pre-release
Pre-release

This is another beta release for the upcoming version 25.

24.3

23 Sep 06:13
ca269f2

Choose a tag to compare

This small bug fix brings in java-dataloader 5.0.3 which itself has a fix such that the Kotlin stdlib is not included a POM dependency

See https://github.com/graphql-java/java-dataloader/releases/tag/v5.0.3 for more details

What's Changed

Full Changelog: v24.2...v24.3

25.0.beta-6

22 Sep 06:21
e6ca15a

Choose a tag to compare

25.0.beta-6 Pre-release
Pre-release

This is another beta release for the upcoming version 25.

It contains various changes, specifically performance improvements for the new chained dataloader feature.

A word of warning

While all features are tested and we consider them ready to be used, we don't guarantee that this is a stable version: this means there will be more breaking changes until we reach 25.0.

This version is intended for testing and providing feedback to the GraphQL Java team.

What's Changed

New Contributors

Full Changelog: v25.0.beta-5...25.0.beta-6

25.0.beta-5

01 Aug 00:17

Choose a tag to compare

25.0.beta-5 Pre-release
Pre-release

This is another beta release for the upcoming version 25.

This beta-5 release includes improvements to the Profiler to make it easier to use and analyse. More documentation on the Profiler is to come.

A word of warning

While all features are tested and we consider them ready to be used, we don't guarantee that this is a stable version: this means there will be more breaking changes until we reach 25.0.

This version is intended for testing and providing feedback to the GraphQL Java team.

What's Changed

Full Changelog: v25.0.beta-4...v25.0.beta-5

25.0.beta-4

28 Jul 01:51

Choose a tag to compare

25.0.beta-4 Pre-release
Pre-release

This is another beta release for the upcoming version 25.

The key change in this beta-4 release is a change to "Delayed" DataLoaders to greatly simplify the use of this feature. In an earlier beta release we tried out a "batch window" for DataLoaders depending on an async function, but in testing we've found this adds complexity, particularly if a server is not already using a ScheduledExecutorService. Note this does not affect the "Chained" DataLoader case where one DataLoader is dependent on another DataLoader in the same DataFetcher. More documentation is to come.

A word of warning

While all features are tested and we consider them ready to be used, we don't guarantee that this is a stable version: this means there will be more breaking changes until we reach 25.0.

This version is intended for testing and providing feedback to the GraphQL Java team.

What's Changed

Full Changelog: v25.0-beta-3...v25.0.beta-4

24.2

28 Jul 03:44
383095c

Choose a tag to compare

This is a small bugfix release, to use the latest version of DataLoader that includes nullability annotation improvements. Thanks to the community to providing feedback.

See https://github.com/graphql-java/java-dataloader/releases/tag/v5.0.2 and https://github.com/graphql-java/java-dataloader/releases/tag/v5.0.1 for the details

What's Changed

  • Update to DataLoader 5.0.2 - backport for 24.2 by @dondonz in #4060

Full Changelog: v24.1...v24.2

25.0.beta-3

21 Jul 04:44

Choose a tag to compare

25.0.beta-3 Pre-release
Pre-release

This is another beta release for the upcoming version 25.

The key change in this beta-3 release is the addition of the Profiler, which will track interesting execution information such as DataLoader dispatch points, DataFetcher usage, and count of materialised values. You can opt into this via ExecutionInput. We'll have more documentation available ahead of the official release of v25.

A word of warning

While all features are tested and we consider them ready to be used, we don't guarantee that this is a stable version: this means there will be more breaking changes until we reach 25.0.

This version is intended for testing and providing feedback to the GraphQL Java team.

What's Changed

Full Changelog: v25.0.beta-2...v25.0-beta-3