moonpool/dev/ocaml/Stdlib/Sys/index.html
2023-08-28 17:11:38 +00:00

4 lines
No EOL
34 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Sys (ocaml.Stdlib.Sys)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> <a href="../../index.html">ocaml</a> &#x00BB; <a href="../index.html">Stdlib</a> &#x00BB; Sys</nav><header class="odoc-preamble"><h1>Module <code><span>Stdlib.Sys</span></code></h1><p>System interface.</p><p>Every function in this module raises <code>Sys_error</code> with an informative message when the underlying system call signal an error.</p></header><nav class="odoc-toc"><ul><li><a href="#signal-handling">Signal handling</a><ul><li><a href="#signal-numbers-for-the-standard-posix-signals.">Signal numbers for the standard POSIX signals.</a></li></ul></li><li><a href="#optimization">Optimization</a></li></ul></nav><div class="odoc-content"><div class="odoc-spec"><div class="spec value external anchored" id="val-argv"><a href="#val-argv" class="anchor"></a><code><span><span class="keyword">val</span> argv : <span>string array</span></span></code></div><div class="spec-doc"><p>The command line arguments given to the process. The first element is the command name used to invoke the program. The following elements are the command-line arguments given to the program.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-executable_name"><a href="#val-executable_name" class="anchor"></a><code><span><span class="keyword">val</span> executable_name : string</span></code></div><div class="spec-doc"><p>The name of the file containing the executable currently running. This name may be absolute or relative to the current directory, depending on the platform and whether the program was compiled to bytecode or a native executable.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-file_exists"><a href="#val-file_exists" class="anchor"></a><code><span><span class="keyword">val</span> file_exists : <span>string <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p>Test if a file with the given name exists.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-is_directory"><a href="#val-is_directory" class="anchor"></a><code><span><span class="keyword">val</span> is_directory : <span>string <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p>Returns <code>true</code> if the given name refers to a directory, <code>false</code> if it refers to another kind of file.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Sys_error</span> <p>if no file exists with the given name.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.10.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-remove"><a href="#val-remove" class="anchor"></a><code><span><span class="keyword">val</span> remove : <span>string <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Remove the given file name from the file system.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-rename"><a href="#val-rename" class="anchor"></a><code><span><span class="keyword">val</span> rename : <span>string <span class="arrow">&#45;&gt;</span></span> <span>string <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Rename a file. <code>rename oldpath newpath</code> renames the file called <code>oldpath</code>, giving it <code>newpath</code> as its new name, moving it between directories if needed. If <code>newpath</code> already exists, its contents will be replaced with those of <code>oldpath</code>. Depending on the operating system, the metadata (permissions, owner, etc) of <code>newpath</code> can either be preserved or be replaced by those of <code>oldpath</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.06 concerning the &quot;replace existing file&quot; behavior</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-getenv"><a href="#val-getenv" class="anchor"></a><code><span><span class="keyword">val</span> getenv : <span>string <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p>Return the value associated to a variable in the process environment.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Not_found</span> <p>if the variable is unbound.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-getenv_opt"><a href="#val-getenv_opt" class="anchor"></a><code><span><span class="keyword">val</span> getenv_opt : <span>string <span class="arrow">&#45;&gt;</span></span> <span>string option</span></span></code></div><div class="spec-doc"><p>Return the value associated to a variable in the process environment or <code>None</code> if the variable is unbound.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.05</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-command"><a href="#val-command" class="anchor"></a><code><span><span class="keyword">val</span> command : <span>string <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>Execute the given shell command and return its exit code.</p><p>The argument of <a href="#val-command"><code>Sys.command</code></a> is generally the name of a command followed by zero, one or several arguments, separated by whitespace. The given argument is interpreted by a shell: either the Windows shell <code>cmd.exe</code> for the Win32 ports of OCaml, or the POSIX shell <code>sh</code> for other ports. It can contain shell builtin commands such as <code>echo</code>, and also special characters such as file redirections <code>&gt;</code> and <code>&lt;</code>, which will be honored by the shell.</p><p>Conversely, whitespace or special shell characters occurring in command names or in their arguments must be quoted or escaped so that the shell does not interpret them. The quoting rules vary between the POSIX shell and the Windows shell. The <a href="../Filename/index.html#val-quote_command"><code>Filename.quote_command</code></a> performs the appropriate quoting given a command name, a list of arguments, and optional file redirections.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-time"><a href="#val-time" class="anchor"></a><code><span><span class="keyword">val</span> time : <span>unit <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Return the processor time, in seconds, used by the program since the beginning of execution.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-chdir"><a href="#val-chdir" class="anchor"></a><code><span><span class="keyword">val</span> chdir : <span>string <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Change the current working directory of the process.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-mkdir"><a href="#val-mkdir" class="anchor"></a><code><span><span class="keyword">val</span> mkdir : <span>string <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Create a directory with the given permissions.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.12.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-rmdir"><a href="#val-rmdir" class="anchor"></a><code><span><span class="keyword">val</span> rmdir : <span>string <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Remove an empty directory.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.12.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-getcwd"><a href="#val-getcwd" class="anchor"></a><code><span><span class="keyword">val</span> getcwd : <span>unit <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p>Return the current working directory of the process.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-readdir"><a href="#val-readdir" class="anchor"></a><code><span><span class="keyword">val</span> readdir : <span>string <span class="arrow">&#45;&gt;</span></span> <span>string array</span></span></code></div><div class="spec-doc"><p>Return the names of all files present in the given directory. Names denoting the current directory and the parent directory (<code>&quot;.&quot;</code> and <code>&quot;..&quot;</code> in Unix) are not returned. Each string in the result is a file name rather than a complete path. There is no guarantee that the name strings in the resulting array will appear in any specific order; they are not, in particular, guaranteed to appear in alphabetical order.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-interactive"><a href="#val-interactive" class="anchor"></a><code><span><span class="keyword">val</span> interactive : <span>bool <a href="../index.html#type-ref">ref</a></span></span></code></div><div class="spec-doc"><p>This reference is initially set to <code>false</code> in standalone programs and to <code>true</code> if the code is being executed under the interactive toplevel system <code>ocaml</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-os_type"><a href="#val-os_type" class="anchor"></a><code><span><span class="keyword">val</span> os_type : string</span></code></div><div class="spec-doc"><p>Operating system currently executing the OCaml program. One of</p><ul><li><code>&quot;Unix&quot;</code> (for all Unix versions, including Linux and Mac OS X),</li><li><code>&quot;Win32&quot;</code> (for MS-Windows, OCaml compiled with MSVC++ or Mingw),</li><li><code>&quot;Cygwin&quot;</code> (for MS-Windows, OCaml compiled with Cygwin).</li></ul></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-backend_type"><a href="#type-backend_type" class="anchor"></a><code><span><span class="keyword">type</span> backend_type</span><span> = </span></code><ol><li id="type-backend_type.Native" class="def variant constructor anchored"><a href="#type-backend_type.Native" class="anchor"></a><code><span>| </span><span><span class="constructor">Native</span></span></code></li><li id="type-backend_type.Bytecode" class="def variant constructor anchored"><a href="#type-backend_type.Bytecode" class="anchor"></a><code><span>| </span><span><span class="constructor">Bytecode</span></span></code></li><li id="type-backend_type.Other" class="def variant constructor anchored"><a href="#type-backend_type.Other" class="anchor"></a><code><span>| </span><span><span class="constructor">Other</span> <span class="keyword">of</span> string</span></code></li></ol></div><div class="spec-doc"><p>Currently, the official distribution only supports <code>Native</code> and <code>Bytecode</code>, but it can be other backends with alternative compilers, for example, javascript.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.04.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-backend_type"><a href="#val-backend_type" class="anchor"></a><code><span><span class="keyword">val</span> backend_type : <a href="#type-backend_type">backend_type</a></span></code></div><div class="spec-doc"><p>Backend type currently executing the OCaml program.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.04.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unix"><a href="#val-unix" class="anchor"></a><code><span><span class="keyword">val</span> unix : bool</span></code></div><div class="spec-doc"><p>True if <code>Sys.os_type = &quot;Unix&quot;</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.01.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-win32"><a href="#val-win32" class="anchor"></a><code><span><span class="keyword">val</span> win32 : bool</span></code></div><div class="spec-doc"><p>True if <code>Sys.os_type = &quot;Win32&quot;</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.01.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-cygwin"><a href="#val-cygwin" class="anchor"></a><code><span><span class="keyword">val</span> cygwin : bool</span></code></div><div class="spec-doc"><p>True if <code>Sys.os_type = &quot;Cygwin&quot;</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.01.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-word_size"><a href="#val-word_size" class="anchor"></a><code><span><span class="keyword">val</span> word_size : int</span></code></div><div class="spec-doc"><p>Size of one word on the machine currently executing the OCaml program, in bits: 32 or 64.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int_size"><a href="#val-int_size" class="anchor"></a><code><span><span class="keyword">val</span> int_size : int</span></code></div><div class="spec-doc"><p>Size of <code>int</code>, in bits. It is 31 (resp. 63) when using OCaml on a 32-bit (resp. 64-bit) platform. It may differ for other implementations, e.g. it can be 32 bits when compiling to JavaScript.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-big_endian"><a href="#val-big_endian" class="anchor"></a><code><span><span class="keyword">val</span> big_endian : bool</span></code></div><div class="spec-doc"><p>Whether the machine currently executing the Caml program is big-endian.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.00.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-max_string_length"><a href="#val-max_string_length" class="anchor"></a><code><span><span class="keyword">val</span> max_string_length : int</span></code></div><div class="spec-doc"><p>Maximum length of strings and byte sequences.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-max_array_length"><a href="#val-max_array_length" class="anchor"></a><code><span><span class="keyword">val</span> max_array_length : int</span></code></div><div class="spec-doc"><p>Maximum length of a normal array (i.e. any array whose elements are not of type <code>float</code>). The maximum length of a <code>float array</code> is <code>max_floatarray_length</code> if OCaml was configured with <code>--enable-flat-float-array</code> and <code>max_array_length</code> if configured with <code>--disable-flat-float-array</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-max_floatarray_length"><a href="#val-max_floatarray_length" class="anchor"></a><code><span><span class="keyword">val</span> max_floatarray_length : int</span></code></div><div class="spec-doc"><p>Maximum length of a floatarray. This is also the maximum length of a <code>float array</code> when OCaml is configured with <code>--enable-flat-float-array</code>.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-runtime_variant"><a href="#val-runtime_variant" class="anchor"></a><code><span><span class="keyword">val</span> runtime_variant : <span>unit <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p>Return the name of the runtime variant the program is running on. This is normally the argument given to <code>-runtime-variant</code> at compile time, but for byte-code it can be changed after compilation.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-runtime_parameters"><a href="#val-runtime_parameters" class="anchor"></a><code><span><span class="keyword">val</span> runtime_parameters : <span>unit <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p>Return the value of the runtime parameters, in the same format as the contents of the <code>OCAMLRUNPARAM</code> environment variable.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03.0</li></ul></div></div><h2 id="signal-handling"><a href="#signal-handling" class="anchor"></a>Signal handling</h2><div class="odoc-spec"><div class="spec type anchored" id="type-signal_behavior"><a href="#type-signal_behavior" class="anchor"></a><code><span><span class="keyword">type</span> signal_behavior</span><span> = </span></code><ol><li id="type-signal_behavior.Signal_default" class="def variant constructor anchored"><a href="#type-signal_behavior.Signal_default" class="anchor"></a><code><span>| </span><span><span class="constructor">Signal_default</span></span></code></li><li id="type-signal_behavior.Signal_ignore" class="def variant constructor anchored"><a href="#type-signal_behavior.Signal_ignore" class="anchor"></a><code><span>| </span><span><span class="constructor">Signal_ignore</span></span></code></li><li id="type-signal_behavior.Signal_handle" class="def variant constructor anchored"><a href="#type-signal_behavior.Signal_handle" class="anchor"></a><code><span>| </span><span><span class="constructor">Signal_handle</span> <span class="keyword">of</span> <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></li></ol></div><div class="spec-doc"><p>What to do when receiving a signal:</p><ul><li><code>Signal_default</code>: take the default behavior (usually: abort the program)</li><li><code>Signal_ignore</code>: ignore the signal</li><li><code>Signal_handle f</code>: call function <code>f</code>, giving it the signal number as argument.</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-signal"><a href="#val-signal" class="anchor"></a><code><span><span class="keyword">val</span> signal : <span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-signal_behavior">signal_behavior</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-signal_behavior">signal_behavior</a></span></code></div><div class="spec-doc"><p>Set the behavior of the system on receipt of a given signal. The first argument is the signal number. Return the behavior previously associated with the signal. If the signal number is invalid (or not available on your system), an <code>Invalid_argument</code> exception is raised.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_signal"><a href="#val-set_signal" class="anchor"></a><code><span><span class="keyword">val</span> set_signal : <span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-signal_behavior">signal_behavior</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Same as <a href="#val-signal"><code>Sys.signal</code></a> but return value is ignored.</p></div></div><h3 id="signal-numbers-for-the-standard-posix-signals."><a href="#signal-numbers-for-the-standard-posix-signals." class="anchor"></a>Signal numbers for the standard POSIX signals.</h3><div class="odoc-spec"><div class="spec value anchored" id="val-sigabrt"><a href="#val-sigabrt" class="anchor"></a><code><span><span class="keyword">val</span> sigabrt : int</span></code></div><div class="spec-doc"><p>Abnormal termination</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigalrm"><a href="#val-sigalrm" class="anchor"></a><code><span><span class="keyword">val</span> sigalrm : int</span></code></div><div class="spec-doc"><p>Timeout</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigfpe"><a href="#val-sigfpe" class="anchor"></a><code><span><span class="keyword">val</span> sigfpe : int</span></code></div><div class="spec-doc"><p>Arithmetic exception</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sighup"><a href="#val-sighup" class="anchor"></a><code><span><span class="keyword">val</span> sighup : int</span></code></div><div class="spec-doc"><p>Hangup on controlling terminal</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigill"><a href="#val-sigill" class="anchor"></a><code><span><span class="keyword">val</span> sigill : int</span></code></div><div class="spec-doc"><p>Invalid hardware instruction</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigint"><a href="#val-sigint" class="anchor"></a><code><span><span class="keyword">val</span> sigint : int</span></code></div><div class="spec-doc"><p>Interactive interrupt (ctrl-C)</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigkill"><a href="#val-sigkill" class="anchor"></a><code><span><span class="keyword">val</span> sigkill : int</span></code></div><div class="spec-doc"><p>Termination (cannot be ignored)</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigpipe"><a href="#val-sigpipe" class="anchor"></a><code><span><span class="keyword">val</span> sigpipe : int</span></code></div><div class="spec-doc"><p>Broken pipe</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigquit"><a href="#val-sigquit" class="anchor"></a><code><span><span class="keyword">val</span> sigquit : int</span></code></div><div class="spec-doc"><p>Interactive termination</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigsegv"><a href="#val-sigsegv" class="anchor"></a><code><span><span class="keyword">val</span> sigsegv : int</span></code></div><div class="spec-doc"><p>Invalid memory reference</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigterm"><a href="#val-sigterm" class="anchor"></a><code><span><span class="keyword">val</span> sigterm : int</span></code></div><div class="spec-doc"><p>Termination</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigusr1"><a href="#val-sigusr1" class="anchor"></a><code><span><span class="keyword">val</span> sigusr1 : int</span></code></div><div class="spec-doc"><p>Application-defined signal 1</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigusr2"><a href="#val-sigusr2" class="anchor"></a><code><span><span class="keyword">val</span> sigusr2 : int</span></code></div><div class="spec-doc"><p>Application-defined signal 2</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigchld"><a href="#val-sigchld" class="anchor"></a><code><span><span class="keyword">val</span> sigchld : int</span></code></div><div class="spec-doc"><p>Child process terminated</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigcont"><a href="#val-sigcont" class="anchor"></a><code><span><span class="keyword">val</span> sigcont : int</span></code></div><div class="spec-doc"><p>Continue</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigstop"><a href="#val-sigstop" class="anchor"></a><code><span><span class="keyword">val</span> sigstop : int</span></code></div><div class="spec-doc"><p>Stop</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigtstp"><a href="#val-sigtstp" class="anchor"></a><code><span><span class="keyword">val</span> sigtstp : int</span></code></div><div class="spec-doc"><p>Interactive stop</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigttin"><a href="#val-sigttin" class="anchor"></a><code><span><span class="keyword">val</span> sigttin : int</span></code></div><div class="spec-doc"><p>Terminal read from background process</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigttou"><a href="#val-sigttou" class="anchor"></a><code><span><span class="keyword">val</span> sigttou : int</span></code></div><div class="spec-doc"><p>Terminal write from background process</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigvtalrm"><a href="#val-sigvtalrm" class="anchor"></a><code><span><span class="keyword">val</span> sigvtalrm : int</span></code></div><div class="spec-doc"><p>Timeout in virtual time</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigprof"><a href="#val-sigprof" class="anchor"></a><code><span><span class="keyword">val</span> sigprof : int</span></code></div><div class="spec-doc"><p>Profiling interrupt</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigbus"><a href="#val-sigbus" class="anchor"></a><code><span><span class="keyword">val</span> sigbus : int</span></code></div><div class="spec-doc"><p>Bus error</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigpoll"><a href="#val-sigpoll" class="anchor"></a><code><span><span class="keyword">val</span> sigpoll : int</span></code></div><div class="spec-doc"><p>Pollable event</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigsys"><a href="#val-sigsys" class="anchor"></a><code><span><span class="keyword">val</span> sigsys : int</span></code></div><div class="spec-doc"><p>Bad argument to routine</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigtrap"><a href="#val-sigtrap" class="anchor"></a><code><span><span class="keyword">val</span> sigtrap : int</span></code></div><div class="spec-doc"><p>Trace/breakpoint trap</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigurg"><a href="#val-sigurg" class="anchor"></a><code><span><span class="keyword">val</span> sigurg : int</span></code></div><div class="spec-doc"><p>Urgent condition on socket</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigxcpu"><a href="#val-sigxcpu" class="anchor"></a><code><span><span class="keyword">val</span> sigxcpu : int</span></code></div><div class="spec-doc"><p>Timeout in cpu time</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sigxfsz"><a href="#val-sigxfsz" class="anchor"></a><code><span><span class="keyword">val</span> sigxfsz : int</span></code></div><div class="spec-doc"><p>File size limit exceeded</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03</li></ul></div></div><div class="odoc-spec"><div class="spec exception anchored" id="exception-Break"><a href="#exception-Break" class="anchor"></a><code><span><span class="keyword">exception</span> </span><span><span class="exception">Break</span></span></code></div><div class="spec-doc"><p>Exception raised on interactive interrupt if <a href="#val-catch_break"><code>Sys.catch_break</code></a> is on.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-catch_break"><a href="#val-catch_break" class="anchor"></a><code><span><span class="keyword">val</span> catch_break : <span>bool <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>catch_break</code> governs whether interactive interrupt (ctrl-C) terminates the program or raises the <code>Break</code> exception. Call <code>catch_break true</code> to enable raising <code>Break</code>, and <code>catch_break false</code> to let the system terminate the program on user interrupt.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ocaml_version"><a href="#val-ocaml_version" class="anchor"></a><code><span><span class="keyword">val</span> ocaml_version : string</span></code></div><div class="spec-doc"><p><code>ocaml_version</code> is the version of OCaml. It is a string of the form <code>&quot;major.minor[.patchlevel][(+|~)additional-info]&quot;</code>, where <code>major</code>, <code>minor</code>, and <code>patchlevel</code> are integers, and <code>additional-info</code> is an arbitrary string. The <code>[.patchlevel]</code> part was absent before version 3.08.0 and became mandatory from 3.08.0 onwards. The <code>[(+|~)additional-info]</code> part may be absent.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-development_version"><a href="#val-development_version" class="anchor"></a><code><span><span class="keyword">val</span> development_version : bool</span></code></div><div class="spec-doc"><p><code>true</code> if this is a development version, <code>false</code> otherwise.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.14.0</li></ul></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-extra_prefix"><a href="#type-extra_prefix" class="anchor"></a><code><span><span class="keyword">type</span> extra_prefix</span><span> = </span></code><ol><li id="type-extra_prefix.Plus" class="def variant constructor anchored"><a href="#type-extra_prefix.Plus" class="anchor"></a><code><span>| </span><span><span class="constructor">Plus</span></span></code></li><li id="type-extra_prefix.Tilde" class="def variant constructor anchored"><a href="#type-extra_prefix.Tilde" class="anchor"></a><code><span>| </span><span><span class="constructor">Tilde</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-extra_info"><a href="#type-extra_info" class="anchor"></a><code><span><span class="keyword">type</span> extra_info</span><span> = <a href="#type-extra_prefix">extra_prefix</a> * string</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-ocaml_release_info"><a href="#type-ocaml_release_info" class="anchor"></a><code><span><span class="keyword">type</span> ocaml_release_info</span><span> = </span><span>{</span></code><ol><li id="type-ocaml_release_info.major" class="def record field anchored"><a href="#type-ocaml_release_info.major" class="anchor"></a><code><span>major : int;</span></code></li><li id="type-ocaml_release_info.minor" class="def record field anchored"><a href="#type-ocaml_release_info.minor" class="anchor"></a><code><span>minor : int;</span></code></li><li id="type-ocaml_release_info.patchlevel" class="def record field anchored"><a href="#type-ocaml_release_info.patchlevel" class="anchor"></a><code><span>patchlevel : int;</span></code></li><li id="type-ocaml_release_info.extra" class="def record field anchored"><a href="#type-ocaml_release_info.extra" class="anchor"></a><code><span>extra : <span><a href="#type-extra_info">extra_info</a> option</span>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ocaml_release"><a href="#val-ocaml_release" class="anchor"></a><code><span><span class="keyword">val</span> ocaml_release : <a href="#type-ocaml_release_info">ocaml_release_info</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-enable_runtime_warnings"><a href="#val-enable_runtime_warnings" class="anchor"></a><code><span><span class="keyword">val</span> enable_runtime_warnings : <span>bool <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Control whether the OCaml runtime system can emit warnings on stderr. Currently, the only supported warning is triggered when a channel created by <code>open_*</code> functions is finalized without being closed. Runtime warnings are disabled by default.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-runtime_warnings_enabled"><a href="#val-runtime_warnings_enabled" class="anchor"></a><code><span><span class="keyword">val</span> runtime_warnings_enabled : <span>unit <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p>Return whether runtime warnings are currently enabled.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03.0</li></ul></div></div><h2 id="optimization"><a href="#optimization" class="anchor"></a>Optimization</h2><div class="odoc-spec"><div class="spec value external anchored" id="val-opaque_identity"><a href="#val-opaque_identity" class="anchor"></a><code><span><span class="keyword">val</span> opaque_identity : <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>For the purposes of optimization, <code>opaque_identity</code> behaves like an unknown (and thus possibly side-effecting) function.</p><p>At runtime, <code>opaque_identity</code> disappears altogether.</p><p>A typical use of this function is to prevent pure computations from being optimized away in benchmarking loops. For example:</p><pre class="language-ocaml"><code>for _round = 1 to 100_000 do
ignore (Sys.opaque_identity (my_pure_computation ()))
done</code></pre><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03.0</li></ul></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Immediate64"><a href="#module-Immediate64" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Immediate64/index.html">Immediate64</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>This module allows to define a type <code>t</code> with the <code>immediate64</code> attribute. This attribute means that the type is immediate on 64 bit architectures. On other architectures, it might or might not be immediate.</p></div></div></div></body></html>