#791·Bend

检查器递归深度: 含有 ~10k 级别的有效程序(例如 10000n 字面)会出现"机器栈溢出"错误

作者: docxology创建于 2026年9月18日更新于 2026年9月18日

你所做的一切 # # What you did

zz
# 点燃.bend #
导入基数

daf 主( ) - > 纳特:
10000n( 百万吨)

`bend little.bend' (同样通过包/节点导入钩)。

发生了什么事#

错误: 机器堆栈溢出( 深层复发, 或字数太大, 无法扩展)
  • " 5000n " 检查和运行情况良好; " 10000n " (以及超过公布的 " 数量 " 的任何东西)死亡。
  • 相同的溢出点击中有效的非文体程序:一个有~4,000相继多块语句的单一def正文失败,而2000个语句的同一程序编译(73s——参见单独的四相编译报告).

因此,检查器实际的名词深度预算是10k 构造器节点/呼叫框,远远低于任何有文件记载的限度,而"MAX SAFE INTEGER"在"parse term num" (bend.ts:2234)中的"守护"是装饰性的:在10k到9e15之间没有任何东西可以扩展.

失败本身被处理( 被RangeError 带一个体面的信息), 因此这是一个强性/ 可用性问题, 而不是崩溃: 有效的程序失败, 其信息不会说字面或构造太深 。

□ 预期

  • 使检查器的回转深度预算明确和迭接性能低廉(Nat字形的扩展循环本身是迭接;溢出在检查/正常化时发生在下游)。
  • 至少,在违法期间接下溢出,并报告"这个字面/时间太大了(限制~N)".

□版本/系统

  • 2.0.5(主@e6676b0)
  • 达尔文臂64

内容来源: HigherOrderCO/Bend