about summary refs log tree commit diff stats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/Makefile2
-rw-r--r--doc/bane.21.cdr16.gmi75
2 files changed, 76 insertions, 1 deletions
diff --git a/doc/Makefile b/doc/Makefile
index 27cc51e..241ce6f 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -3,7 +3,7 @@
 
 # Outputs other than Gemini aren't required
 
-GEMINI := breaking_rules.gmi bane.20.cdr15.gmi
+GEMINI := breaking_rules.gmi bane.20.cdr15.gmi bane.21.cdr16.gmi
 
 .PHONY: all
 all: $(GEMINI)
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 │

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

+```