lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


A library binding various POSIX APIs. POSIX is the IEEE Portable Operating
System Interface standard. luaposix is based on lposix.

I am happy to announce release 33.4.0 of luaposix.  The biggest change in
this release is that luaposix no longer contains the curses bindings,
which have moved back into lcurses, so that each can maintain their own
release cycle.  There are also fixes to most know bugs.

luaposix's home page is at https://github.com/luaposix/luaposix/, with
documentation at https://luaposix.githux.io/luaposix.


## Noteworthy changes in release 33.4.0 (2016-02-27) [stable]

### Incompatible Changes

  - posix.curses has been split back out into its own separate
    project again.  If you want to upgrade your posix.curses using
    project, something like the following minimal change will work
    equivalently (assuming you have the new lcurses on your package
    path):

    ```lua
    local posix = require 'posix'
    posix.curses = posix.curses or require 'lcurses'
    ```

### New Features

  - New `posix.stdio.rename` binding.

  - New `posix.fcntl.FD_CLOEXEC` flag for `posix.fcntl.fcntl`.

  - New `posix.fcntl.O_CLOEXEC` flag for `posix.fcntl.open`, where
    supported by the underlying system.  Falling back to FD_CLOEXEC is
    an exercise to the caller, so that non-atomicity is surfaced:

    ```lua
    -- without error checking, for clarity
    fd = fcntl.open ("/foo/bar", fcntl.O_CLOEXEC, stat.S_IRWXU)
    if fcntl.O_CLOEXEC == 0 then
      local flags = fcntl.fcntl (fd, fcntl.F_GETFD)
      fcntl.fcntl (fd, fcntl.F_SETFD, bit.bor (flags, fcntl.FD_CLOEXEC)
    end
    ```

  - New `posix.unistd.tcgetpgrp` and `posix.unistd.tcsetpgrp` bindings
    where supported by host C library.

  - `posix.sys.socket` AF_UNIX path handling improvements enable use of
    Linux only abstract namespace sockets.

  - Documentation links now point at the newer OpenGroup issue 7 specs.

### Bugs Fixed

  - Workaround for https://sourceware.org/bugzilla/show_bug.cgi?id=15088.
    Predicate use of POSIX sched.h APIs on presence of sched.h, since glibc
    defines _POSIX_PRIORITY_SCHEDULING erroneously, and musl libc
    provides the sched.h APIs but doesn't define _POSIX_PRIORITY_SCHEDULING.

  - `posix.sys.socket` AF_UNIX APIs pass path arguments by length
    instead of terminating at the first \0 byte.

  - `posix.unistd.readlink` no longer fails when reading a link to an
    unsized buffer or character special device node.

  - `execx` is no longer leaked into the global namespace after loading
    the posix module.

  - `examples/fork2.lua` works correctly again.

  - `posix.timeradd`, `posix.timercmp` and `posix.timersub` correctly
    handle tables from the modern thin wrapper API (posix.sys.time),
    while retaining compatibility with the legacy compatibility wrappers
    (posix.gettimeofday).


Install it with LuaRocks, using:

    luarocks install luaposix 33.4.0