array()'s cached string representation can go out of sync
还没有人认领这个 Issue。
评估
调研方向
首先,使用 issue 中的两个复现示例,跟踪 array() 的字符串表示缓存以及父级 dirty 标记行为。比较发生 mutation 后的缓存输出与底层 array 和可变原始值。完成的标准是:重复消息不再返回过时的表示,并且所选择的缓存行为已由测试覆盖。
由索引模型根据 Issue 内容生成。
描述
The cache used for array() its string representation runs out of sync with the actual array data in the following examples:
@a = array(1);
@b = array(@a);
@c = array(@a);
msg(@b); // Caching happens here, result is `{{1}}`.
msg(@c); // Caching happens here, result is `{{1}}`.
@a[0] = 2; // The array marks its last parent's cache as dirty, but not its other parent.
msg(@b); // Return cached result `{{1}}`, which is wrong at this point.
msg(@c); // Re-cache, returning the actual result `{{2}}`.
@a = mutable_primitive('test');
@b = array(@a);
msg(@b); // Caching happens here, result is `{test}`.
@a[] = 'newValue';
msg(@b); // Return cached result `{test}`, which is wrong at this point.
For arrays, marking all parents as dirty can be a solution (whereas it currently only marks the last parent as dirty). For mutable primitives, or user objects, the solution is not trivial. In my opinion, we could go without caching array string representations as soon as #1225 is merged and a similar solution for not sconcatting all code together is implemented in non-strict mode. I believe that arrays are not often used as their string representation, and if they are, they are rarely used twice (in which case the cache would improve performance).
- 主要语言
- Java
- 星标
- 128
- 派生
- 70
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
EngineHub/CommandHelper 的其他 Issue
-
discussion wanted documentation
难度 5/5 一周以上 新手友好度 25/100
EngineHub/CommandHelper#1403 ·
-
难度 5/5 一周以上 新手友好度 25/100
EngineHub/CommandHelper#1370 · 1 条评论 ·
-
bug
难度 4/5 3-5 天 新手友好度 35/100
EngineHub/CommandHelper#1354 ·
-
bug
难度 4/5 3-5 天 新手友好度 45/100
EngineHub/CommandHelper#1349 · 3 条评论 ·
-
bug
难度 5/5 一周以上 新手友好度 25/100
EngineHub/CommandHelper#1341 · 2 条评论 ·
查看 EngineHub/CommandHelper 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 85/100
HL7/fhir-ig-publisher#1375 ·
-
难度 2/5 1-3 小时 新手友好度 74/100
-
Flaky: a relaunched catch-up replay can still report catching up right after its marker is written 未关闭bug
难度 2/5 1-3 小时 新手友好度 78/100
johanhaleby/occurrent#1134 ·
-
bug
难度 2/5 1-3 小时 新手友好度 78/100
objectionary/jeo-maven-plugin#1811 ·
-
难度 2/5 1-3 小时 新手友好度 88/100