Skip to content
Release 2.8.0.0

Notable changes:

  * Use ByteString for GroupEntry/UserEntry
  * Fix `semTrywait` on darwin
  * Fix vanishing environment variables in `System.Posix.Env.ByteString.putEnv`/`System.Posix.Env.ByteString.getEnv`
  * Add missing `setEnvironment` and `clearEnv` to `System.Posix.Env.ByteString`
  * Add support for filepath-1.4.100.0 with `PosixString` variants
  * Expose `DirStream`, `CDir`, `CDirent` and `DirStreamOffset` (internal API)
  * Add `fdRead`/`fdWrite` with ByteString payload and deprecate String based `fdRead`
  * Add `clocksPerSec`
  * Support wasm32-wasi
  * Implement BaudRate as an `Int` newtype and allow matching via extensible PatternSynonyms
  * Added `readDirStreamMaybe`
  * Warn when functions are used on unsupported platforms
  * Fix the error handling of `posix_fallocate`
  * Export `FileStatus` constructor
  * Various documentation and error message improvements
  * Add openDirStreamFd, openFileAt and createFileAt
  * Add accessors for st_blocks and st_blksize
  * Deal with FreeBSD getpwnam_r(3), ... thread safety.  On FreeBSD these
    are not in fact safe for overlapped execution with a sequence of
    getpwent(3) or getgrent(3) calls when multiple "green" threads share
    the same underlying OS thread.  The *ent(3) calls now run in bound
    threads or else locks are used to avoid overlapped execution.
  * Make passwd/group FFI functions "safe", these are not low-latency APIs.
  * Drop support for non-thread-safe getpwnam(3) and getpwuid(3).  All
    supported platforms have getpwnam_r(3) and getpwuid_r(3).  This was
    already the case for the getgr(nam|gid) calls.
  * Added terminal output flags to `System.Posix.Terminal.Common.TerminalMode`
        IXANY, ONLCR, OCRNL, ONOCR, ONLRET, OFDEL, OFILL, NLDLY(NL0,NL1),
        CRDLY(CR0,CR1,CR2,CR2), TABDLY(TAB0,TAB1,TAB2,TAB3) BSDLY(BS0,BS1),
        VTDLY(VT0,VT1), FFDLY(FF0,FF1)
  * Add support for `O_NOFOLLOW`, `O_CLOEXEC`, `O_DIRECTORY` and `O_SYNC`
    (#6, #57)
  * Refactor API of `openFd` removing `Maybe FileMode` argument,
    which now must be passed as part of `OpenFileFlags`
    (e.g. `defaultFileFlags { creat = Just mode }`)  (#58)
  * Remove deprecated `execvpe(3)` legacy-emulation CPP macro
  * Generalise return type of `exitImmediately` from `ExitCode -> IO ()` to
    `∀a. ExitCode -> IO a` (#130)
  * Add `Read`, `Show`, `Eq`, and `Ord` typeclass instances to `OpenFileFlags` and `OpenMode`. (#75, #141)