Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
936abdf
Run one field
rmosolgo Jan 21, 2026
c3820da
Support root_object
rmosolgo Jan 21, 2026
1eee0a2
Implement nested objects and lists of objects
rmosolgo Jan 21, 2026
1f475f8
Add basic arguments
rmosolgo Jan 21, 2026
1665e06
Basic merging of selections
rmosolgo Jan 21, 2026
08bce72
Add concrete type inline fragments
rmosolgo Jan 21, 2026
ddde2d9
Update Field object shape spec
rmosolgo Jan 21, 2026
756fd3f
start on abstract types support
rmosolgo Jan 21, 2026
cde91ed
Implement spreads on abstract types
rmosolgo Jan 21, 2026
e20fc74
basic variable lookup
rmosolgo Jan 21, 2026
cb90cf5
Implement isolated mutation roots
rmosolgo Jan 21, 2026
a80dfb5
Support input objects and lists
rmosolgo Jan 22, 2026
98cd05c
Support argument default values and test Introspection Query
rmosolgo Jan 23, 2026
57c67e5
Add basic __typename support
rmosolgo Jan 23, 2026
938a36b
Basic skip and include test
rmosolgo Jan 23, 2026
ea04e2f
lint ignores
rmosolgo Jan 23, 2026
5aad9c6
Add static validation
rmosolgo Jan 23, 2026
a873638
Add input coercion
rmosolgo Jan 23, 2026
6d4d41d
Also test enum coercion
rmosolgo Jan 23, 2026
a3212ca
Implement null propagation via second pass over result
rmosolgo Jan 24, 2026
eee5202
Code cleanup
rmosolgo Jan 24, 2026
d36c466
DRY result assignment
rmosolgo Jan 24, 2026
7af1554
Migrate dataloader tests to run Execution::Next
rmosolgo Jan 25, 2026
e759bc3
Start making dataloader tests run
rmosolgo Jan 25, 2026
c9765b8
Make dataloader tests mostly work
rmosolgo Jan 26, 2026
39d31c8
Start porting Interpreter test to run Next
rmosolgo Jan 26, 2026
f26443a
Add basic lazy support, fix node and nodes
rmosolgo Jan 26, 2026
0d67ba3
Experiment with making graphql_objects ahead of time
rmosolgo Jan 26, 2026
0138a64
Make RawValue opt-in, fix lazies by depth, reduce authorized overhead
rmosolgo Jan 26, 2026
0490b8b
Update some tests
rmosolgo Jan 26, 2026
69802b3
Merge pull request #5516 from rmosolgo/next-dataloader
rmosolgo Jan 26, 2026
bbedeb4
rename Next -> Batching, add to some CI jobs
rmosolgo Jan 26, 2026
e370bda
update ci, fix dataloader-spec on non-future
rmosolgo Jan 26, 2026
d7e8dc1
Fix field object shape spec
rmosolgo Jan 26, 2026
0ffa4e3
Lots of Resolver compatibility improvements
rmosolgo Jan 27, 2026
3edf4d2
Add support for connection fields
rmosolgo Jan 27, 2026
26bf3e3
connection extension compat
rmosolgo Jan 27, 2026
48f0c3d
Update resolver specs
rmosolgo Jan 27, 2026
ddebfc6
fix some specs
rmosolgo Jan 27, 2026
90dc758
Add nice API for batch resolve configs
rmosolgo Jan 28, 2026
e468327
clean up test
rmosolgo Jan 28, 2026
5eb4ec6
Update introspection to run on execute_batching
rmosolgo Jan 28, 2026
17e842d
Fix compat setup in specs
rmosolgo Jan 28, 2026
f8df309
Add lint ignore
rmosolgo Jan 28, 2026
0539c0c
Apply as: even when not dataloaded; dup kwargs for extras if necessary
rmosolgo Jan 30, 2026
d077d55
Compat fixes
rmosolgo Jan 30, 2026
513d064
Update batching config
rmosolgo Jan 30, 2026
6aa9bdf
Add opt-in authorize batching mechanism
rmosolgo Jan 30, 2026
ccbab77
Fix more stuff
rmosolgo Jan 30, 2026
c8564bc
Fix introspection after removing fallback code
rmosolgo Jan 30, 2026
ef15cdb
Revert some test changes
rmosolgo Jan 30, 2026
b0d6cd4
Add new guide for this module
rmosolgo Jan 31, 2026
0f82f8d
remove unused ivar names
rmosolgo Jan 31, 2026
4486a2d
Remove needless splat
rmosolgo Jan 31, 2026
429dd72
Remove Argument#original_keyword
rmosolgo Jan 31, 2026
e578632
Use Execution::Batching for lazy_spec.rb
rmosolgo Jan 31, 2026
ec0c785
Migrate visibility spec to use batching
rmosolgo Feb 2, 2026
0bceefb
build empty results based on a prototype instead of looping over @res…
rmosolgo Feb 2, 2026
79c6a81
Update guides/execution/batching.md
rmosolgo Feb 2, 2026
0a2783b
Update guides/execution/batching.md
rmosolgo Feb 2, 2026
c12a20b
Update guides/execution/batching.md
rmosolgo Feb 2, 2026
bd68a2f
Add test reset code -- this was previously done in execute_multiplex …
rmosolgo Feb 2, 2026
3b5825a
Add batching error spec; make lots of fixes
rmosolgo Feb 2, 2026
42e8ef9
return both errors in non-null list
rmosolgo Feb 3, 2026
743c6b9
Fix double-added errors from lazies
rmosolgo Feb 3, 2026
f875e46
return errors from loads to be handled like field errors
rmosolgo Feb 3, 2026
bd2a7c3
support TESTING_BATCHING in introspection_system_spec, add compat notes
rmosolgo Feb 3, 2026
bde31cc
Move Batching into a Schema plugin
rmosolgo Feb 3, 2026
269ce55
Merge branch 'master' into execution-next
rmosolgo Feb 6, 2026
90d7d1c
Fix test setup
rmosolgo Feb 9, 2026
94dd95e
Update plugin test
rmosolgo Feb 9, 2026
0ad3bcd
Update schema spec
rmosolgo Feb 9, 2026
76a31af
Docs update
rmosolgo Feb 16, 2026
aaae09d
Implement :dig
rmosolgo Feb 16, 2026
60610d3
Merge branch 'master' into execution-next
rmosolgo Feb 18, 2026
71adba3
Rename AuthorizationStep -> PrepareObjectStep
rmosolgo Feb 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,21 +51,21 @@ jobs:
ruby: 2.7 # lowest supported version
- gemfile: gemfiles/rails_8.0.gemfile
ruby: 3.3
graphql_reject_numbers_followed_by_names: 1
graphql_future: 1
- gemfile: gemfiles/rails_8.1.gemfile
ruby: 4.0
graphql_reject_numbers_followed_by_names: 1
graphql_future: 1
redis: 1
- gemfile: gemfiles/rails_master.gemfile
ruby: 3.4
graphql_reject_numbers_followed_by_names: 1
graphql_future: 1
isolation_level_fiber: 1
redis: 1
runs-on: ubuntu-latest
steps:
- run: echo BUNDLE_GEMFILE=${{ matrix.gemfile }} > $GITHUB_ENV
- run: echo GRAPHQL_REJECT_NUMBERS_FOLLOWED_BY_NAMES=1 > $GITHUB_ENV
if: ${{ !!matrix.graphql_reject_numbers_followed_by_names }}
- run: echo GRAPHQL_FUTURE=1 > $GITHUB_ENV
if: ${{ !!matrix.graphql_future }}
- run: echo ISOLATION_LEVEL_FIBER=1 > $GITHUB_ENV
if: ${{ !!matrix.isolation_level_fiber }}
- uses: shogo82148/actions-setup-redis@v1
Expand Down
32 changes: 22 additions & 10 deletions benchmark/run.rb
Original file line number Diff line number Diff line change
Expand Up @@ -265,22 +265,32 @@ def self.profile_large_analysis

