#1778·bubbletea

standardRenderer 在茶时间后仍可保持冻结状态。Exec: stop() 不会等待渲染 goroutine,因此其 ticker.Stop() 可以在 start() 的 ticker.Reset() 之后执行 (v1.3.10 和 v2.0.9)

作者: matraket创建于 2026年8月24日更新于 2026年8月24日

□ 总结

tea.Exec'(或释放终止 ' /Restore Terminal')之后,方案可以保持正常运行——每条信息发送,每条View ()'计算——而直到方案退出,任何信息都不能写到终端。 窗口是已执行命令的持续时间: 快速返回的命令( 无操作命令, 或无法启动的真正命令, 例如“ $EDITOR” 设定为不在 PATH 上的二进制命令) 多数时间都会击中它 。

** 受影响:** v1.3.10(最晚为v1)和v2.0.9(Charm.land/bubletea/v2',正线)。 在v2中,这种模式从标准-提交者.go'改为Program.startRender'/stopRender'。 Go 1.26.5, linux/amd64;也在 " 种族 " 下转载。

□ 机制

v1.3.10, " 标准投降者 " :

  • stop()' dos r.once.Do(func (){r.done <-struct}}}不等待 listen()'离开就返回。
  • " listen() " 在收到done'时,给r.ticker打电话。 stop()'并返回。
  • " start() " (取自Restore Terminal')称r.ticker'。 重新设置(r.framerate),并产生一个新的“ listen()”。

v2.0.9,tea.go' (startRender'/stopRender'):形状相同——stopRender'在p.once'下发出p.renderDone',而不等待;由startRender'呼唤p.ticker'产生的去向。 在收到通知时停止() " ;启动者 ' 呼叫p.ticker。 重设(框架)`。

没有什么命令 老goroutine的'ticker。 stop()' against the new ticker. ' (第 (一)段) 停止,反对新“ticker. 重设()'。 当停止()'在重置()'后运行时,计数器将永远停止,即重置()'上的新出行道块。 永远,没有再冲了 (只有去常规 和最后的停止呼叫冲浪) 将V1.3.10的当地拷贝装入两通电话上的指纹,在15通以上就具有100%的关联性:每通被冻结的运行在旧的 " 停 " ()之前都有 " 重置 " ,每通健康运行的运行则相反。

□ 最小复制

" 进入 " 返回。 执行命令不得执行;随后是tea'。 Tick ' 每20 ms, 20 次就撞出一个计数器, 然后退出; 输出到一个记忆中编剧, 连续50个程序。 -setle'使 " 无 " 命令在返回前睡眠100毫秒(控制:给老的出行时间)。 `-noexec' (v2程序) 跳过 exec 完全 (对探测器的控制).

检测:对于v1,当“执行后:勾选5”或“执行后:勾选10”都没有到达输出时,运行被冻结(最后一站冲出最后一帧,所以“勾选19”不是一个信号)。 v2的渲染器会写出单元格diffs而不是行,所以对于v2来说,程序会算出在上个终端恢复('ESC [?2004h')后所写的被擦除到屏幕末端的序列('ESC [J',每冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出一冲出.

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}请检查date=中的日期值 (帮助) |. 去跑. ' 50个被冻结的 6-19个被冻结的 50个被冻结的 6-19个被冻结的 5个被冻结的 5个被冻结的 6个被冻结的 6个被冻结的 5个被冻结的 6个被冻结的 5个被冻结的 6个被冻结的 6个被冻结的 5个被冻结的 5个被冻结的 5个被冻结的 6个被冻结的 6个被冻结的 5个被冻结的 5个被冻结的 = "去跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑" " 去跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑" "去跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑" 去跑. - 无 ' . . .

" settle " 控制显示,让旧的 " 例行公事 " 运行于 . . . . . . .

内容来源: charmbracelet/bubbletea