stefan-hoeck / idris2-linux

Utilities for using Idris2 on GNU/Linux systems
BSD 3-Clause "New" or "Revised" License
5 stars 1 forks source link

POSIX and Linux System Calls in Idris2

This project has been split into two libraries, both providing bindings to the most important system calls and utilities available on Unix-like operating systems.

The libraries are the result of working through the Linux Programming Interface and writing bindings for the most important system calls (usually via the corresponding C functions) in Idris. As I crawl through the chapters, the todo-list below will continuously grow.

In the examples subproject you can find many of the example applications and exercises from the book implemented as a single command-line application.

Chapter Overview

Chapter 4

Chapter 5

The following will probably not be implemented:

Chapter 6

The following will probably not be implemented:

Chapter 7

The following will probably not be implemented:

Chapter 8

Note: Calls to crypt are available from idris2-crypt.

The following will probably not be implemented:

Chapter 9

The following will probably not be implemented:

Chapter 10

The following will probably not be implemented:

Note: Different types of clocks are implemented in System.Clock in base.

Chapter 11

Chapter 12

Chapter 13

Notes: Currently, I am more interested in the raw system calls. Buffered file I/O is available from System.File in base.

Chapter 14

Chapter 15

The following will probably not be implemented:

Chapter 16

Extended attributes are non-standard and will not be supported for the time being.

Chapter 17

Access control lists are non-standard and will not be supported for the time being.

Chapter 18

The following will probably not be implemented:

Chapter 19

Chapter 20

Notes: As per the Chez Scheme documentation, it is not safe to call from C to Scheme from C interrupt handlers. We can therefore not make use of signal and sigaction when on one of the Scheme backends. ~~Instead, a Scheme specific utility called onsignal is added for registering signal handlers~~ (this is no longer available, as it caused spurious core dumps). An alternative would be to use epoll with a signal file descriptor (under Linux) or synchronous signal handling. See chapter 22.

Chapter 21

The following will probably not be implemented:

Chapter 22

Chapter 23

Chapter 24

Chapter 25

exit is already available in base.

The following will probably not be implemented:

Chapter 26

The following will probably not be implemented:

Chapter 27

Chapter 28

The following will probably not be implemented:

Chapter 29

The following will probably not be implemented:

Chapter 30

The following will probably not be implemented:

Chapter 31

The following will probably not be implemented:

Chapter 32

The following will probably not be implemented:

Chapter 33

Chapters 34 - 43

To be added...

Chapter 44

Chapter 45