Releases: apollographql/apollo-rs
[email protected]
[email protected]
- Update apollo-parser dependency to
0.8.0
- Update apollo-compiler dependency to
=1.0.0-beta.20
[email protected]
BREAKING
This release removes the Error::new
constructor. We recommend not creating instances of
apollo_parser::Error
yourself at all.
Fixes
- add missing location information for lexer errors - PhoebeSzmucer, pull/886, issue/731
Unexpected characters now raise an error pointing to the character itself, instead of the start of the input document.
[email protected]
Fixes
- Fix variable validation in operation directives - goto-bus-stop in pull/888.
query ($var: Int) @directive(arg: $var)
is now accepted - it used to raise an unused variable error for$var
.
Maintenance
- Make unused variable validation more efficient - goto-bus-stop in pull/887.
[email protected]
1.0.0-beta.19 - 2024-07-19
BREAKING
-
Remove deprecated
Name
reexports - SimonSapin in pull/877.
apollo_compiler::Name
should now be imported instead of:apollo_compiler::ast::Name
apollo_compiler::schema::Name
apollo_compiler::executable::Name
These other paths emitted deprecation warnings in 1.0.0-beta.18 and are now removed.
-
Move operations of an
ExecutableDocument
into a new struct - SimonSapin in pull/879.doc.anonymous_operation
→doc.operations.anonymous
doc.named_operations
→doc.operations.named
doc.get_operation()
→doc.operations.get()
doc.get_operation_mut()
→doc.operations.get_mut()
doc.insert_operation()
→doc.operations.insert()
doc.all_operations()
→doc.operations.iter()
This change makesget_mut()
borrow onlydoc.operations
instead of the entire document, making it possible to also mutatedoc.fragments
during that mutable borrow.
-
Move or rename some import paths - SimonSapin in pull/885. Moved from the crate root to the new(ly public)
apollo_compiler::parser
module:Parser
SourceFile
SourceMap
FileId
Moved to the
parser
module and renamed:NodeLocation
→SourceSpan
GraphQLLocation
→LineColumn
-
Return ranges of line/column locations - dylan-apollo in pull/861.
SourceSpan
contains a file ID and a range of UTF-8 offsets within that file. Various APIs can convert offsets to line and column numbers, but often only considered the start offset. They are now changed to consider the range of start and end positions.Added, returning
Option<Range<LineColumn>>
:SourceSpan::line_column_range
Diagnostic::line_column_range
Name::line_column_range
Removed:
LineColumn::from_node
Diagnostic::get_line_column
SourceFile::get_line_column
-
Use a fast hasher - o0Ignition0o in pull/881. Configured all hash-based collections used in apollo-compiler to use
ahash
, which is faster than the default standard library hasher.apollo_compiler::collections
provides type aliases for collections configured with the same hasher as collections in various parts of the public API.
Features
- Add a few helper methods - SimonSapin in pull/885:
executable::OperationMap::from_one
schema::SchemaDefinition::iter_root_operations()
schema::ExtendedType::is_leaf
Fixes
- Fix potential hash collision bug in validation - goto-bus-stop in pull/878
- Fix validation for undefined variables nested in values - goto-bus-stop in pull/885
[email protected]
1.0.0-beta.18 - 2024-06-27
BREAKING
-
Name
representation change - SimonSapin in pull/868. The memory representation of GraphQL names is changed to useArc<str>
or&'static str
internally, and provide corresponding cheap conversions. This may also help enable string interning in a future compiler version.Name
should now be imported from the crate root. The previous paths (apollo_compiler::ast::Name
,apollo_compiler::executable::Name
, andapollo_compiler::schema::Name
) now emit a deprecation warning and will be removed in a later version.NodeStr
has been removed, with its functionality folded intoName
ast::Value::String
now contains a plainString
instead ofNodeStr
.Value
itself is in aNode<_>
that contains the same source span asNodeStr
did.- Descriptions are now represented as
Option<Node<str>>
instead ofOption<NodeStr>
.
-
Feature REMOVED:
Hash
cache inNode<T>
- SimonSapin in pull/872.Node<T>
is a reference-counted smart pointer that provides thread-safe shared ownership for atT
value together with an optional source location. In previous beta version of apollo-compiler 1.0 it contained a cache in itsHash
implementation: the hash of theT
value would be computed once and stored, thenHash for Node<T>
would hash that hash code. That functionality is now removed,Hash for Node<T>
simply forwards toHash for T
. This reduces eachNode
heap allocation by 8 bytes, and reduces code complexity.Now that apollo-compiler does not use Salsa anymore,
Hash
is much less central than it used to be. Many types stored inNode<_>
don’t implementHash
at all (because they contain anIndexMap
which doesn’t either).Programs that relied on this cache will still compile. We still consider this change breaking as they’ll need to build their own cache to maintain performance characteristics.
Fixes
- Fix validation error message for missing subselections - goto-bus-stop in pull/865. It now reports the correct coordinate for the missing subselection.
[email protected]
0.7.0 - 2024-06-20
Features
- Improve field variability in Selection Set generation - geal, pull/866.
This changes the field generation algorithm in apollo-smith to allow more
variety, because the previous implementation was the previous implementation
was too biased towards the first field specified in a type. This also adds an
example to generate a random query from a schema.
[email protected]
Fixes
- Fix validation performance bug - goto-bus-stop in issue/862, pull/863
Adds a cache in fragment spread validation, fixing a situation where validating a query
with many fragment spreads against a schema with many interfaces could take multiple
seconds to validate.
Maintenance
- Remove ariadne byte/char mapping - goto-bus-stop in pull/855
Generating JSON or CLI reports for apollo-compiler diagnostics used a translation layer
between byte offsets and character offsets, which cost some computation and memory
proportional to the size of the source text. The latest version of ariadne allows us to
remove this translation.
[email protected]
This release has no user-facing changes.
Features
- Add GraphQL validation compatibility API for Apollo Router - goto-bus-stop in pull/853
Enables large-scale production deployment of apollo-compiler's validation implementation.