[graphql] Convert to using the new query interpreter runtime (1.13.x)
As detailed in [GraphQL - Interpreter](https://graphql-ruby.org/queries/interpreter.html) > GraphQL-Ruby 1.9.0 includes a new runtime module which you may use for your schema. Eventually, it will become the default. >>> The new runtime was added to address a few specific concerns: - Runtime Performance: For very large results, the previous runtime was slow because it allocated a new ctx object for every field, even very simple fields that didn’t need any special tracking. - Validation Performance: The previous runtime depended on a preparation step (GraphQL::InternalRepresentation::Rewrite) which could be very slow in some cases. In many cases, the overhead of that step provided no value. - Extensibility: Although the GraphQL specification supports custom directives, GraphQL-Ruby didn’t have a good way to build them. >>> The GraphQL gem is already shipping 2.0! However for this effort, we're moving first to 1.13.x. After that transition is complete, we can tackle 2.0. A lot of work has been done already, from https://gitlab.com/gitlab-org/gitlab/-/issues/13984+ to https://gitlab.com/gitlab-org/gitlab/-/issues/210556+ **MR handling** Many of the changes can not really be checked into `master` at this time. There are too many changes to effectively use a feature flag, although there is one defined, `:graphql_interpeter`. For now we will use the following process: 1. Main integration branch will be `bw-graphql-interpreter` 2. All new MRs that cannot be included in `master` should target the integration branch `bw-graphql-interpreter` 3. If a change in the code is compatible with `master`, then the change should be made there 4. The integration branch will be rebased on `master` periodically, and downstream branches can then rebase on the integration branch
epic