bechamel (@Zineb-Ada, @art-w, #38)exists_uint8 must be the same. Otherwise, the access to this value can have a cost which faults our result.Add several utility functions (@cfcs, @dinosaure, #26)
bytes_of_hex & string_of_hex, hex decodinghex_of_bytes & hex_of_string, hex encodingdivmod, unsigned int32 division with small divisorsascii_of_int32, conversion from int32 to decimal string representationlowercase_ascii & uppercase_ascii, constant-time implementation of String.{lower,upper}case_asciiselect_a_if_in_range, like select_int but only supporting positive rangesint_of_bool & bool_of_int, constant-time of Bool.to_intA documentation exists for each function. The constant-time is checked only systematically for divmod.
cstruct becomes a required dependency of eqafbigarray-compat (@hannesm, @dinosaure, #32)check/check.exe (@dinosaure, #31) The test check/check.exe is really volatile and should be executed into a controlled environment (for instance, with nice -n19 and a bare-metal computer). We still require the test for any improvement of eqaf but it is executed separately from our CI.find_uint8 (@dinosaure, @cfcs, #20)exists_uint8 (@dinosaure, @cfcs, #20)select_int, one_if_not_zero, zero_if_not_zero (@cfcs, @dinosaure, #19, #18)min and use <> operator to compare length on equal functioncompare_{be,le}{,with_len} function (@cfcs, @hannesm, @dinosaure)compare function (@dinosaure)compare (@dinosaure)compare (@dinosaure)equal functionPervasives functionsEqaf_bigstringEqaf_cstructeqaf package (@dinosaure, @hannesm, @cfcs)NOTE: This version is buggy, you MUST use v0.2 or v0.4
core_bench dependencyeqmlequal function to the OCaml implementation (instead C implementation)