In general, a particular feature may be available for one of two reasons. Either because the Guile library was configured and compiled with that feature enabled — i.e. the feature is built into the library on your system. Or because some C or Scheme code that was dynamically loaded by Guile has added that feature to the list.
In the first category, here are the features that the current version of Guile may define (depending on how it is built), and what they mean.
array
Indicates support for arrays (see Arrays).
array-for-each
Indicates availability of array-for-each
and other array mapping
procedures (see Arrays).
char-ready?
Indicates that the char-ready?
function is available
(see Venerable Port Interfaces).
complex
Indicates support for complex numbers.
current-time
Indicates availability of time-related functions: times
,
get-internal-run-time
and so on (see Time).
debug-extensions
Indicates that the debugging evaluator is available, together with the options for controlling it.
delay
Indicates support for promises (see Delayed Evaluation).
EIDs
Indicates that the geteuid
and getegid
really return
effective user and group IDs (see Processes).
inexact
Indicates support for inexact numbers.
i/o-extensions
Indicates availability of the following extended I/O procedures:
ftell
, redirect-port
, dup->fdes
, dup2
,
fileno
, isatty?
, fdopen
,
primitive-move->fdes
and fdes->ports
(see Ports and File Descriptors).
net-db
Indicates availability of network database functions:
scm_gethost
, scm_getnet
, scm_getproto
,
scm_getserv
, scm_sethost
, scm_setnet
, scm_setproto
,
scm_setserv
, and their ‘byXXX’ variants (see Network Databases).
posix
Indicates support for POSIX functions: pipe
, getgroups
,
kill
, execl
and so on (see POSIX System Calls and Networking).
fork
Indicates support for the POSIX fork
function (see primitive-fork
).
popen
Indicates support for open-pipe
in the (ice-9 popen)
module (see Pipes).
random
Indicates availability of random number generation functions:
random
, copy-random-state
, random-uniform
and so on
(see Random Number Generation).
reckless
Indicates that Guile was built with important checks omitted — you should never see this!
regex
Indicates support for POSIX regular expressions using
make-regexp
, regexp-exec
and friends (see Regexp Functions).
socket
Indicates availability of socket-related functions: socket
,
bind
, connect
and so on (see Network Sockets and Communication).
sort
Indicates availability of sorting and merging functions (see Sorting).
system
Indicates that the system
function is available
(see Processes).
threads
Indicates support for multithreading (see Threads).
values
Indicates support for multiple return values using values
and
call-with-values
(see Returning and Accepting Multiple Values).
Available features in the second category depend, by definition, on what additional code your Guile process has loaded in. The following table lists features that you might encounter for this reason.
defmacro
Indicates that the defmacro
macro is available (see Macros).
describe
Indicates that the (oop goops describe)
module has been loaded,
which provides a procedure for describing the contents of GOOPS
instances.
readline
Indicates that Guile has loaded in Readline support, for command line editing (see Readline Support).
record
Indicates support for record definition using make-record-type
and friends (see Records).
Although these tables may seem exhaustive, it is probably unwise in
practice to rely on them, as the correspondences between feature symbols
and available procedures/behavior are not strictly defined. If you are
writing code that needs to check for the existence of some procedure, it
is probably safer to do so directly using the defined?
procedure
than to test for the corresponding feature using provided?
.