"Represents the system on which the current process is executing. Holds information about system time and locale." see (`value process`, `value runtime`, `value language`, `value operatingSystem`) tagged("Environment") shared native object system { "The elapsed time in milliseconds since midnight, 1 January 1970." shared native Integer milliseconds; "The elapsed time in nanoseconds since an arbitrary starting point." shared native Integer nanoseconds; "Returns the offset, in milliseconds, to add to UTC to get the local time for default timezone for this system." shared native Integer timezoneOffset; "Returns the IETF language tag representing the default locale for this system." shared native String locale; "Returns the IANA character set name representing the default character encoding for this system." since("1.1.0") shared native String characterEncoding; string => "system"; } shared native("jvm") object system { import java.lang { System } import java.util { TimeZone, Locale } import java.nio.charset { Charset { defaultCharset } } shared native("jvm") Integer milliseconds => System.currentTimeMillis(); shared native("jvm") Integer nanoseconds => System.nanoTime(); shared native("jvm") Integer timezoneOffset => TimeZone.default.getOffset(milliseconds); shared native("jvm") String locale => Locale.default.toLanguageTag(); shared native("jvm") String characterEncoding => defaultCharset().name(); } shared native("js") object system { shared native("js") Integer milliseconds { dynamic { return \iDate.now(); } } shared native("js") Integer nanoseconds { dynamic { return \iDate.now() * 1000000; } } shared native("js") Integer timezoneOffset { dynamic { return Date().getTimezoneOffset() * -60000; } } shared native("js") String locale { return process.propertyValue("user.locale") else normalizeLocaleTag(process.environmentVariableValue("LANG")) else "en"; } String? normalizeLocaleTag(String? tag) { if (exists tag, !tag.empty) { value p = tag.firstOccurrence('.'); String t = if (exists p) then tag[0:p] else tag; return t.replace("_", "-"); } else { return null; } } shared native("js") String characterEncoding => "UTF-16"; //JavaScript always uses UTF-16 }