OvumDocs

System Library & Interop

The sys namespace provides essential system operations including I/O, time, process control, and foreign function interface capabilities.

Basic I/O

Time and Date Operations

Unix Time Functions

Date/Time Formatting

Common Format Specifiers

File Operations

File System Operations

Directory Operations

Process Control

Random Number Generation

Memory and Performance

System Information

Foreign Function Interface (FFI)

Usage Examples

Date/Time Operations

// Get current time in different formats
val unixTime: Int = sys::UnixTime()
val unixTimeMs: Int = sys::UnixTimeMs()
val unixTimeNs: Int = sys::UnixTimeNs()

// Format current time
val formatted: String? = sys::FormatDateTime(unixTime, "%Y-%m-%d %H:%M:%S")
if (formatted != null) {
    sys::PrintLine("Current time: " + formatted)
}

// High-precision timing
val start: Int = sys::NanoTime()
// ... do some work ...
val end: Int = sys::NanoTime()
val duration: Int = end - start
sys::PrintLine("Operation took " + duration.ToString() + " nanoseconds")

File Operations

// Read and write files
val file: File? = sys::OpenFile("data.txt", sys::FileMode::Read)
if (file != null) {
    val content: String? = file.ReadAllText()
    if (content != null) {
        sys::PrintLine("File content: " + content)
    }
    file.Close()
}

// Write to file
val outputFile: File? = sys::OpenFile("output.txt", sys::FileMode::Write)
if (outputFile != null) {
    val success: Bool = outputFile.WriteAllText("Hello, World!")
    if (success) {
        sys::PrintLine("File written successfully")
    }
    outputFile.Close()
}

// Directory operations
if (sys::CreateDirectory("new_folder")) {
    sys::PrintLine("Directory created")
}

val files: StringArray? = sys::ListDirectory(".")
if (files != null) {
    for (filename in files) {
        sys::PrintLine("File: " + filename)
    }
}

System Information

// Get system information
sys::PrintLine("OS: " + sys::GetOsName() + " " + sys::GetOsVersion())
sys::PrintLine("Architecture: " + sys::GetArchitecture())
sys::PrintLine("CPU cores: " + sys::GetProcessorCount().ToString())
sys::PrintLine("Memory usage: " + sys::GetMemoryUsage().ToString() + " bytes")

// Environment variables
val path: String? = sys::GetEnvironmentVariable("PATH")
if (path != null) {
    sys::PrintLine("PATH: " + path)
}

Note: All function names use PascalCase (e.g., Print, UnixTime, OpenFile). The namespace remains sys.