# Adapted from https://github.com/rmosolgo/graphql-ruby/issues/861
def self.profile_large_result
require "graphql/execution/batching"
GraphQL::Schema::Field.prepend(GraphQL::Execution::Batching::FieldCompatibility)
schema = ProfileLargeResult::Schema
schema.use(GraphQL::Dataloader)
document = ProfileLargeResult::ALL_FIELDS
Benchmark.ips do |x|
x.config(time: 10)
x.report("Querying for #{ProfileLargeResult::DATA.size} objects") {
schema.execute(document: document)
}
end

# Benchmark.ips do |x|
# x.config(time: 10)
# x.report("Querying for #{ProfileLargeResult::DATA.size} objects") {
# schema.execute(document: document)
# }
# end
schema.execute_batching(document: document)
result = StackProf.run(mode: :wall, interval: 1) do
schema.execute(document: document)
schema.execute_batching(document: document)
# schema.execute(document: document)
end
StackProf::Report.new(result).print_text

StackProf.run(mode: :wall, interval: 1, out: "tmp/stackprof.dump") do
schema.execute_batching(document: document)
# schema.execute(document: document)
end

report = MemoryProfiler.report do
schema.execute(document: document)
# schema.execute(document: document)
schema.execute_batching(document: document)
end

report.pretty_print
Expand Down Expand Up @@ -452,7 +462,9 @@ def foos(first:)
class Schema < GraphQL::Schema
query QueryType
# use GraphQL::Dataloader
lazy_resolve Proc, :call
if !ENV["EAGER"]
lazy_resolve Proc, :call
end
end

ALL_FIELDS = GraphQL.parse <<-GRAPHQL
Expand Down
Loading