v3.1.0Sprachspezifikation

VelinScript Language Specification

Die formale Definition der VelinScript Syntax und Semantik.

Übersicht

VelinScript ist eine moderne Programmiersprache für KI-APIs. Sie kombiniert die Einfachheit von modernen Sprachen mit leistungsstarken Features für API-Entwicklung, Security und KI/ML-Integration.

v3.1.0 Highlights
Multi-Target Compilation & GPU Acceleration.
v3.0.1 Highlights
SSA-Format IR, Borrow Checker & Prompt Optimizer.
v3.0 Highlights
KI-Compiler Passes & Auto-Parallelisierung.

Lexikalische Struktur

Kommentare & Doc-Comments

// Single-line Kommentar

/* Multi-line Kommentar */

/// Doc-Comment (für @VelinAutoDoc)
/// @param name - Der Name des Parameters
@VelinAutoDoc
fn example(name: string): string { ... }

Format-Strings (Interpolation)

let name = "John";
let message = "Hello, {name}!"; // Ergebnis: "Hello, John!"

let result = "Sum: {10 + 20}"; // Ergebnis: "Sum: 30"

Ownership & Borrowing (v3.0.1)

VelinScript unterstützt ein Ownership-System ähnlich Rust für garantierte Memory-Safety ohne Garbage Collector.

// Owned (Standard - Move Semantics)
fn take_ownership(data: string) { ... }

// Immutable Borrow (&T)
fn process(data: &string) { ... }

// Mutable Borrow (&mut T)
fn modify(data: &mut string) { ... }

// Shared Ownership (shared<T>)
fn shared_data(data: shared<string>) { ... }

Borrow-Regeln

  • Nur eine mutable Referenz gleichzeitig.
  • Mehrere immutable Referenzen gleichzeitig möglich.
  • Keine Mischung von mutable und immutable Referenzen.

Fehlerbehandlung

Syntaktischer Zucker, der in Result-Typen desugared wird.

try {
    return processData(data);
} catch (err: ValidationError) {
    return Result.err("Validation failed");
} catch (err) {
    return Result.err("Unknown error");
} finally {
    closeResources();
}

LLM-Call Expressions (v3.0.1)

Kompakte Syntax für LLM-Aufrufe mit automatischer Prompt-Optimierung (90%+ Token-Ersparnis).

let result = await @llm.analyze(text);
let summary = await @llm.summarize(long_text);
let sentiment = await @llm.sentiment(comment);
let translated = await @llm.translate(text, "en");