Проверка среды выполнения Tcl и выполнение ограниченного скрипта
Прочитайте дескрипторы среды выполнения Tcl и подписанную запись о готовности, затем выполните один ограниченный скрипт из stdin и проверьте его квитанцию.
Используйте Altifigence CLI 0.1.9 в Linux, чтобы прочитать дескрипторы установленной среды выполнения 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. Для команд продукта выберите запись со значением availability available из alti tcl commands, например ::alti::echo или ::alti::capabilities.
TCL_INSTALLED_RUNNER_UNAVAILABLE с The installed qualified Tcl runner is unavailable. завершается с кодом 127. Запустите alti, который установил начальный установщик 0.1.9, затем снова проверьте alti tcl readiness.