docs: update conformance note — Jolt now validates args like Clojure
Strictness work brought the suite to ~3900 passing; the leniency divergence is largely gone. Remaining failures are bignum/ratio/bigdec, integer/float identity, 64-bit/Unicode, eager-vector seqs, and the map-entry-as-2-vector case.
This commit is contained in:
parent
740b50aef3
commit
f7928af3e8
1 changed files with 7 additions and 6 deletions
13
README.md
13
README.md
|
|
@ -119,9 +119,11 @@ exercises it.
|
||||||
### clojure-test-suite conformance
|
### clojure-test-suite conformance
|
||||||
|
|
||||||
The [clojure-test-suite](https://github.com/lread/clojure-test-suite) battery
|
The [clojure-test-suite](https://github.com/lread/clojure-test-suite) battery
|
||||||
runs ~3700 assertions green. The assertions that remain failing are all
|
runs ~3900 assertions green. Jolt validates its arguments like Clojure —
|
||||||
accounted for by the platform/design differences above, not by missing
|
arithmetic on non-numbers, comparisons against `nil`, out-of-range indices,
|
||||||
behavior:
|
malformed `conj!`/`assoc!`/`merge`, and non-seqable `first`/`seq`/`vec` all
|
||||||
|
throw. The assertions that remain failing are accounted for by the
|
||||||
|
platform/design differences above, not by missing behavior:
|
||||||
|
|
||||||
- **No bignum/ratio/BigDecimal** — `bigint`/`numerator`/`denominator`/`bigdec`,
|
- **No bignum/ratio/BigDecimal** — `bigint`/`numerator`/`denominator`/`bigdec`,
|
||||||
the `big-int?`/auto-promotion checks, and the `2N`/`1/2`/`1.0M` literals read
|
the `big-int?`/auto-promotion checks, and the `2N`/`1/2`/`1.0M` literals read
|
||||||
|
|
@ -131,11 +133,10 @@ behavior:
|
||||||
`float?`/`double?` cases can't distinguish them (`(str 0.0)` is `"0"`).
|
`float?`/`double?` cases can't distinguish them (`(str 0.0)` is `"0"`).
|
||||||
- **64-bit integers / Unicode** — `bit-and` etc. on full-width 64-bit constants
|
- **64-bit integers / Unicode** — `bit-and` etc. on full-width 64-bit constants
|
||||||
lose precision (doubles), and `subs`/`count` work on bytes, not code points.
|
lose precision (doubles), and `subs`/`count` work on bytes, not code points.
|
||||||
- **Leniency** — where Clojure throws on a malformed call (bad-shape `conj!`,
|
|
||||||
arithmetic on non-numbers, out-of-range indices), Jolt is mostly permissive,
|
|
||||||
so the suite's `thrown?` assertions for those don't fire.
|
|
||||||
- **Eager seqs** — `map`/`filter`/`range` return vectors, so `seq?`/`vector?`/
|
- **Eager seqs** — `map`/`filter`/`range` return vectors, so `seq?`/`vector?`/
|
||||||
`sequential?` of their results differ, and sorts aren't guaranteed stable.
|
`sequential?` of their results differ, and sorts aren't guaranteed stable.
|
||||||
|
- **Map entries** — a map entry is an ordinary 2-vector, so `key`/`val` accept
|
||||||
|
any 2-vector and a few `thrown?` cases for non-entries don't fire.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue