The GraphQL Specification Working Draft was first published three months ago today and what has happened since has been stunning. GraphQL is now available in many other languages, all built by members of the community.
Part of the reason for publishing a working draft was to get feedback and improve. We've gotten tons of great feedback which has led to many improvements in GraphQL. There are more exciting improvements ahead as research continues in GraphQL query subscription, streaming responses, and more.
As improvements continue, we thought it would be helpful to tag regular "releases" of the GraphQL Spec drafts and publish a changelog to make it easier to follow GraphQL's development. This marks the first in what will become regular releases of the GraphQL Spec.
Copious improvements have been made to clarity. There is still more to be done to make the spec as clear as possible, but a huge thanks to the many awesome contributors who submitted pull requests and issues in an effort to make the GraphQL spec easier to understand.
In addition to clarifying changes, there also have been quite a few grammar and semantic changes as GraphQL continues to evolve.
Grammar and Semantic Changes:
- Inline fragments type conditions are now optional (664fc0e)
- Operation names are now optional (02af0fd)
- Unicode support has been clarified and restricted (11fba02, af5c288)
- Input objects now parse redundant fields, but this becomes a validation error (794e699)
- Object types implementing interfaces validation became stricter (90784b4)
- Union types now only require one type, loosening validation (972fd5a)
- Added validation rule that arguments to a field must be unique (c5b3b64)
- Added validation rule that operation names in a document must be unique (65d46bb)
- Added validation rule that fragment names in a document must be unique (994ba71)
__typeintrospection field always has
nameargument by speccing it to be Non-Null (43c3114)
- Float literals may omit a decimal part if they include an exponent part (d04ea22)
- Enum values cannot be
- Variable types can be List and Non-Null (5c6e700)
- Fully described Names (5c27ccb)
- Directives can now take arguments and introduced