Versioningと安全性
Draft Stack 1.0はsource language、implementation、theme catalog、package versionを分離します。この境界を理解するとdocumentをportableにし、rendered outputの由来を追跡できます。
Language version
すべてのdocumentはmajor.minor directiveから始まります。
stack 1.0
diagram "Versioned source" {
node api "API"
}これはdocumentが必要とするminimum language grammar / semanticsで、engineやtheme versionではありません。M.N対応rendererは同じmajorでminorがN以下のdocumentをacceptし、異なるmajorや未対応のhigher minorをrejectします。Unknown future syntaxを推測しません。
Specification releaseはsemantic versioningを使います。Majorはincompatible language change、minorはbackwards-compatible capability追加、patchはvalid sourceの意味を変えないclarification / errataです。そのためdocument directiveにpatchはありません。
Rendererとcatalog identity
通常のengine resultにはengine version、authored language version、theme catalog version、catalog content revisionが入ります。Sourceのthemeはsymbolic identifierを選ぶだけで、package releaseをpinしたりremote dataを取得したりしません。
Exact pixel outputはlanguage compatibility promiseではありません。Theme metric、renderer version、font、canvas判断で位置が変わっても、node、group、relationship、label、kind、constraintは保持されます。
安全なsource boundary
Stack stringはplain textです。Sourceに実行code、任意HTML/Markdown、CSS、SVG、import、macro、file path、network URLは置けません。Engineはauthored textをescapeし、validated catalog icon、local marker reference、accessible title/description metadataを埋め込んだstandalone SVGを生成します。
Rendered SVGにはscript、event handler、任意external reference、host font measurement、runtime I/Oがありません。Missing icon/theme nameはpath解決やregistry接続ではなくbundled fallbackを選びます。
現在のdelivery status
- Browser Playgroundがsupport対象のpublic experienceです。
- Public
@stack-sh/engineがPlaygroundで使うtyped WebAssemblyformat、check、renderを提供します。 - Public
@stack-sh/languageがeditor highlight用のshared TextMate grammarと言語metadataを提供します。 - Native
stackcommandはprivate pre-release repositoryにありますが、support対象のexternal binaryとして未配布です。このdocsではinstall手順を案内しません。 - Authentication、persistence、collaboration、billing、entitlement、paid theme、remote theme registry、hosted rendering API、PNG/PDF export、multi-file project、LSPは現在のpublic productに含みません。
Normative language contractはstack-sh/specification、public theme catalogはstack-sh/theme、engine behaviorはstack-sh/engineが正本です。