1
0
mirror of https://github.com/adtools/clib2.git synced 2025-12-08 14:59:05 +00:00

First preparations for a future clib2 release

This commit is contained in:
Olaf Barthel
2025-07-10 14:21:30 +02:00
parent 76d5b5874e
commit a1f85a9c7f
5 changed files with 104 additions and 13 deletions

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 215
#define DATE "26.6.2017"
#define VERS "amiga.lib 1.215"
#define VSTRING "amiga.lib 1.215 (26.6.2017)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.215 (26.6.2017)"
#define REVISION 216
#define DATE "10.7.2025"
#define VERS "amiga.lib 1.216"
#define VSTRING "amiga.lib 1.216 (10.7.2025)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.216 (10.7.2025)"

View File

@ -1 +1 @@
215
216

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 215
#define DATE "26.6.2017"
#define VERS "c.lib 1.215"
#define VSTRING "c.lib 1.215 (26.6.2017)\r\n"
#define VERSTAG "\0$VER: c.lib 1.215 (26.6.2017)"
#define REVISION 217
#define DATE "10.7.2025"
#define VERS "c.lib 1.217"
#define VSTRING "c.lib 1.217 (10.7.2025)\r\n"
#define VERSTAG "\0$VER: c.lib 1.217 (10.7.2025)"

View File

@ -1 +1 @@
215
217

View File

@ -1,6 +1,97 @@
c.lib 1.217 (10.7.2025)
- The raise() function no longer directly calls abort() because that
function in turn would have invoked raise(SIGABRT), triggering an
infinite loop. Instead, raise() now invokes the __abort() function
which abort() would have called via raise(SIGABRT).
- fgets() no longer leverages the __getc() macro, which in the
original implementation added excessive overhead for even small
read operations. Instead, fgets() now focuses on copying data
stored in the FILE read buffer, transferring the buffered data
in bulk, if possible. The same kind of changes are present in
the gets() function.
- fputs() and puts() no longer leverage the __putc() macro. As with
the fgets() implementation, the focus is now on enabling bulk
data transfer, eliminating the __putc() macro overhead.
- fread() and fwrite() no longer leverage the __getc() and
__putc() macros. Their focus is on enabling bulk data transfer
instead.
- The setvbuf() function now correctly sets the buffer size to the
value of BUFSIZ if a buffer size of 0 is specified. Previously,
setvbuf() would have disabled buffering for the FILE instead.
Failure to allocate a buffer of the specified non-zero size is
now caught and results in the setvbuf() function to indicate
failure, setting the errno variable to ENOBUFS.
- The alloca() library function (which is a built-in function for
gcc, for example) now calls abort() rather than returning NULL.
- Changed the numeric overflow check which the calloc() function
uses to be simpler.
- The memory management debugging code in stdlib_free.c is no longer
reusing the allocation size value to indicate that an allocation
should never be freed. This indication is now stored in a separate
flags field.
- The memory debugging code in malloc() now checks if the combined
size of the management data structures and front/back padding
stay within the bounds of a 32 bit integer.
The list of memory nodes to be freed is now initialized first.
Previously, the list would be left uninitialized if the attempt to
allocate memory for memory arbitration semaphore had failed.
- The realloc() function now obtains the original size of the
allocation from a dedicated field of the data structure which
precedes the allocation, whose purpose is to track the
allocation until it is freed. Previously, obtaining the relevant
allocation size information was encapsulated by a "clever"
macro.
With memory debugging enabled, the stored allocation size no
longer says how much memory, padding included, is being used.
Instead, the requested allocation size is stored unchanged, with
the total allocation size derived from this number. The idea is
to make it harder to mistake the original allocation size for
the padded one and vice versa.
- The use of the optional slab allocator now has to be deliberately
enabled in the "stdlib_memory.h" header file.
- The minimum size of an allocation managed by the optional slab
allocator is now 16 bytes instead of 8.
- The minimum size of a slab is now 4096 bytes.
- The optional slab allocator now checks for integer overflows when
processing allocation requests, taking into account the size of
the actual allocating, including padding. The task of figuring
out how much padding is needed now rests in function which
calculates the total overhead.
amiga.lib 1.216 (10.7.2025)
- Added a 'C' implementation of the pools.lib functions which were
merged with the Kickstart/Workbench 3.0 era amiga.lib. This
implementation provides the LibDeletePool(), LibCreatePool(),
LibAllocPooled() and LibFreePooled() functions which had not
been available before in clib2.
Please note that these functions are largely obsolete and only
helpful for code which must run on Kickstart 2.04. The current
implementation performs no error checking for integer overflows,
just like the original pools.lib implementation.
c.lib 1.216 (xxx)
- Add some wchar and multbyte-string related functions to allow gcc
- Add some wchar and multibyte-string related functions to allow gcc
building a libstdc++ library with wide char support. For now, the
functions are mostly stub ones only. They can be implemented on
demand.