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

val path : String = "TEMP_OVUM_FILE.txt"
val copyPath : String = "COPY_TEMP_OVUM_FILE.txt"
val content : String = "quidquid id est, timeo Danaos et dona ferentes."
val contentBytes : ByteArray = content.ToUtf8Bytes()
contentBytes.RemoveAt(-1) // circular indexing

var file : File = File()
file.Open(path, "w")
file.WriteLine(content)
file.Close()

var readFile : File = File()
readFile.Open(path, "r")
val extractedContent : String = readFile.ReadLine()
readFile.Close()
sys::PrintLine(extractedContent)

sys::CopyFile(path, copyPath)

var copyFile : File = File()
copyFile.Open(path, "r")
var extractedBytes : ByteArray = copyFile.Read(content.Length())
copyFile.Close()

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.