Previous: Feature Manipulation, Up: Feature Tracking
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.
arrayarray-for-eacharray-for-each and other array mapping
procedures (see Arrays).
char-ready?char-ready? function is available
(see Reading).
complexcurrent-timetimes,
get-internal-run-time and so on (see Time).
debug-extensionsdelayEIDsgeteuid and getegid really return
effective user and group IDs (see Processes).
inexacti/o-extensionsftell, redirect-port, dup->fdes, dup2,
fileno, isatty?, fdopen,
primitive-move->fdes and fdes->ports (see Ports and File Descriptors).
net-dbscm_gethost, scm_getnet, scm_getproto,
scm_getserv, scm_sethost, scm_setnet, scm_setproto,
scm_setserv, and their `byXXX' variants (see Network Databases).
posixpipe, getgroups,
kill, execl and so on (see POSIX).
randomrandom, copy-random-state, random-uniform and so on
(see Random).
recklessregexmake-regexp, regexp-exec and friends (see Regexp Functions).
socketsocket,
bind, connect and so on (see Network Sockets and Communication).
sortsystemsystem function is available
(see Processes).
threadsvaluesvalues and
call-with-values (see 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.
defmacrodefmacro macro is available (see Macros).
describe(oop goops describe) module has been loaded,
which provides a procedure for describing the contents of GOOPS
instances.
readlinerecordmake-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/behaviour 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?.