- the build and test steps won't run until/unless Dependency and MSRV checks pass
- code coverage won't run until/unless the build steps all pass
## [why]
This helps make more efficient use of CI resources and can help more easily visualize
build issues from the resultant GHA dashboard flow diagram.
## [why]
`cspell` in CI started mysteriously failing mid-2021. Tracking down the
error took some time as it was not obvious from `cspell` feedback where
the issue lay. Ultimately, it was discovered that `cspell` had deprecated
use on NodeJS versions < v12 for `cspell` v5+.
`cspell` is now pinned to v4.2.8, with a maintenance note to allow an
upgrade to the `cspell` version when a version of NodeJS >= v12 is being
used in the CI.
An issue requesting better tool feedback for similar situations was also
opened on the `cspell` repo.[*]
[*]: [🙏🏻 Add warning (or error) when used on deprecated/outdated JS platform versions](https://github.com/streetsidesoftware/cspell/issues/1984)
# [why]
The tool cache is currently failing and seems to be getting further behind current
versions. The [actions-rs/install#12] issue addresses this but seems to be
languishing without any proposed solution.
[ref]: <actions-rs/install#12>
- fixes conversion of new `cargo clippy` output style to GHA annotations
## [why]
`cargo clippy` output formatting changed, using relative instead of absolute paths.
Pad infinity and negative infinity values with spaces when using the
`-w` option to `seq`. This corrects the behavior of `seq` to match that
of the GNU version:
$ seq -w 1.000 inf inf | head -n 4
1.000
inf
inf
inf
Previously, it incorrectly padded with 0s instead of spaces.
* seq: use BigDecimal to represent floats
Use `BigDecimal` to represent arbitrary precision floats in order to
prevent numerical precision issues when iterating over a sequence of
numbers. This commit makes several changes at once to accomplish this
goal.
First, it creates a new struct, `PreciseNumber`, that is responsible for
storing not only the number itself but also the number of digits (both
integer and decimal) needed to display it. This information is collected
at the time of parsing the number, which lives in the new
`numberparse.rs` module.
Second, it uses the `BigDecimal` struct to store arbitrary precision
floating point numbers instead of the previous `f64` primitive
type. This protects against issues of numerical precision when
repeatedly accumulating a very small increment.
Third, since neither the `BigDecimal` nor `BigInt` types have a
representation of infinity, minus infinity, minus zero, or NaN, we add
the `ExtendedBigDecimal` and `ExtendedBigInt` enumerations which extend
the basic types with these concepts.
* fixup! seq: use BigDecimal to represent floats
* fixup! seq: use BigDecimal to represent floats
* fixup! seq: use BigDecimal to represent floats
* fixup! seq: use BigDecimal to represent floats
* fixup! seq: use BigDecimal to represent floats