ceylon.language.runtime.ceylon Maven / Gradle / Ivy
"Represents the machine and virtual machine on which the
current process is executing.
Holds information about runtime name, version and about
inherent limitations like minimum/maximum values that can
be represented by the runtime."
see (`value process`, `value language`, `value system`,
`value operatingSystem`)
tagged("Environment")
shared native object runtime {
"A string that identifies the kind of virtual machine
this process is executing:
- `jvm` when executing a Java Virtual Machine,
- `js` when executing any kind of JavaScript virtual
machine, or
- `dartvm` when executing the Dart VM."
since ("1.3.1")
shared native String type;
"The name of the virtual machine this process is
executing:
- `jvm` when running on a Java Virtual Machine,
- `node.js` when running on Node.js,
- `Browser` when running in a web browser
(if the `window` object exists), or
- `DartVM` when running on the Dart VM."
deprecated ("Use [[type]]")
shared native String name;
"The version of the virtual machine this process is
executing."
shared native String version;
"The number of bits used to represent the value of an
[[Integer]]."
see (`class Integer`)
shared native Integer integerSize;
"The number of bits of [[Integer]] instances which may
be manipulated via the methods inherited from
[[Binary]]."
since("1.1.0")
shared native Integer integerAddressableSize;
"The smallest [[Integer]] value that can be represented
by the runtime.
It is the minimum `Integer` that can be distinguished
from its successor using below formula:
`Integer(n-1) = Integer(n) - 1` with `Integer(0) = 0`"
see (`class Integer`)
shared native Integer minIntegerValue;
"The largest [[Integer]] value that can be represented
by the runtime.
It is the maximum `Integer` that can be distinguished
from its predecessor using below formula:
`Integer(n+1) = Integer(n) + 1` with `Integer(0) = 0`"
see (`class Integer`)
shared native Integer maxIntegerValue;
"The maximum size of an [[Array]] that is possible for
this runtime. Note that this is a theoretical limit
only. In practice it is usually impossible to allocate
an array of this size, due to memory constraints."
see (`class Array`)
since("1.1.0")
shared native Integer maxArraySize;
"The largest finite [[Float]] value that can be
represented by the runtime."
since("1.2.0")
shared native Float maxFloatValue;
"The smallest positive nonzero [[Float]] value that can
be represented by the runtime."
since("1.2.0")
shared native Float minFloatValue;
"The _machine epsilon_ for [[floating point|Float]]
values. That is, the smallest value `e` such that:
1.0 + e > 1.0"
since("1.2.0")
shared native Float epsilon;
"The largest [[Integer]] that can be exactly represented
as a [[Float]] without loss of precision. The negative
of this value is the smallest `Integer` that can be
exactly represented as a `Float`."
see (`value Integer.float`)
since("1.2.0")
shared native Integer maxExactIntegralFloat;
string => "runtime [``type`` / ``version``]";
}
shared native("jvm") object runtime {
import java.lang {
System,
Long,
Double,
Int=Integer,
Math
}
shared native("jvm") String type => "jvm";
shared native("jvm") String name => "jvm";
shared native("jvm") String version
=> System.getProperty(
"java.specification.version");
shared native("jvm") Integer integerSize
=> 64;
shared native("jvm") Integer integerAddressableSize
=> 64;
shared native("jvm") Integer minIntegerValue
=> Long.minValue;
shared native("jvm") Integer maxIntegerValue
=> Long.maxValue;
shared native("jvm") Integer maxArraySize
= Int.maxValue - 8;
shared native("jvm") Float maxFloatValue
=> Double.maxValue;
shared native("jvm") Float minFloatValue
=> Double.minValue;
shared native("jvm") Float epsilon
= Math.ulp(1.0);
shared native("jvm") Integer maxExactIntegralFloat
= 2^53-1;
}
shared native("js") object runtime {
shared native("js") String type => "js";
shared native("js") String name {
dynamic {
if (is String version
= process.propertyValue("node.version")) {
return "node.js";
}
else if (exists window) {
return "Browser";
}
else {
return "Unknown JavaScript environment";
}
}
}
shared native("js") String version {
dynamic {
if (is String version
= process.propertyValue("node.version")) {
return version;
}
else if (is String version
= process.propertyValue("browser.version")) {
return version;
}
else {
return "Unknown";
}
}
}
shared native("js") Integer integerSize => 53;
shared native("js") Integer integerAddressableSize => 32;
shared native("js") Integer minIntegerValue = -(2^53-1);
shared native("js") Integer maxIntegerValue = 2^53-1;
shared native("js") Integer maxArraySize = 2^32-1;
shared native("js") Float epsilon = 2.0^(-52);
shared native("js") Integer maxExactIntegralFloat
=> maxIntegerValue;
shared native("js") Float maxFloatValue {
dynamic {
return \iNumber.\iMAX_VALUE;
}
}
shared native("js") Float minFloatValue {
dynamic {
return \iNumber.\iMIN_VALUE;
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy