Closed c-blake closed 1 week ago
Cross ref to https://github.com/nim-lang/Nim/issues/23678 discussion.
FWIW, the failing tests have nothing to do with this PR (although perhaps the non-deterministic 7 second timeout in tests/vm/tslow_tables.nim
should be increased a bit) since everything here is hidden behind a nimPreviewHashFarm
.
Should jsbigint=off
be Deprecated? 🤔
Personally, I think jsbigint=off
mode could be deprecated maybe in the same Nim-2.2 release time frame as this opt-in ability lands. That definitely has broader impact than just this PR and so should probably be a separate one.
We could even make it the default for 2.2 as long as it works with JavaScript out of the box too. (We need to make --jsbigint=on the default.)
Thanks for your hard work on this PR! The lines below are statistics of the Nim compiler built from e64512036289434c6a7b377f52a50189beae75e8
Hint: mm: orc; opt: speed; options: -d:release 179006 lines; 8.665s; 664.305MiB peakmem
We need to make --jsbigint=on the default.
--jsbigint=on
has already been the default.
The tests need to be enabled with -d:nimPreviewHashFarm
in the following PRs
Unlike present Nim this actually fills
Hash
forstring
& related.For the curious, note that
hashData
remains the aboriginal Nim string hasher &import hashes {.all.}
allows simultaneous test/time of {orig, murmur, farm} on your favorite CPU & back end compiler.Update tests also conditioned upon
nimPreviewHashFarm
so they should pass either with or without thatdefine
on.In
--jsbigint=on
mode, only the lower 32-bits ofHash
match nimvm & run-time values becausetype Hash = int
and on JS int=int32, not int64 as for 64-bit Nim platforms. Due to the matching,const
Table should match run-timeTable
on all platforms.To operate in
--jsbigint=off
mode is feasible but needs much "double precision mul/xor/ror/shr-arithmetic"-style work. That is distracting & also of questionable value since JS added BigInt in 2018, ringabout added Nim support for it in 2021 &nimPreviewHashFarm
is unlikely to swap from an opt-in to an opt-out default before 2025..2026 which will have given a backward looking time window of 7..8 years for deployment platforms - reasonably generous.Add a changelog entry for 2.2.