vercel
next.js
BlogDocsChangelog

Turbopack: Fix compound assignment expression evaluation

#85478Merged
Comparing
hayes:canary
(
f308f17
) with
hayes/compound-assignment
(
1db1762
)
CodSpeed Performance Gauge
-7%
Regressions
1
Untouched
7
Skipped
12

Benchmarks

Skipped (12)

Failed

react-dom-client.development.js[full]
turbopack/crates/turbopack-ecmascript/benches/references.rs::references_benches::benchmark::references
Regression
CodSpeed Performance Gauge
-7%
427.9 ms461.5 ms

Passed

jsonwebtoken.js[tracing]
turbopack/crates/turbopack-ecmascript/benches/references.rs::references_benches::benchmark::references
CodSpeed Performance Gauge
+1%
327.5 ms324.5 ms
app-page-turbo.runtime.prod.js[full]
turbopack/crates/turbopack-ecmascript/benches/references.rs::references_benches::benchmark::references
CodSpeed Performance Gauge
0%
780.5 ms777.3 ms
app-page-turbo.runtime.prod.js[tracing]
turbopack/crates/turbopack-ecmascript/benches/references.rs::references_benches::benchmark::references
CodSpeed Performance Gauge
0%
670.6 ms668.3 ms
packages-bundle.js[tracing]
turbopack/crates/turbopack-ecmascript/benches/references.rs::references_benches::benchmark::references
CodSpeed Performance Gauge
0%
1.1 s1.1 s
jsonwebtoken.js[full]
turbopack/crates/turbopack-ecmascript/benches/references.rs::references_benches::benchmark::references
CodSpeed Performance Gauge
0%
367.9 ms366.8 ms
react-dom-client.development.js[tracing]
turbopack/crates/turbopack-ecmascript/benches/references.rs::references_benches::benchmark::references
CodSpeed Performance Gauge
0%
407.2 ms406 ms
packages-bundle.js[full]
turbopack/crates/turbopack-ecmascript/benches/references.rs::references_benches::benchmark::references
CodSpeed Performance Gauge
0%
1.3 s1.3 s

Commits

Click on a commit to change the comparison range
Base
canary
1db1762
+8.56%
Turbopack: Fix compound assignment expression evaluation Previously, the analyzer treated all assignment expressions the same way, evaluating them as their right-hand side value. This was incorrect for compound assignments (+=, -=, *=, |=, >>=, etc.), which compute a new value based on both the left and right operands. This commit distinguishes between simple assignments (=) and compound assignments. Simple assignments continue to evaluate to the right-hand side, while compound assignments are now properly marked as unknown values with side effects. Also adds tests for compound assignments in conditionals, covering bitshift operations (>>=, <<=, >>>=) and bitwise operations (|=, &=, ^=) with both numbers and bigints.
9197606
6 days ago
by hayes
-15.84%
Merge branch 'canary' into canary
f308f17
4 days ago
by ijjk
© 2025 CodSpeed Technology
Home Terms Privacy Docs