lean4-htt/src/include/lean
Henrik Böving 2cfd980528
fix: revert the waitAny refactoring (#11000)
This PR fixes a memleak caused by the Lean based `IO.waitAny`
implementation by reverting it.

This the faulty Lean implementation:
```lean
def IO.waitAny (tasks : @& List (Task α)) (h : tasks.length > 0 := by exact Nat.zero_lt_succ _) :
    BaseIO α := do
  have : Nonempty α := ⟨tasks[0].get⟩
  let promise : IO.Promise α ← IO.Promise.new
  tasks.forM <| fun t => BaseIO.chainTask (sync := true) t promise.resolve
  return promise.result!.get
```
In a situation where we call this function repeatedly in a loop with a
pair of tasks `[t1, t2]`
where `t2` is a long lived task that we pass every time and `t1` is
fresh a short lived task, `t2` will
accumlate more and more children from `BaseIO.chainTask` that fill
memory over time. The old C++
implementation did not have this issue so we are reverting.
2025-10-29 08:27:16 +00:00
..
lean.h fix: revert the waitAny refactoring (#11000) 2025-10-29 08:27:16 +00:00
lean_gmp.h fix: do not dllexport symbols in core static libraries (#3601) 2024-03-15 11:58:34 +00:00
lean_libuv.h feat: link LibUV (#4963) 2024-08-12 12:33:24 +00:00