From 0a35cee67a6f8812db39806ed1f6b5975dea478b Mon Sep 17 00:00:00 2001 From: Darren Bane Date: Sat, 12 Feb 2022 01:15:40 +0000 Subject: Making changes --- doc/Makefile | 2 +- doc/bane.21.cdr16.gmi | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 doc/bane.21.cdr16.gmi (limited to 'doc') 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 │ +└───────────┴───────────┘ +``` -- cgit 1.4.1-2-gfad0