openkal.exec —— 可写的映射,发布之后可执行 - #4
Open
Sunrisepeak wants to merge 2 commits into
Open
Conversation
这个内核对两步都不设条件,所以这个实现无条件提供该接口 —— 不同于另一个系统, 在那里同一个接口只对以特定方式产出的制品可用,那是 6.5 覆盖的情形,不是这里的。 保留没有一上来就把映射设成可执行,尽管这个内核允许。目标环境里有两个拒绝 「既可写又可执行」的映射,所以在这里返回一块二者兼备的内存,等于给程序一个 它在别处用不了的形状 —— 而程序只会在那另一个系统上才发现。接口写的是更窄的 契约,这个实现照它来。 props 报 REPUBLISH:这个内核的保护调用不是单向的,调用方要改已发布的字节 不必丢弃整块区域。 验证:check-surface 对本实现报 56 个名字合规(此前 52,差的正是这四个); conformance --features full 报 103 held / 0 did not hold,其中包括 「写进区域并发布的指令被执行了」。 依赖改为 git + 分支,已实测可解析:mcpp 克隆 feat/openkal-closure 后构建通过。
它此前是写出来的,而规范第一次新增接口它就脱节了:SURFACE.txt 列了四个 kal_exec_* 名字,却没有发出 import openkal.exec,生成的测试报四个未声明的 标识符 —— 那名的是症状(有名字找不到),不是原因(这里有一份清单没跟上)。 SURFACE.txt 本来就把名字按 `# openkal.<接口>` 分组,它已经带着这份清单。 types 不是那里的一个组(它不声明任何 kal_ 名字),单独写。 本地按 CI 的步骤复现:推导出十行 import(含 exec),生成的测试 1 passed。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
提供规范新增的
openkal.exec。这个内核对「取得可写映射」和「改成可执行」两步都不设条件,所以无条件提供 —— 不同于另一个系统,在那里同一个接口只对以特定方式产出的制品可用(规范 6.5)。保留没有一上来就把映射设成可执行,尽管这个内核允许。目标环境里有两个拒绝「既可写又可执行」的映射,所以在这里返回一块二者兼备的内存,等于给程序一个它在别处用不了的形状 —— 而程序只会在那另一个系统上才发现。接口写的是更窄的契约,这个实现照它来。
kal_exec_props报REPUBLISH:这个内核的保护调用不是单向的,调用方要改已发布的字节不必丢弃整块区域。验证
check-surface.sh:56 个名字合规(此前 52,差的正是这四个)conformance --features full:103 held / 0 did not hold,其中包括「写进区域并发布的指令被执行了」feat/openkal-closure后构建通过需与 mcpplibs/openkal#6 一起合入。