Cosmopolitan Libc makes C a build-once run-anywhere language, like Java, except it doesn't need an interpreter or virtual machine. Instead, it reconfigures stock GCC and Clang to output a POSIX-approved polyglot format that runs natively on Linux + Mac + Windows + FreeBSD + OpenBSD + NetBSD + BIOS with the best possible performance and the tiniest footprint imaginable. For further details, read Cosmopolitan Third Edition, the Cosmo README, and the Cosmopolitan Toolchain README. Prebuilt software is available on https://cosmo.zip/
Improvements
Cosmopolitan now has a bespoke speaker / microphone audio API.
- dc579b7 Productionize polished cosmoaudio library
- 0f3457c Add debug log to cosmoaudio and add examples
- 5d3b91d Get printvideo audio working on Windows and MacOS
- d1157d4 Upgrade pl_mpeg
There have been significant quality of life improvements for Windows.
- e65fe61 Fix shocking memory leak on Windows
- fbdf9d0 2ec413b cceddd2 Rewrite Windows poll()
- acd6c32 Rewrite Windows accept()
- e142124 Rewrite Windows connect()
- 6b10f4d Fix ioctl() and FIONREAD for sockets on Windows
- 58d252f Support more keystrokes in DECCKM mode
- 03875be Add missing ICANON features
- c260144 Introduce sigtimedwait() on Windows
- baf70af Make read() and write() signal handling atomic
- c3482af Fix file descriptor assignment issues on Windows
- 79516bf Improve handling of weird reparse points
- 39e7f24 Fix handling of paths with dirfd on Windows
- 462ba69 Speed up unnamed POSIX semaphores
- a5c0189 Make vim startup faster
- deb5e07 Remove exponential backoff from chdir()
- 51c0f44 Fix rare corner case in ntspawn.c (#1284)
- 5469202 Get monorepo fully building on Windows again
- b73673e Freshen bootstrap binaries
Bug fixes to cosmo libc system calls:
- dd8544c Delve into clock rabbit hole
Multi-threading is now better:
- 2f48a02 Make recursive mutexes faster
- 3c61a54 Introduce pthread_condattr_setclock()
- 90460ce Make Cosmo mutexes competitive with Apple Libc
- cca0edd Make pthread library internal mutex non-recursive
There have been improvements to your cosmocc toolchain:
- d99f066 Add clang-format to cosmocc toolchain
- 1e9902a Support merging many .a files into one .a file
- 41fc76c Fix apelink reproducible deterministic build bug
Bug fixes and improvements to the cosmo libc strings library:
- 7c83f4a wcsstr() is now linearly complex
- 7c83f4a strstr16() is now linearly complex
- 7c83f4a strstr() is now vectorized on aarch64 (10x)
- 7c83f4a strstr() now uses KMP on pathological cases
- 7c83f4a memmem() is now vectorized on aarch64 (10x)
- 7c83f4a memmem() now uses KMP on pathological cases
- 7c83f4a Make iswlower(), iswupper() consistent with glibc
- 7c83f4a Remove figure space from iswspace() implementation
- 7c83f4a Include line and paragraph separator in iswcntrl()
- 7c83f4a Use Musl wcwidth(), iswalpha(), iswpunct(), towlower(), towupper()
CTL now has a fast shared pointer implementation for C++ users.
- e1528a7 Basic CTL shared_ptr implementation (#1267)
- ae57fa2 Fix shared_ptr::owner_before (#1274)
- 37e2660 make_shared should work with nontrivial objects (#1293)
- ef62730 Enable STL-style enable_shared_from_this (#1295)
There have been many improvements to the printf() family of functions.
- e260d90 Fix 0 before decimal-point in hex float printf fns (#1297)
- 81bc8d0 Fix printing decimal-point character on printf %#a (#1296)
- b55e4d6 Hopefully completely fix printf-family %a rounding (#1287)
- 675abfa Add POSIX's apostrophe flag for printf-based funcs (#1285)
- e3d28de Fix UB in gdtoa hexadecimal float scanf and strtod (#1288)
- 7f21547 Fix occasional crash in test/libc/intrin/mmap_test (#1289)
- 19563d3 Make the pledge sandbox .so object work with UBSAN (#1290)
- 7d2c363 Fix statx not being allowed on rpath/wpath pledges (#1291)
- 4d05060 Partially fix printf hex float numbers/%a rounding (#1286)
- 4754f20 Fix printf-family long double prec/rounding issues (#1283)
- f882887 Fix ecvt/fcvt issues w.r.t. value==0 and ndigit==0 (#1282)
- c66abd7 Implement length modifiers for printf %n conv spec (#1278)
- 8f81451 Add POSIX's C conversion specifier to printf funcs (#1276)
- a089c07 Fix printf funcs on memory pressure with floats (#1275)
- 75e161b Fix printf-family functions on long double inf (#1273)
Other improvements:
- ecbf453 Upgrade to superconfigure z0.0.55
- 6397999 Fix unicode look-alike in define (#1294)
- b5fcb59 Implement more bf16/fp16 compiler runtimes
- ed1f992 Fix default open mode in redbean unix.open()
- 389d565 Use unsigned-signed conversion for refs test (#1272)
- 48b703b Minor cleanup/improvements in unique_ptr_test (#1266)