v1.14.2
Bug fixes
-
Update release workflow
We previously dropped publishing of binary artifacts, but hadn't updated
the release workflow for that yet. This patch does that, and also
performs a bunch of bumps and pins of actions that workflow uses.(cherry picked from commit 30cf38e)
-
Fix Fiber constructor clobbering shared stack.
Previously, when constructing a Fiber with type SharedStack, we'd
initialize the underlying fiber with the global shared stack. This
isn't safe: The fiber_init() call writes to the shared stack, but
there's no guarantee that the shared stack isn't being used by
another fiber when this happens.Circumvent this by moving the underlying fiber initialization into
__fiber_switch_trampoline(), where it is guaranteed that the previously
executing fiber has saved() the shared stack so that it is now free
to be used by a different fiber. Use the nullptr fiber_stack() return
as the indicator, that the initialization still needs to happen.(cherry picked from commit 9b0cfac)
-
GH-2414: Allow disabling of building of benchmarks
We have a reoccurring and hard to diagnose issue with the
google/benchmark dependency failing to detect the regex backend, #2414.
Since the benchmarks and their dependencies are not needed during
regular use, add a configure option--disable-benchmarksand a CMake
variableSPICY_ENABLE_BENCHMARKSto allow turning benchmarks off.(cherry picked from commit 5b54b99)
-
Avoid underflow in
atoi_nWe had previously fixed some overflows in this function, but missed a
case when extractingINT64_MIN. We were already parsing the absolute
value with enough range, but could underflow when negating it for the
final result since the negation was done in the target type which did
not have enough range.With this patch we instead perform the negation in the unsigned type
which has enough range, and only cast to the target type after.(cherry picked from commit 9645a0b)
-
Handle overflows in
atoi_n(cherry picked from commit d2f46cc)
-
Handle overflows when checking whether an integer can coerce to
real.We were already handling the loss of precision, but not overflow.
(cherry picked from commit df9a655)