What's new in Streck 2.0
Functions now support explicit type annotations for parameters. Two new
keywords have been introduced: monetary for numeric values
and string for text values. This makes your code clearer
and helps catch errors early.
Before (Streck 1.x):
func Sale(priceInclVat) {
bookkeep Company1 {
debit A1920 with priceInclVat
credit A3010 with priceInclVat
} comment 'Sale recorded.'
}
After (Streck 2.0):
func Sale(monetary priceInclVat) {
bookkeep Company1 {
debit A1920 with priceInclVat
credit A3010 with priceInclVat
} comment 'Sale recorded.'
}
Functions can now accept text values using the string keyword.
Combined with string interpolation, this enables more expressive output.
func Greet(string name) {
print 'Hello, \(name)!\n'
}
func Invoice(string customer, monetary amount) {
print 'Invoice for \(customer)\n'
print 'Amount due: \(amount)\n'
}
String variables can now be embedded directly in print and
comment statements using the \(variablename) syntax.
func Invoice(string customer, monetary amount) {
bookkeep Company1 {
debit A1510 with amount
credit A3010 with amount
} comment 'Invoice to \(customer).'
}
The manual, MCP server, and all examples have been updated to reflect the Streck 2.0 syntax as of September 15, 2026.
To migrate your Streck 1.x files to Streck 2.0, add the monetary
keyword before each numeric parameter in your function definitions. If you
have parameters that should hold text, use the string keyword instead.