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 Opening

FileMode Enumeration

File System Operations

Directory Operations

Process Control

Random Number Generation

Memory and Performance

Network Operations

System Information

Error Handling

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.