Omniscript Examples
April 11, 2025 · View on GitHub
Core Features
Memory Management
// Enable memory management features
runtime.enableMemoryManagement();
// Monitor memory usage
setInterval(() => {
const usage = runtime.getMemoryUsage();
console.log("Memory stats:", usage);
}, 10000);
// Detect circular references
runtime.detectCircularReferences();
Reactive Programming
// Event streams
const clicks = new Stream<MouseEvent>();
clicks.subscribe(event => {
console.log(`Clicked at: ${event.x}, ${event.y}`);
});
// Reactive state
const counter = new Signal<number>(0);
counter.subscribe(value => {
console.log(`Counter: ${value}`);
});
// Derived state
const doubled = derived(counter, n => n * 2);
doubled.subscribe(value => {
console.log(`Doubled: ${value}`);
});
Actor Model
// Create a stateful counter actor
const counter = runtime.createActor(
(msg: "increment" | "decrement", state: number) => {
switch (msg) {
case "increment": return state + 1;
case "decrement": return state - 1;
}
},
0 // Initial state
);
// Send messages
counter.send("increment"); // State: 1
counter.send("increment"); // State: 2
counter.send("decrement"); // State: 1
Thread-Safe Collections
// Thread-safe list
const list = new List<number>();
await list.push(1);
await list.push(2);
// Thread-safe map
const cache = new Map<string, User>();
await cache.set("user1", { id: 1, name: "John" });
const user = await cache.get("user1");
Math Operations
import { MathUtils } from 'stdlib/math';
// Constants
console.log(MathUtils.PI); // 3.141592653589793
console.log(MathUtils.E); // 2.718281828459045
// Functions
console.log(MathUtils.factorial(5)); // 120
console.log(MathUtils.gcd(48, 18)); // 6
Web Development
HTTP Server
import { HTTP } from 'stdlib/network';
const app = new HTTP.Server();
app.get("/", (req, res) => {
res.send("Welcome!");
});
app.listen(3000);
Database Operations
import { Database } from 'stdlib/database';
interface User {
id: number;
name: string;
}
async fn getUsers(): Promise<User[]> {
return await Database.query<User>()
.where(u => u.active)
.orderBy(u => u.name)
.take(10);
}
WebSocket Example
import { WebSocket } from 'stdlib/network';
const ws = new WebSocket('ws://example.com');
ws.onMessage(msg => Console.log(msg));
Error Handling
Using Result Type
function divide(a: number, b: number): Result<number, Error> {
if (b === 0) {
return Result.Err(new Error("Division by zero"));
}
return Result.Ok(a / b);
}
const result = divide(10, 2);
if (result.isOk()) {
console.log(result.unwrap());
} else {
console.error(result.unwrapErr());
}
Pattern Matching
match user {
{ role: "admin" } => handleAdmin(),
{ role: "user", id } => handleUser(id),
_ => handleUnknown()
}
Testing Examples
Unit Testing
describe('MathUtils', () => {
test('factorial computes correct value', () => {
expect(MathUtils.factorial(5)).toBe(120);
});
test('gcd finds greatest common divisor', () => {
expect(MathUtils.gcd(48, 18)).toBe(6);
});
});
Reactive Testing
describe('Signal', () => {
test('notifies subscribers on value change', () => {
const signal = new Signal<number>(0);
const mockFn = jest.fn();
signal.subscribe(mockFn);
signal.value = 42;
expect(mockFn).toHaveBeenCalledWith(42);
});
});
Implementation Status
Core Features
✅ Memory Management ✅ Reactive Programming ✅ Actor Model ✅ Thread-Safe Collections ✅ Pattern Matching ✅ Error Handling
Standard Library
✅ Math Utilities ✅ HTTP Client/Server ✅ WebSocket Support ✅ Database Operations ✅ Threading Support
Development Tools
✅ Memory Profiling ✅ Garbage Collection ✅ Circular Reference Detection ✅ Performance Monitoring
For detailed implementation status, see our Project Status page.