cosmopolitan/third_party
Justine Tunney 1d4eb08fa1
Support non-blocking i/o across platforms
This change introduces new tests for `O_NONBLOCK` and `SOCK_NONBLOCK` to
confirm that non-blocking i/o is now working on all supported platforms,
including Windows. For example, you can now say on Windows, MacOS, etc.:

    socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, IPPROTO_TCP);

To create a non-blocking IPv4 TCP socket. Or you can enable non-blocking
i/o on an existing socket / pipe / etc. file descriptor by calling fcntl

    fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK);

This functionality is polyfilled on older Linux kernels too, e.g. RHEL5.
Now that fcntl() support is much better the FIOCLEX / FIONCLEX polyfills
for ioctl() have been removed since they're ugly non-POSIX diameond APIs

This change fixes a weakness in kprintf() that was causing Windows trace
tools to frequently crash.
2023-07-23 02:56:47 -07:00
..
aarch64 Upgrade to Cosmopolitan GCC 11.2.0 for aarch64 2023-06-05 02:07:28 -07:00
argon2 Clean up more code 2023-06-18 01:00:05 -07:00
awk Make improvements 2023-07-10 04:35:14 -07:00
bzip2 Clean up more code 2023-06-18 01:00:05 -07:00
chibicc Brush up some more code 2023-07-10 10:17:26 -07:00
compiler_rt Make improvements 2023-07-10 04:35:14 -07:00
ctags Switch public headers to getopt_long() entirely 2023-07-02 19:57:43 -07:00
dlmalloc Fix some behavioral issues on Windows 2023-07-09 09:59:22 -07:00
double-conversion Fix bugs in cosmocc toolchain 2023-06-08 23:44:03 -07:00
finger Make improvements 2023-07-11 04:41:50 -07:00
gcc Remove removed GCC symlinks 2023-06-18 05:41:55 -07:00
gdtoa Clean up more code 2023-06-18 01:00:05 -07:00
getopt Make fixes and improvements 2023-07-09 05:21:11 -07:00
ggml Get us closer to building busybox 2023-06-18 04:13:45 -07:00
hiredis Switch public headers to getopt_long() entirely 2023-07-02 19:57:43 -07:00
intel Fix some build errors 2023-06-05 15:53:44 -07:00
libcxx Fix some aarch64 build issues 2023-07-08 10:47:45 -07:00
linenoise Make improvements 2023-07-11 04:41:50 -07:00
lua Make improvements 2023-07-11 04:41:50 -07:00
lz4cli Make progress towards aarch64 build 2023-05-10 04:20:46 -07:00
make Make improvements 2023-07-10 04:35:14 -07:00
maxmind Brush up some more code 2023-07-10 10:17:26 -07:00
mbedtls Fix some aarch64 build issues 2023-07-08 10:47:45 -07:00
musl Make improvements 2023-07-10 04:35:14 -07:00
nsync Clean up more code 2023-07-06 08:03:24 -07:00
puff Clean up more code 2023-06-18 01:00:05 -07:00
python Support non-blocking i/o across platforms 2023-07-23 02:56:47 -07:00
qemu Fix MODE=aarch64 build 2023-06-08 05:17:37 -07:00
quickjs Make improvements 2023-07-11 04:41:50 -07:00
radpajama Make improvements 2023-07-10 04:35:14 -07:00
regex Clean up more code 2023-06-18 01:00:05 -07:00
sed Make improvements 2023-07-11 04:41:50 -07:00
smallz4 Clean up more code 2023-06-18 01:00:05 -07:00
sqlite3 Make improvements 2023-07-11 04:41:50 -07:00
stb Brush up some more code 2023-07-10 10:17:26 -07:00
tidy Clean up more code 2023-06-18 01:00:05 -07:00
tr Make fixes and improvements 2023-07-09 05:21:11 -07:00
unzip Make improvements 2023-07-11 04:41:50 -07:00
vqsort Clean up more code 2023-06-18 01:00:05 -07:00
xed Clean up more code 2023-06-18 01:00:05 -07:00
xxhash Fix breakages in Linux-only build modes 2023-07-09 19:51:44 -07:00
zip Make improvements 2023-07-11 04:41:50 -07:00
zlib Clean up more code 2023-06-18 01:00:05 -07:00
zstd Make improvements 2023-07-10 04:35:14 -07:00
third_party.mk Move demangling utility to stdio 2023-07-07 10:47:50 -07:00