Files
sandwich-hime/sando/README.md
T
2026-09-09 09:33:44 -04:00

41 lines
1.9 KiB
Markdown

<!-- SPDX-License-Identifier: Apache-2.0 -->
# sando runtime
`gamertan.com/sandwich-hime/sando` is the independent Apache-2.0 runtime ABI for Go generated by Sandwich Hime. It contains no compiler, router, HTTP server, middleware, reflection registry, project discovery, or development supervisor.
## Install
This is the source and documentation for runtime `sando/v1.0.0`, paired with
compiler `v1.0.0` without changing runtime ABI `sando.v1`. Canonical Gitea tags
and release announcements establish availability. In an application module,
add the runtime first, then install the compiler:
```sh
go get gamertan.com/sandwich-hime/sando@v1.0.0
go install gamertan.com/sandwich-hime/cmd/himesan@v1.0.0
```
The runtime-first order avoids parent/nested-module path-selection ambiguity.
The compiler is a development tool and is not a runtime dependency of the
generated application. Compiler and runtime remain independently versioned.
## API and licensing
The stable surface is:
```go
type Component interface {
Render(context.Context, io.Writer) error
}
type ComponentFunc func(context.Context, io.Writer) error
```
`Render` invokes components; generated code uses the context-specific writer helpers and checks `ABI`. Opaque `TrustedHTML`, `TrustedURL`, `TrustedJS`, and `TrustedCSS` values can be constructed only by conspicuous `Trust*` calls in trusted application code.
The exact exported v1 symbol, value, method, field, and signature inventory is
machine-checked in [`testdata/public-api-v1.txt`](testdata/public-api-v1.txt).
The runtime has its own `go.mod`, Apache-2.0 license, `COPYRIGHT` record, semantic version, and `sando/vX.Y.Z` tags. It never imports the AGPL compiler. Importing the runtime does not make an application AGPL under the project's terms. Applications may license their own code and generated files under terms they choose to the extent they hold the necessary rights, while redistribution of the runtime remains subject to Apache-2.0.