The std.contract.Equal contract needs to be lazy, which means that it re-implements equality logic in pure Nickel code, which has proven to be very slow (https://github.com/tweag/nickel/issues/1930).
This commit replaces the field difference operation, implemented using a left fold, by the new builtin operator %record/split_pair%, which shows a performance improvement of around 300% for the example of #1930.
The std.contract.Equal contract needs to be lazy, which means that it re-implements equality logic in pure Nickel code, which has proven to be very slow (https://github.com/tweag/nickel/issues/1930).
This commit replaces the field difference operation, implemented using a left fold, by the new builtin operator
%record/split_pair%
, which shows a performance improvement of around 300% for the example of #1930.