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