B0_os
Operating system and machine information.
val name : string B0_store.key
name
is the operating system name. Determined using the following steps, in order:
If the uname
tool is available in the memo environment, name
is the lowercased token returned by uname -s
, transformed as follows:
"darwin"
is mapped on "macos"
COMSPEC
environment variable is defined in the memo environment, "windows"
."unknown"
.val version : string B0_store.key
version
is the operating system version string. This depends on the value of name
:
"freebsd"
. The output of uname -U
."linux"
. An Android heuristic is applied, otherwise looks the VERSION_ID
field of os-release if available, otherwise "unknown"
"macos"
. The output of sw_vers -productVersion
."windows"
. The parsed output of cmd.exe /c ver
. The Windows operating system to which this version string maps can be found here.uname
tool is available in the memo environment the result of uname -r
and otherwise "unknown"
.val distribution : string B0_store.key
distribution
is the operating system distribution or a package manager. This depends on the value of name
:
"linux"
. Looks up the ID
field of os-release if available, if not found "linux"
"macos"
. If either the brew
or port
tool is found in the memo environment then this is respectively "homebrew"
or "macports"
. The former takes over if both are present. If none are found "macos"
.name
val family : string B0_store.key
family
is the operating system family. This lumps the following name
names under a common identifier:
"bsd"
"windows"
, "cygwin"
as "windows"
"linux"
, looks up the first value of ID_LIKE
in os-release if available. If not uses distribution
.name
val exe_ext : B0_std.Fpath.ext B0_store.key
exe_ext
is operating system specific file extension for executable files. This is:
".exe"
if name
is "windows"
.""
otherwise.As reported by the operating system.
val arch : string B0_store.key
arch
is the architecture of the operating system, see also arch_normalized
. Determined using the following steps (in order):
uname
is available in the memo environment, arch
is the lowercased token returned by uname -m
.PROCESSOR_ARCHITECTURE
environment variable is defined in the memo environment, its value unless it is "x86"
. In the latter case the value of PROCESSOR_ARCHITEW6432
or, if undefined, "x86"
. This is for Windows, see here for the rationale."unknown"
.val arch_normalized : string B0_store.key
arch_normalized
normalizes some of the arch
values to more general identifiers like "arm32"
, "arm64"
, "ppc32"
, "ppc64"
, "x86_32"
and "x86_64"
.
val arch_bits : int B0_store.key
arch_bits
is number of bits in a word on the architecture of the operating system, derived from arch_normalized
. Usually either 32
or 64
. If unknown warns on the memo and defaults to 64
.