Skip to main content

Spine language (handbook)

Spine is the Dataspine DSL (.spine files) for the types, Ingest / Outlet / KeyValue surface, and flow of a data product. The compiler validates and type-checks sources, reads the Data Product Manifest together with your tree, resolves the dataspine standard library in com.dataspine, and emits build artifacts for the CLI.

This part of the site is the handbook (day-to-day authoring), similar in role to the TypeScript Handbook versus the full specification in Resources.

Quick orientation

Who this handbook is for

  • Authors of namespaces, types, ingests/outlets, and flows.
  • Teams integrating Spark / codegen / reviews who need a readable overview before diving into the spec.
  • If you need lexer and grammar detail (token rules, every operator form), use Spine language (specification) in Resources (linked below), not the handbook alone.

Handbook chapters (in the sidebar)

ChapterPurpose
Data product pipelinesFlows, stream methods (.map, joins, publish, and related patterns)
Runtime librarycom.dataspine, --lib bundles, and where generated API docs live

Language specification (Resources)

The normative chapters for implementors and power users (lexical structure through appendix) are maintained under Resources so they are not the default path for product authors.

Spec chapterOpen
Lexical structureLexical structure
KeywordsKeywords
TypesTypes
DeclarationsDeclarations
ExpressionsExpressions
OperatorsOperators
StatementsStatements
Pattern matchingPattern matching
AppendixAppendix

Spine sources use the .spine extension.

Minimal example

namespace com.example.events {
Struct Event {
message: String,
}

Ingest EventIngest {
name: "EventIngest",
type: Event,
}

Outlet EventOutlet {
name: "EventOutlet",
type: Event,
}

flow = EventIngest.map(e -> e).publish(EventOutlet)
}

The name strings on Ingest, Outlet, and KeyValueApi wire runtime messages to these declarations. That binding is a data product concern, expressed in Spine.

See also