Op 03-12-2023 om 18:26 schreef Nala Ginrut: > (jit-define (square x) > (:anno: (int) -> int) > (* x x)) > (square 5) Potentially-overflowing arithmetic involving ints (not unsigned ints, but ints)? Best document somewhere to what the jit code '(* x x)' evaluates when (not (<= min-int (* x x) max-int))). Personally, I'm in favor of explicit long names like */error-on-overflow (<-- maybe on the C-level the function could return a tagged union representing (failure [no value]) / (success [some value], at a slight performance cost) */wrap-around */undefined-on-overflow (<-- like in C, for maximal performance and dragons). (Likewise for +, - and unsigned int) Sure, they are a bit verbose, but they are explicit and non-explicitness+undefined behaviour of'*' in C has caused serious issues in the past, so I'd think it's better that the programmer has to choose what, in their situation, are the appropriate semantics. If/when someone desired shorter names, there could be a (jit-define-alias * */wrap-around) or something like that for that? Best regards, Maxime Devos