Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | expr: Make expressions variadic | Tavian Barnes | 2024-01-07 | 8 | -890/+1719 | |
| | | | | | | | | | Rather than only unary/binary expressions, we now support an arbitrary number of children. The optimizer has been re-written almost completely and now supports optimal reordering of longer expression chains, rather than just arm-swapping. Fixes #85. | |||||
* | list: New SLIST_HEAD() and SLIST_TAIL() macros | Tavian Barnes | 2024-01-07 | 1 | -3/+40 | |
| | ||||||
* | Work around DragonFly BSD kernel bug | Tavian Barnes | 2024-01-04 | 1 | -1/+13 | |
| | | | | | | | | | DragonFly's x86_64 assembly implementation of copyinstr() checks the wrong pointer when deciding whether to return EFAULT or ENAMETOOLONG, causing it to always return EFAULT for overlong paths. Work around it by treating EFAULT the same as ENAMETOOLONG on DragonFly. Link: https://twitter.com/tavianator/status/1742991411203485713 | |||||
* | fsade: Fix ACL checks on DragonFly BSD | Tavian Barnes | 2024-01-03 | 1 | -9/+45 | |
| | ||||||
* | config: Disable xattrs on DragonFly BSD | Tavian Barnes | 2024-01-03 | 1 | -1/+1 | |
| | | | | DragonFly is missing extattr_get_link() and extattr_list_{file,link}(). | |||||
* | config: Check for GCC >= 11 before using malloc attribute args | Tavian Barnes | 2024-01-03 | 1 | -3/+3 | |
| | ||||||
* | bit: Rename bswap{16,32,64}() | Tavian Barnes | 2024-01-03 | 1 | -16/+16 | |
| | | | | | NetBSD already defines this in <sys/bswap.h>, so pick names that don't conflict. | |||||
* | xspawn: Check for NetBSD 10 before using posix_spawn_..._fchdir() | Tavian Barnes | 2024-01-02 | 1 | -1/+1 | |
| | ||||||
* | config: Polyfill __NetBSD_Prereq__ | Tavian Barnes | 2024-01-02 | 1 | -0/+4 | |
| | ||||||
* | config: Don't use target_clones on NetBSD | Tavian Barnes | 2024-01-02 | 1 | -1/+1 | |
| | ||||||
* | pwcache: Fix uninitialized pointers on OpenBSD | Tavian Barnes | 2024-01-02 | 1 | -4/+4 | |
| | | | | | | | | | | | | | POSIX specifies that the get{pw,gr}*_r() functions store a NULL pointer to *result on error. However, OpenBSD does not always do this[1][2]: > if (bufsize < GETGR_R_SIZE_MAX) > return ERANGE; Work around it by explicitly initializing ret to NULL. [1]: https://github.com/openbsd/src/blob/e4829a9cc666f01ca5062d7fc15c20ab2d69229e/lib/libc/gen/getgrent.c#L135-L136 [2]: https://github.com/openbsd/src/blob/e4829a9cc666f01ca5062d7fc15c20ab2d69229e/lib/libc/gen/getgrent.c#L183-L184 | |||||
* | bfstd: Fix fflags type on OpenBSD | Tavian Barnes | 2024-01-02 | 1 | -2/+8 | |
| | ||||||
* | expr: Arena-allocate expressions | Tavian Barnes | 2023-12-20 | 6 | -301/+210 | |
| | ||||||
* | parse: s/parser_state/bfs_parser/ | Tavian Barnes | 2023-12-20 | 1 | -476/+476 | |
| | ||||||
* | opt: Use more standard terminology for data flow domains | Tavian Barnes | 2023-12-20 | 1 | -298/+294 | |
| | ||||||
* | expr: Move some implementation into expr.c | Tavian Barnes | 2023-12-20 | 2 | -45/+56 | |
| | ||||||
* | alloc: Add attr(nodiscard) to a few functions | Tavian Barnes | 2023-12-20 | 1 | -0/+4 | |
| | ||||||
* | config: Fix attr_nodiscard to use warn_unused_result | Tavian Barnes | 2023-12-20 | 1 | -2/+2 | |
| | ||||||
* | config: s/attr_format/attr_printf/ | Tavian Barnes | 2023-12-18 | 10 | -29/+29 | |
| | ||||||
* | config: New variadic attr(...) macro | Tavian Barnes | 2023-12-18 | 17 | -62/+127 | |
| | ||||||
* | bfstd: New xwcwidth() wrapper | Tavian Barnes | 2023-12-16 | 3 | -2/+7 | |
| | ||||||
* | main: Warn if setlocale() fails | Tavian Barnes | 2023-12-16 | 1 | -1/+12 | |
| | | | | This should help users understand why issues like #128 happen. | |||||
* | parse: Reject integers that start with whitespace | Tavian Barnes | 2023-12-09 | 1 | -1/+5 | |
| | ||||||
* | bfstd: Wrap is[w]{alpha,digit,...}() | Tavian Barnes | 2023-12-09 | 2 | -31/+62 | |
| | ||||||
* | color: Make sure errno is non-zero if parse_colors() fails | Tavian Barnes | 2023-11-28 | 1 | -43/+43 | |
| | ||||||
* | bfstd: Work around more instances of llvm/llvm-project#65532 | Tavian Barnes | 2023-11-23 | 1 | -14/+19 | |
| | ||||||
* | darray: Remove | Tavian Barnes | 2023-11-23 | 3 | -188/+0 | |
| | | | | | The new RESERVE() macro from alloc.h is nicer, and handles alignment properly. | |||||
* | printf: Switch from darray to RESERVE() | Tavian Barnes | 2023-11-23 | 1 | -175/+195 | |
| | ||||||
* | mtab: Switch from darray to RESERVE() | Tavian Barnes | 2023-11-23 | 1 | -23/+23 | |
| | ||||||
* | ctx: Switch paths from darray to RESERVE() | Tavian Barnes | 2023-11-23 | 4 | -15/+16 | |
| | ||||||
* | alloc: New helpers for growing dynamic arrays | Tavian Barnes | 2023-11-23 | 2 | -22/+80 | |
| | ||||||
* | exec: Use the new REALLOC_ARRAY() macro | Tavian Barnes | 2023-11-23 | 1 | -1/+1 | |
| | ||||||
* | dstring: Use the new REALLOC_FLEX() macro | Tavian Barnes | 2023-11-23 | 2 | -51/+65 | |
| | | | | | | While I'm at it, switch the capacity to include the NUL byte, so that it could be used by __counted_by() for example. And fix a theoretical provenance issue. | |||||
* | alloc: New helpers for aligned reallocation | Tavian Barnes | 2023-11-23 | 2 | -4/+62 | |
| | | | | | | There is no aligned_realloc(), so the new xrealloc() function emulates it by manually reallocating and copying for over-aligned types. The new REALLOC_ARRAY() and REALLOC_FLEX() macros wrap xrealloc(). | |||||
* | alloc: New ALLOC_MAX macro | Tavian Barnes | 2023-11-23 | 1 | -2/+10 | |
| | ||||||
* | alloc: New is_aligned() helper | Tavian Barnes | 2023-11-23 | 2 | -5/+10 | |
| | ||||||
* | bftw: Add some whitespace to struct bftw_args | Tavian Barnes | 2023-11-23 | 1 | -0/+4 | |
| | ||||||
* | xspawn: Detect posix_spawn() support | Tavian Barnes | 2023-11-19 | 2 | -10/+38 | |
| | ||||||
* | ioq: Don't crash on allocation failures | Tavian Barnes | 2023-11-15 | 1 | -0/+4 | |
| | ||||||
* | config: New attr_maybe_unused macro | Tavian Barnes | 2023-11-15 | 4 | -7/+19 | |
| | ||||||
* | xspawn: API tweaks | Tavian Barnes | 2023-11-15 | 3 | -43/+48 | |
| | ||||||
* | bit: Implement a branchless has_single_bit() | Tavian Barnes | 2023-11-13 | 1 | -1/+2 | |
| | ||||||
* | eval: Remove Cosmopolitan-specific workaround | Tavian Barnes | 2023-11-13 | 1 | -3/+1 | |
| | | | | | | | Turns out this is not specific to Cosmopolitan, it's a recent Linux behaviour change. Link: https://lore.kernel.org/linux-fsdevel/20231113180616.2831430-1-tavianator@tavianator.com/ | |||||
* | Revert "bit: Implement a branchless has_single_bit()" | Tavian Barnes | 2023-11-11 | 1 | -2/+1 | |
| | | | | | | Doesn't work for the highest bit due to overflow. This reverts commit 208376ef99da243545efcd6fb02d3469b4c068ed. | |||||
* | Initial support for Cosmopolitan Libc | Tavian Barnes | 2023-11-10 | 5 | -3/+33 | |
| | ||||||
* | exec: Don't do setrlimit() in the parent | Tavian Barnes | 2023-11-10 | 1 | -22/+4 | |
| | | | | | | | | | This was hacky, but it's also broken because it can make posix_spawn() fail with EMFILE, as happens on at least musl. Fixes: 7d69fef6a0b80ad57acde7bac8a22b83531fec0d Link: https://www.austingroupbugs.net/view.php?id=603 Link: https://sourceware.org/bugzilla/show_bug.cgi?id=31049 | |||||
* | bit: Implement a branchless has_single_bit() | Tavian Barnes | 2023-11-10 | 1 | -1/+2 | |
| | ||||||
* | config: Add constants for C standard versions | Tavian Barnes | 2023-11-10 | 4 | -8/+16 | |
| | ||||||
* | config: Add (de)allocator attributes | Tavian Barnes | 2023-11-09 | 3 | -25/+85 | |
| | ||||||
* | config: New attr_noinline and attr_cold macros | Tavian Barnes | 2023-11-09 | 4 | -0/+36 | |
| |