Skip to content

Commit a4df4cf

Browse files
authored
1 parent 8e52895 commit a4df4cf

File tree

3 files changed

+72
-28
lines changed

3 files changed

+72
-28
lines changed

crates/apollo-compiler/CHANGELOG.md

Lines changed: 70 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,76 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
1717
## Maintenance
1818
## Documentation-->
1919

20-
# [1.30.0] (unreleased) - 2025-08-27
20+
# [1.31.0](https://crates.io/crates/apollo-compiler/1.31.0) - 2025-11-10
21+
22+
## Features
23+
24+
- **Allow coercing Int variables to Float - [tninesling], [pull/1011]**
25+
26+
The GraphQL spec allows coercing Int values to Float in input positions (see
27+
[input coercion]). There are a couple things to note about this.
28+
29+
- Strings are not allowed to be coerced in this position, even if they are
30+
numeric.
31+
- Ints can only be converted to Float when they are "representable by finite
32+
IEEE 754" floating point numbers.
33+
34+
Since an IEEE 754 floating point double (f64) has 53 bits of precision, it can
35+
safely represent up to the value 2^53 - 1 as a finite value. Beyond that, the
36+
round trip from integer to float and back will lose information. This is
37+
represented with a new `MAX_SAFE_INT` constant which is often included in
38+
other languages like JavaScript's `Number.MAX_SAFE_INT`. When, we encounter an
39+
Int variable in a Float position, we ensure that its value is finitely
40+
representable.
41+
42+
There is some nuance in that the spec does not say all floats have to be
43+
within this range. So, this implementation allows explicitly passed floats
44+
which are greater than that bound, only applying the integer conversion limit
45+
when coercing a value.
46+
47+
## Fixes
48+
49+
- **Validate missing fragments when parsing standalone executable documents - [Abdel-Monaam-Aouini], [pull/1003]**
50+
51+
When validating standalone executable documents, the use of undefined fragment
52+
definitions will return a validation error. Previously, executable documents
53+
like the following would pass validation without errors, despite
54+
`CompanyFragment` being undefined.
55+
56+
```graphql
57+
query {
58+
company {
59+
user {
60+
...UserFragment
61+
}
62+
...CompanyFragment
63+
}
64+
}
65+
fragment UserFragment on User {
66+
id
67+
name
68+
}
69+
```
70+
71+
## Maintenance
72+
73+
- **Add benchmark for parsing and validation when a type has many extensions [tninesling], [pull/1011]**
74+
75+
Introduces a new benchmark for query parsing and validation when a type has
76+
many extensions. We made an update in `[email protected]` to expose
77+
`.iter_origins()` for AST nodes, and we reimplemented `.extensions()` in
78+
terms of `.iter_origins()`. We were concerned that this may have caused a
79+
performance regression in parsing, but running this new benchmark against
80+
`main` with `1.28.0` as the base indicates no change in performance.
81+
82+
[Abdel-Monaam-Aouini]: https://github.com/Abdel-Monaam-Aouini
83+
[tninesling]: https://github.com/tninesling
84+
[input coercion]: https://spec.graphql.org/September2025/#sec-Float.Input-Coercion
85+
[pull/1000]: https://github.com/apollographql/apollo-rs/pull/1000
86+
[pull/1003]: https://github.com/apollographql/apollo-rs/pull/1003
87+
[pull/1011]: https://github.com/apollographql/apollo-rs/pull/1011
88+
89+
# [1.30.0](https://crates.io/crates/apollo-compiler/1.30.0) - 2025-08-27
2190

2291
## Features
2392

@@ -70,28 +139,6 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
70139
.expect("schema parsed successfully");
71140
```
72141
73-
- **Allow coercing Int variables to Float - [tninesling], [pull/1011]**
74-
75-
The GraphQL spec allows coercing Int values to Float in input positions (see
76-
[input coercion]). There are a couple things to note about this.
77-
78-
- Strings are not allowed to be coerced in this position, even if they are
79-
numeric.
80-
- Ints can only be converted to Float when they are "representable by finite
81-
IEEE 754" floating point numbers.
82-
83-
Since an IEEE 754 floating point double (f64) has 53 bits of precision, it can
84-
safely represent up to the value 2^53 - 1 as a finite value. Beyond that, the
85-
round trip from integer to float and back will lose information. This is
86-
represented with a new `MAX_SAFE_INT` constant which is often included in
87-
other languages like JavaScript's `Number.MAX_SAFE_INT`. When, we encounter an
88-
Int variable in a Float position, we ensure that its value is finitely
89-
representable.
90-
91-
There is some nuance in that the spec does not say all floats have to be
92-
within this range. So, this implementation allows explicitly passed floats
93-
which are greater than that bound, only applying the integer conversion limit
94-
when coercing a value.
95142
96143
## Fixes
97144
@@ -130,14 +177,11 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
130177
131178
[dariuszkuc]: https://github.com/dariuszkuc
132179
[duckki]: https://github.com/duckki
133-
[tninesling]: https://github.com/tninesling
134-
[input coercion]: https://spec.graphql.org/September2025/#sec-Float.Input-Coercion
135180
[pull/994]: https://github.com/apollographql/apollo-rs/pull/994
136181
[pull/993]: https://github.com/apollographql/apollo-rs/pull/993
137182
[pull/990]: https://github.com/apollographql/apollo-rs/pull/990
138183
[pull/989]: https://github.com/apollographql/apollo-rs/pull/989
139184
[pull/987]: https://github.com/apollographql/apollo-rs/pull/987
140-
[pull/1011]: https://github.com/apollographql/apollo-rs/pull/1011
141185
142186
143187
# [1.29.0](https://crates.io/crates/apollo-compiler/1.29.0) - 2025-08-08

crates/apollo-compiler/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "apollo-compiler"
3-
version = "1.30.0" # When bumping, also update README.md
3+
version = "1.31.0" # When bumping, also update README.md
44
authors = ["Irina Shestak <[email protected]>"]
55
license = "MIT OR Apache-2.0"
66
repository = "https://github.com/apollographql/apollo-rs"

crates/apollo-compiler/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ Or add this to your `Cargo.toml` for a manual installation:
4141
```toml
4242
# Just an example, change to the necessary package version.
4343
[dependencies]
44-
apollo-compiler = "1.30.0"
44+
apollo-compiler = "1.31.0"
4545
```
4646

4747
## Rust versions

0 commit comments

Comments
 (0)