about summary refs log tree commit diff stats
path: root/doc/bane.21.cdr16.gmi
diff options
context:
space:
mode:
Diffstat (limited to 'doc/bane.21.cdr16.gmi')
-rw-r--r--doc/bane.21.cdr16.gmi75
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 │

+└───────────┴───────────┘

+```