diff options
Diffstat (limited to 'doc/bane.21.cdr16.gmi')
-rw-r--r-- | doc/bane.21.cdr16.gmi | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/doc/bane.21.cdr16.gmi b/doc/bane.21.cdr16.gmi new file mode 100644 index 0000000..dcd8d95 --- /dev/null +++ b/doc/bane.21.cdr16.gmi @@ -0,0 +1,75 @@ +title: POSIX API for ISLisp +author: Darren Bane +copyright: 2021 Darren Bane, CC BY_SA + +# Abstract + +A mapping from Scheme's SRFI-170, "POSIX API", to ISLisp is defined. + +# Introduction + +Although they are similar, Scheme and ISLisp are not the same language. This document adapts the standard Scheme POSIX interface to ISLisp accounting for: + +* Different naming conventions (e.g. `predicatep` rather than `predicate?`) +* Historical practice, in particular compatibility with OpenLisp (the only commercial implementation) is prioritised + +# Dependencies + +SRFI-170 depends on at least part of several other SRFIs, in particular: + +* SRFI-19, "Time Data Types and Procedures" +* SRFI-106, "Networking operations" +* SRFI-158, "Generators and Accumulators" + +SRFI-39, "Parameter objects", is superseded by ISLisp's dynamic variables. + +Only SRFI-106 is implemented fully; the subset of required symbols is taken from the others. + +# Mapping + +Any symbols not mentioned in the following are unchanged from SRFI-170. + +## S3.3, "File system" + +```table +┌──────────────────┬──────────────────┐ +│ Scheme │ ISLisp │ +╞══════════════════╪══════════════════╡ +│ file-info? │ file-info-p │ +├──────────────────┼──────────────────┤ +│ delete-directory │ remove-directory │ +└──────────────────┴──────────────────┘ +``` +## S3.5, "Process state" + +```table +┌────────────────────────┬──────────────────┐ +│ Scheme │ ISLisp │ +╞════════════════════════╪══════════════════╡ +│ set-umask! │ set-umask │ +├────────────────────────┼──────────────────┤ +│ set-current-directory! │ change-directory │ +├────────────────────────┼──────────────────┤ +│ pid │ getpid │ +├────────────────────────┼──────────────────┤ +│ user-uid │ getuid │ +└────────────────────────┴──────────────────┘ +``` +## S3.11, "Environment variables" + +```table +┌──────────────────────────┬────────┐ +│ Scheme │ ISLisp │ +╞══════════════════════════╪════════╡ +│ get-environment-variable │ getenv │ +└──────────────────────────┴────────┘ +``` +## S3.12, "Terminal device control" + +```table +┌───────────┬───────────┐ +│ Scheme │ ISLisp │ +╞═══════════╪═══════════╡ +│ terminal? │ terminalp │ +└───────────┴───────────┘ +``` |