Die Tcl-Laufzeit prüfen und ein begrenztes Skript auswerten

Lesen Sie die Deskriptoren der Tcl-Laufzeit und den signierten Bereitschaftsdatensatz, werten Sie dann ein begrenztes Skript aus stdin aus und prüfen Sie dessen Beleg.

Verwenden Sie Altifigence CLI 0.1.9 unter Linux, um die Deskriptoren der installierten Tcl-Laufzeit zu lesen, den signierten Bereitschaftsdatensatz der Laufzeit zu bestätigen und ein begrenztes Tcl-Skript über den installierten Runner auszuwerten.

Die Deskriptoren der Laufzeit lesen

Führen Sie die Befehle mit Ihrem normalen Benutzerkonto aus. Jede Abfrage antwortet aus den mitgelieferten alti-tcl-Deskriptoren und gibt JSON aus.

alti tcl capabilities
alti tcl environment
alti tcl commands

alti tcl commands listet die registrierten Produktbefehle und die Verfügbarkeit jedes Befehls auf. Bewahren Sie die Ausgabe zusammen mit Ihren Skripten auf.

Die signierte Laufzeit prüfen

Lesen Sie den signierten Bereitschaftsdatensatz der Laufzeit. Diese Abfrage führt kein Tcl aus.

set -euo pipefail
WORK="$(mktemp -d)"
alti tcl readiness > "$WORK/readiness.json"
jq '{schemaVersion, installedQualified, cryptographicVerifierLinked, blocker}' \
  "$WORK/readiness.json"

Prüfen Sie vor der Auswertung eines Skripts, dass der Exit-Status 0 ist und diese Werte vorliegen:

{
  "schemaVersion": "altifigence.eda-tcl-runtime-component-readiness.v1",
  "installedQualified": true,
  "cryptographicVerifierLinked": true,
  "blocker": null
}

Ein Skript auswerten

Übergeben Sie das Skript über stdin und speichern Sie den Beleg:

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"

Prüfen Sie, dass der Exit-Status 0 ist. Die ausgewählten Felder des Belegs lauten:

{
  "schema": "altifigence.cli.tcl-evaluation.v1",
  "status": "succeeded",
  "inputBytes": 12,
  "result": "42",
  "resultBytes": 2,
  "resultArtifactId": "tcl-evaluation",
  "failure": null
}

Der Beleg enthält außerdem inputSha256, jobSha256, resultArtifactSha256 und provenance. In provenance ist resolved_placement gleich local, resolved_device_class gleich cpu und backend_id gleich embedded-tcl.

Ohne --json schreibt der Befehl das Ergebnis nach stdout und eine Zusammenfassungszeile nach stderr:

printf '%s' 'expr {6 * 7}' | alti tcl evaluate
42
[succeeded] tcl.evaluate input=12 sha256=e96de7a3a920d7cd5aafa8c86630028d97a0fb0dc260da2f089de12ea4214a6f artifact=tcl-evaluation

Jede Ausführung liest ein Skript von bis zu 4194304 Bytes. Die CLI schreibt es in einen privaten Arbeitsbereich unter /tmp, führt es als lokalen CPU-Job mit 1 CPU-Slot, 536870912 Bytes Speicher und einem Wall-Time-Limit von 5000 ms aus, liest das Ergebnis vom Runner zurück und entfernt den Arbeitsbereich.

Nach einer fehlgeschlagenen Auswertung fortfahren

Lesen Sie mit --json failure.code und failure.message im Beleg. Ohne diese Option zeigt stderr Tcl evaluation failed: gefolgt vom Code.

TCL_INPUT_EMPTY mit Tcl input must not be empty. beendet sich mit dem Exit-Status 2. Übergeben Sie ein nicht leeres Skript per Pipe und führen Sie den Befehl erneut aus.

TCL_INPUT_TOO_LARGE mit Tcl input exceeds the 4194304-byte limit. beendet sich mit dem Exit-Status 2. Begrenzen Sie das Skript auf 4194304 Bytes.

status failed mit failure.code eda-tcl.local-runner.unsupported-command und der Meldung local Tcl evaluation failed within the requested boundary führt zum Exit-Status 1. Wählen Sie für Produktbefehle einen Eintrag mit availability available aus alti tcl commands, beispielsweise ::alti::echo oder ::alti::capabilities.

TCL_INSTALLED_RUNNER_UNAVAILABLE mit The installed qualified Tcl runner is unavailable. beendet sich mit dem Exit-Status 127. Führen Sie das alti aus, das der Bootstrap 0.1.9 installiert hat, und prüfen Sie dann alti tcl readiness erneut.

CLI-Engine-Befehle