扩展库 / rtree
rtree
二维空间索引。
以 R-tree 保存矩形及整数 ID,支持完整结果集查询、相交计数、删除和复用;无共享结果缓冲。
2026-10-30 补多层分裂的 12 次事件、36 个分配失败点,检查树字节、完整 ID、存活内存和立即恢复;Linux 两档 long double 均有 sanitizer 验证。新增 C/XLang 场景视野范例展示边缘相交、大 ID、移动及独立结果;删除再插入不是原子移动,查询顺序不固定。八个生成原型与正式 C 头一致,两平台七条普通独立程序通过;原顶层分配用例仍在 AOT 退出期失败,尚不签收整包。默认门禁保留失败现场及原始退出码,不将工具缺失或静默失败算作通过。
API
| 接口 | 用途 |
|---|---|
rtree.create() | 创建原生支持的 rtree.RTree |
insert / search / searchCount | 管理矩形和查询相交 ID |
remove / clear / count | 删除、清空与计数 |
范例
import rtree
rtree.RTree tree = rtree.create()
tree.insert(10, 0.0, 0.0, 2.0, 2.0)
var ids = tree.search(1.0, 1.0, 3.0, 3.0)
println(ids.length)
查询使用闭区间相交,结果顺序未定义;有限极值坐标也可插入和查询。C 整数 ID 与计数使用 int64_t,与 XLang int 的 LP64 ABI 一致。创建、插入和查询的分配失败抛 MemoryError,非法矩形抛 ValueError;仅按 ID 删除需扫描树。Windows test/check.ps1 -SkipAot 覆盖 C 暴力参照、包外原生方法访问拒绝、XLang 故障边界和三路范例固定输出;Linux 默认门禁另以两档 long double 运行 ASan/UBSan。双平台默认门禁现在还覆盖语言与 C 公开范例的独立 EXE;当前语言 AOT 的顶层原生对象在退出清理阶段报运行时状态错误,尚不能签收发布级。最小复现与边界见包内 README。