Skip to content

VPL - Overview

Design Philosophy

  • Everything is a Stream: No artificial distinction between listeners/streams
  • Declarative: User describes WHAT, not HOW
  • Composable: Operations chain naturally
  • Type-safe: Error detection at compile time
  • Observable: Built-in metrics and traces
  • Pythonic: Python-inspired syntax (optional indentation, clarity)

Quick Example

varpulis
# Simple stream definition
stream Trades = TradeEvent

# Filtering and aggregation
stream HighValueTrades = Trades
    .where(price > 10000)
    .window(5m)
    .aggregate(
        total: sum(price),
        count: count()
    )

# SASE+ pattern detection
stream FraudAlert = Trades
    .where(amount > 10000)
    .emit(
        alert_type: "fraud",
        severity: "high"
    )

Differences from Python

AspectPythonVPL
ParadigmImperative/OODeclarative/Stream
TypingDynamicStatic with inference
IndentationRequiredOptional (preferred)
Asyncasync/awaitImplicit (everything is async)
NullNonenull with optional types

Key Concepts

Streams

A stream is a potentially infinite sequence of typed events.

Events

An event is an immutable record with a timestamp.

Windows

Temporal windows to bound computations on streams.

Patterns

Detection rules on event sequences.

Aggregations

Reduction functions on windows (sum, avg, count, etc.).

Contexts

Named execution domains that run on dedicated OS threads. Enable multi-core parallelism with CPU affinity and cross-context communication via bounded channels.

See Also

Varpulis - Next-generation streaming analytics engine