Unfortunately, the @manipulate macro can only rerun the expression at every update of any of its input.
What you need here is
Reactive's `sampleon` function:
using Reactive, Interact
f = figure();
α=slider(1:0.1:3)
β=slider(1:0.1:3)
γ=slider(1:0.1:3)
replot = button("Replot") # Commit your changes
map(display, α, β, γ, replot) # optional
sampled_coeffs = sampleon(redo, lift(tuple, α, β, γ))
withfig(f)
@lift plot(apply(fun, sampled_coeffs))
IPython doesn't do update on release, Interact, in fact, uses the same widgets. What it does do is have at most 4 updates at any given time in the processing pipeline (any more updates replace the last update in the queue).