检查Tcl运行时并求值有界脚本
读取Tcl运行时描述符和已签名的就绪记录,然后对来自stdin的一个有界脚本求值,并检查其回执。
在Linux上使用Altifigence CLI 0.1.9,读取已安装的Tcl运行时描述符,确认已签名的运行时就绪记录,并通过已安装的运行器对一个有界Tcl脚本求值。
读取运行时描述符
请以普通用户身份运行命令。每个查询都根据随附的alti-tcl描述符作答,并输出JSON。
alti tcl capabilities
alti tcl environment
alti tcl commandsalti tcl commands列出已注册的产品命令以及每个命令的可用性。请将其输出与您的脚本一并保存。
检查已签名的运行时
请读取已签名的运行时就绪记录。此查询不会运行Tcl。
set -euo pipefail
WORK="$(mktemp -d)"
alti tcl readiness > "$WORK/readiness.json"
jq '{schemaVersion, installedQualified, cryptographicVerifierLinked, blocker}' \
"$WORK/readiness.json"在对脚本求值之前,请确认退出状态为0,且具有以下值:
{
"schemaVersion": "altifigence.eda-tcl-runtime-component-readiness.v1",
"installedQualified": true,
"cryptographicVerifierLinked": true,
"blocker": null
}对脚本求值
请通过stdin传入脚本并保存回执:
printf '%s' 'expr {6 * 7}' | alti --json tcl evaluate > "$WORK/tcl-evaluate.json"
jq '{schema, status, inputBytes, result, resultBytes, resultArtifactId, failure}' \
"$WORK/tcl-evaluate.json"请确认退出状态为0。选定的回执字段如下:
{
"schema": "altifigence.cli.tcl-evaluation.v1",
"status": "succeeded",
"inputBytes": 12,
"result": "42",
"resultBytes": 2,
"resultArtifactId": "tcl-evaluation",
"failure": null
}回执还包含inputSha256、jobSha256、resultArtifactSha256和provenance。在provenance中,resolved_placement为local,resolved_device_class为cpu,backend_id为embedded-tcl。
如果不使用--json,命令会将结果写入stdout,并将一行摘要写入stderr:
printf '%s' 'expr {6 * 7}' | alti tcl evaluate42
[succeeded] tcl.evaluate input=12 sha256=e96de7a3a920d7cd5aafa8c86630028d97a0fb0dc260da2f089de12ea4214a6f artifact=tcl-evaluation每次运行读取一个最大4194304字节的脚本。CLI会将其写入/tmp下的私有工作区,作为本地CPU作业运行,使用1个CPU槽位、536870912字节内存和5000毫秒的挂钟时间限制,再从运行器读回结果并删除该工作区。
处理失败的求值
使用--json时,请读取回执中的failure.code和failure.message。不使用时,stderr会显示Tcl evaluation failed:,后跟代码。
TCL_INPUT_EMPTY及Tcl input must not be empty.会以状态2退出。请通过管道传入非空脚本,并重新运行命令。
TCL_INPUT_TOO_LARGE及Tcl input exceeds the 4194304-byte limit.会以状态2退出。请将脚本保持在4194304字节以内。
status为failed、failure.code为eda-tcl.local-runner.unsupported-command且消息为local Tcl evaluation failed within the requested boundary时,会以状态1退出。对于产品命令,请从alti tcl commands中选择availability为available的条目,例如::alti::echo或::alti::capabilities。
TCL_INSTALLED_RUNNER_UNAVAILABLE及The installed qualified Tcl runner is unavailable.会以状态127退出。请运行0.1.9引导程序安装的alti,然后再次检查alti tcl readiness。