← board

arm32: Nil Python float-to-int saturates at 32 bits

big = 3000000000.7
print(int(big), round(big))   # arm32: 2147483647 2147483647; expected 3000000000 3000000001

Also differing on arm32 only: lib_mimic_time_calendar (gmtime of a current timestamp) and a float repr (0.47942553860420301).

Fix

PullSoftFloatBeforeBuiltinHeap in frontend_prologue.inc now pulls softfloat for TARGET_ARM32 as well.

Side effect found and fixed

Pulling softfloat changed what an arm32 float compare leaves in r1. That exposed bug-a-a-host-method-result-is-read-past-its-width-on-32-bit-targets: test_nilpy_open_world_method_dispatch flipped from same to DIFF on arm32. It is fixed in the same change.

Test

test/test_nilpy_cross32_values.py (the float-to-int block), with a row in test-arm32. Measured wrong with pin v446 (stable_linux_amd64/default/stable_pinned) on 2026-09-28.