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

@ -6,6 +6,7 @@
/// Trivially default-constructible slots are left uninitialized
/// because evaluation overwrites every slot it is responsible for.
///
/// `bit` / `gf2`, `twobit` / `gf22`, and `nyble` / `gf24` slots are packed.
/// `eval_interval` and recipe `eval_sequence` take the buffer by
/// non-const reference. The returned iterable refers into it.
/// @snippet evaluation/output_buffers.cpp output-buffer
@ -314,11 +315,21 @@ auto make_output_buffer_for_interval(InputT from, InputT to)
make_output_buffer_for_interval<DpfKey, Is>(from, to)...);
}
/// @brief Buffer sized for the tree walk of `[from, to]` after `offset_x`.
/// @details Matches `make_basic_interval_memoizer(dpf, from, to)`: leaf packing
/// depends on alignment once a wildcard offset is ready.
template <std::size_t I = 0,
typename DpfKey,
typename InputT>
inline auto make_output_buffer_for_interval(const DpfKey &, InputT from, InputT to)
inline auto make_output_buffer_for_interval(const DpfKey & dpf, InputT from, InputT to)
{
using input_type = typename DpfKey::input_type;
if (dpf.offset_x.is_ready())
{
return make_output_buffer_for_interval<DpfKey, I>(
dpf.offset_x(static_cast<input_type>(from)),
dpf.offset_x(static_cast<input_type>(to)));
}
return make_output_buffer_for_interval<DpfKey, I>(from, to);
}
@ -327,8 +338,15 @@ template <std::size_t I0,
std::size_t ...Is,
typename DpfKey,
typename InputT>
inline auto make_output_buffer_for_interval(const DpfKey &, InputT from, InputT to)
inline auto make_output_buffer_for_interval(const DpfKey & dpf, InputT from, InputT to)
{
using input_type = typename DpfKey::input_type;
if (dpf.offset_x.is_ready())
{
const auto tfrom = dpf.offset_x(static_cast<input_type>(from));
const auto tto = dpf.offset_x(static_cast<input_type>(to));
return make_output_buffer_for_interval<DpfKey, I0, I1, Is...>(tfrom, tto);
}
return make_output_buffer_for_interval<DpfKey, I0, I1, Is...>(from, to);
}
@ -382,6 +400,7 @@ template <typename DpfKey,
typename ReturnType = return_entire_node_tag_>
auto make_output_buffer_for_subsequence(ForwardIterator begin, ForwardIterator end, ReturnType return_type = ReturnType{})
{
(void)return_type;
using dpf_type = DpfKey;
using output_type = typename DpfKey::concrete_output_type<I>;
using buffer_elem = leaf_buffer_elem_t<DpfKey, output_type>;
@ -447,6 +466,7 @@ template <typename DpfKey,
typename ReturnType = return_entire_node_tag_>
auto make_output_buffer_for_recipe_subsequence(const sequence_recipe & recipe, ReturnType return_type = ReturnType{})
{
(void)return_type;
using dpf_type = DpfKey;
using output_type = typename DpfKey::concrete_output_type<I>;
using buffer_elem = leaf_buffer_elem_t<DpfKey, output_type>;