Checkpoint the party/runtime stack before share-program and malicious-mode work.

Ship the TLS mesh, composer, Beaver/Yao/leaf MPC, prep/online paths, apps, and docs so the tree is pushable before elevating share_expr, security_mode, and prep resume.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ryan Henry 2026-09-28 05:59:19 -06:00
parent 695f8e84f7
commit 0d22946a0e
1835 changed files with 170291 additions and 2849 deletions

View file

@ -227,6 +227,9 @@ easy_lut<Raw> predicate_lut(unsigned fractional_bits, bool at_or_below_zero,
}
} // namespace detail
/// \complexity Two or three cuts around 0, from `predicate_lut` / `steps_from_cuts`. `Θ(1)` time and extra space.
/// @see grotto::make_exact_constant_lut
/// @see grotto::easy_lut
template <typename Raw>
HEDLEY_WARN_UNUSED_RESULT
@ -234,6 +237,9 @@ easy_lut<Raw> make_positive_lut(unsigned fractional_bits = 0)
{
return detail::predicate_lut<Raw>(fractional_bits, false, false, true);
}
/// \complexity Two or three cuts around 0, from `predicate_lut` / `steps_from_cuts`. `Θ(1)` time and extra space.
/// @see grotto::make_exact_constant_lut
/// @see grotto::easy_lut
template <typename Raw>
HEDLEY_WARN_UNUSED_RESULT
@ -241,6 +247,9 @@ easy_lut<Raw> make_negative_lut(unsigned fractional_bits = 0)
{
return detail::predicate_lut<Raw>(fractional_bits, true, false, false);
}
/// \complexity Two or three cuts around 0, from `predicate_lut` / `steps_from_cuts`. `Θ(1)` time and extra space.
/// @see grotto::make_exact_constant_lut
/// @see grotto::easy_lut
template <typename Raw>
HEDLEY_WARN_UNUSED_RESULT
@ -248,6 +257,9 @@ easy_lut<Raw> make_nonnegative_lut(unsigned fractional_bits = 0)
{
return detail::predicate_lut<Raw>(fractional_bits, false, true, true);
}
/// \complexity Two or three cuts around 0, from `predicate_lut` / `steps_from_cuts`. `Θ(1)` time and extra space.
/// @see grotto::make_exact_constant_lut
/// @see grotto::easy_lut
template <typename Raw>
HEDLEY_WARN_UNUSED_RESULT
@ -255,6 +267,9 @@ easy_lut<Raw> make_nonpositive_lut(unsigned fractional_bits = 0)
{
return detail::predicate_lut<Raw>(fractional_bits, true, true, false);
}
/// \complexity Two or three cuts around 0, from `predicate_lut` / `steps_from_cuts`. `Θ(1)` time and extra space.
/// @see grotto::make_exact_constant_lut
/// @see grotto::easy_lut
template <typename Raw>
HEDLEY_WARN_UNUSED_RESULT
@ -262,6 +277,9 @@ easy_lut<Raw> make_zero_lut(unsigned fractional_bits = 0)
{
return detail::predicate_lut<Raw>(fractional_bits, false, true, false);
}
/// \complexity Two or three cuts around 0, from `predicate_lut` / `steps_from_cuts`. `Θ(1)` time and extra space.
/// @see grotto::make_exact_constant_lut
/// @see grotto::easy_lut
template <typename Raw>
HEDLEY_WARN_UNUSED_RESULT
@ -269,6 +287,9 @@ easy_lut<Raw> make_nonzero_lut(unsigned fractional_bits = 0)
{
return detail::predicate_lut<Raw>(fractional_bits, true, false, true);
}
/// \complexity Two or three cuts around 0, from `predicate_lut` / `steps_from_cuts`. `Θ(1)` time and extra space.
/// @see grotto::make_exact_constant_lut
/// @see grotto::easy_lut
template <typename Raw>
HEDLEY_WARN_UNUSED_RESULT
@ -283,6 +304,8 @@ easy_lut<Raw> make_signum_lut(unsigned fractional_bits = 0)
return detail::easy_poly{one, 0, 0, 1};
});
}
/// \complexity One cut per bit of `raw_width<Raw>()` (the powers of two, plus 0 and 1). `Θ(w)` time and extra space, `w` the raw width.
/// @see grotto::eval_bit_width
template <typename Raw>
HEDLEY_WARN_UNUSED_RESULT
@ -296,6 +319,8 @@ easy_lut<Raw> make_clz_lut(unsigned fractional_bits = 0)
return detail::unit_poly(detail::clz_of<Raw>(raw), fractional_bits);
});
}
/// \complexity Cuts at `±2^e` across the raw width. `Θ(w)` time and extra space.
/// @see grotto::exact_constant
template <typename Raw>
HEDLEY_WARN_UNUSED_RESULT
@ -316,6 +341,9 @@ easy_lut<Raw> make_clrsb_lut(unsigned fractional_bits = 0)
return detail::unit_poly(detail::clrsb_of<Raw>(raw), fractional_bits);
});
}
/// \complexity One cut per bit on each side of zero (`Θ(w)`), then one `ilogb_units` (a `floor_log2`) per piece. `Θ(w)` time and extra space.
/// @see grotto::exact_constant
/// @note `ilogb(0)` is the sentinel `ilog_of_zero`, not a logarithm.
template <typename Raw>
HEDLEY_WARN_UNUSED_RESULT
@ -339,6 +367,10 @@ easy_lut<Raw> make_ilogb_lut(unsigned fractional_bits = 0)
fractional_bits);
});
}
/// \complexity For each decimal exponent from `ilog10_units(1)` to the exponent of the type max, two binary searches over the positive raw domain (`Θ(w)` probes each).
/// The exponent count is `Θ(w)`. Time `Θ(w²)` probes. Extra space is the cut vector, one cut per exponent class.
/// @see grotto::exact_constant
/// @note `ilog10(0)` is `ilog_of_zero`.
template <typename Raw>
HEDLEY_WARN_UNUSED_RESULT
@ -401,10 +433,14 @@ easy_lut<Raw> make_ilog10_lut(unsigned fractional_bits = 0)
/// @details Index 0 is the sign bit. Larger indexes are refused: the bit is constant
/// on `2^{index+1}` intervals.
/// @tparam Raw underlying representation
/// @param index the index
/// @param index bit index counting down from the MSB; must be `< msb_bit_limit`
/// @param fractional_bits the number of fractional bits
/// @return Bit `index` counting down from the most significant bit of `Raw`
/// @throws std::invalid_argument if `only the most significant bits are piecewise-cheap`
/// \complexity The hot bit is constant on steps of `2^{width-1-index}`. The cut loop emits `Θ(2^{index})` boundaries, and `index` must be `< msb_bit_limit` (8), so at most 256 cuts.
/// Time and extra space `Θ(2^{index})`.
/// @see grotto::easy_lut
/// @see grotto::eval_bit_width
template <typename Raw>
HEDLEY_WARN_UNUSED_RESULT
easy_lut<Raw> make_msb_lut(unsigned index, unsigned fractional_bits = 0)