- mmap: Avoid assertion on freeing partial mappings [w/a for #75 and #76].
- Use realloc version that zeroes new memory [#46].
- Log PID/TID holding global LIBCx lock on fatal assertions.
- Implement shmem API [#83].
- select: Return -1 and ENIVAL when nfds < 0 or > FD_SETSIZE [#79].
- test-skeleton: Support 2 comm pipes between TEST_FORK child and parent.
- select: Avoid expensive I/O on regular files [#86].
- select: Implement EBADF and EFAULT hacks [#85].
- spawn2: Fix assertion when redirecting stderr to stdout [bitwiseworks/libc#69].
- net: Support common symbolic port names in getaddrinfo [#73].
- mmap: Return EACCESS for partial mprotect [#75].
- net.h: Remove socklen_t as it's now defined in LIBC [bitwiseworks/libc#62].
- spawn2: Allow for selective file handle inheritance [#77].
- spawn2: Fix crashes when starting too many children in P_2_THREADSAFE mode [#78].
- Handle ERROR_INTERRUPT from Dos calls by retrying [#39].
- mmap: Implement thread-safe concurrent access to file-based mappings [#68].
- mmap: Fix returning EOVERFLOW on files with sizes greater than 4G.
- mmap: Return EBADF instead of EINVAL when fd is -1 and no MAP_ANON.
- Fix installing EXCEPTQ on LIBC threads (started with _beginthread) in release builds.
- Add automatic FPU exception handler installation to recover from crashes due to unexpected changes of FPU CW by bogus Win/Gpi APIs.
- spawn2: Return PID of wrapped child instead of wrapper in P_2_THREADSAFE mode.
- spawn2: Implement P_SESSION support (including P_PM and other related flags from EMX).
- Add BLDLEVEL info to LIBCx DLL and tools.
- Implement
getaddrinfo
andgetnameinfo
family APIs. - Implement
if_nameindex
andif_nametointex
family APIs. - Implement
getifaddrs
family API.
- spawn2: Fix crash in P_2_THREADSAFE mode when envp is not NULL.
- spawn2: Add support for P_2_APPENDENV.
- spawn2: Support special pseudo-environment variables (BEGINLIBPATH, ENDLIBPATH, LIBPATHSTRICT).
- spawn2: Accept 1 as stdfds[1] and 2 as stdfds[2] values.
- spawn2: Fix unexpected override of passed envp vars with current ones.
- Implement the
spawn2
API that provides standard I/O redirection and thread safety. - fcntl: Allow to place write locks on files open in r/o mode to conform with POSIX.
- Improve tracking of open files between processes to fix fcntl lock failures in Samba4 tests and similar cases.
- mmap: Fix assertion in msync() on PAG_WRITE-only mmap.
- Force high memory for default C heap to make sure high memory is used even if some DLL (mistakenly) votes for low memory.
- Implement the
exeinfo
API that allows to examine an executable or a DLL without actually loading it for execution by the OS/2 kernel. - Write LIBCx assert messages to a per-process log file in
/@unixroot/var/log/libcx
to simplify tracking of critical bugs at runtime. - mmap: Increase the file handle limit to avoid premature ENOMEM errors when mapping many files at the same time (like
git
is used to do). - Implement tracking LIBC file descriptors in LIBCx to free LIBCx resources when respective files are closed by LIBC. This drops memory usage dramatically (200 times and more) in heavy usage scenraios like reading tens thousand files over an OS/2 Samba share.
- libcx-stats: Print internal LIBCx structure usage information.
- Add workaround for another
DosRead
bug that leads to hard system freezes on JFS when reading big files at once. - Add 'fread()
override to incorporate all 'DosRead
workarounds applied toread()
and other calls.
- EXPERIMENTAL. Make setting Unix user ID at startup disabled by default.
- Make streams bound to TCP sockets properly flushed at program exit.
- EXPERIMENTAL. Set Unix user ID at startup to what is set in LOGNAME/USER envvar.
- mmap: Support overlapped mappings (needed for e.g. git and BerkleyDB).
- mmap: Significantly reduce memory footprint when mapping files in chunks.
- libcx-stats: Print LIBCx version and DLL path information.
- select: Don't reset fd sets on failure (this fixes odd behavior of cmake).
- Improve the workaround for the
DosRead
bug (see version 0.4 changelog) to only touch uncommitted pages and to not modify their contents (this fixes crashes in cmake).
- mmap: Add support for mapping beyond EOF for non-anonymous mappings.
- mmap: Implement instant syncronization between two mappings of the same file.
- mmap: Support partial/multiple regions in
munmap()
,msync()
,madvise()
andmprotect()
as requred by POSIX. - mmap: Fix race when another process sets needed permissions on shared memory.
- mmap: Optimize LIBCx global memory pool usage.
- poll: Return EFAULT if first argument is NULL (not required by POSIX but many platforms do that).
- Add
read()
,__read()
,_stream_read()
andDosRead()
overrides that fix a knownDosRead
bug when it fails if interrupted by an exception handler and returns garbage. - Make
pread()
use the fixedDosRead
call to avoid returning EINVAL on mapped memory.
- mmap: Fix crashes when reading from PROT_READ mappings bound to files.
- Automatically install EXCEPTQ trap report generator (if available) on all application threads.
- Support trace groups in debug builds (controlled with LIBCX_TRACE environment var).
- Add complete POSIX
mmap()
implementation (also includesmsync()
,munmap()
,mprotect()
,madvise()
,posix_madvise()
). - Provide
libcx.a
import library in addition tolibcxN.a
.
- Don't prevent real close from be called after the close hook (also caused failed return values).
- Fix committed memory overgrowth under heavy load (caused ENOMEM in fcntl locks).
- fcntl: Implement joining adjacent lock regions which greatly reduces memory footprint.
- Implement dynamic memory allocation for internal data (currently limited to 2MB maximum).
- Add select() implementation that supports regular files.
- Add poll() emulation using select() including support for POLLRDNORM and friends.
- Add libcx-stats.exe to print live memory usage statistics.
- fcntl: Implement releasing all file locks of a process on file close.
- Initial release.