DINKUMWARE Ltd -- Leaders in Standard Library implementation. DINKUMWARE Ltd - www.dinkumware.com, Concord MA USA
Home Order On-Line Dinkum Compleat Reference Dinkum Reports Dinkum C++ tr1 Dinkum C++ Dinkum C99 Dinkum Supplemental Dinkum Exam
 

What's changed

The Dinkum Compleat Libraries is a new product that replaces our long popular Dinkum Unabridged Library V4.02, which we continue to maintain for our existing supported customers. Here is a summary of what's changed between products.

Major additions

  • added hardware header for TR18015
  • added iohw.h header for TR18037
  • added stdfix.h header for TR18037
  • added numerous headers, special math functions, overloads for TR19768
  • added uchar.h header for TR19769
  • added Corex libraries (allocators, code conversions, threads)

Major changes to the Standard C++ Library

  • algorithm: added bounding for random_shuffle with function
  • algorithm: added is_heap, is_sorted
  • algorithm: changed int to size_t in _Median
  • algorithm: corrected _Mid1 in random search_n
  • algorithm: corrected prev_permutation for equal elements
  • algorithm: corrected random_shuffle for large indices
  • algorithm: improved search_n
  • algorithm: reduced temp buffer request for stable_sort
  • algorithm: sped up _Debug_heap
  • algorithm: tidied count logic in stable_partition
  • bitset: added to_string overloads
  • bitset: dropped redundant tests from at
  • bitset: improved unsigned long constructor
  • bitset: moved _Trim outside loop for left shift
  • deque: fixed overlap for insert
  • deque: improved pop error checking
  • deque: protected against self swap
  • deque: simplified _Off calculation in iterators
  • exception: added throw() on destructor
  • exception: added throw() on uncaught_exception
  • fstream: corrected close logic
  • functional: added identity, project1st, project2nd, select1st, select2nd
  • hash_map: fixed overlap for insert
  • hash_set: fixed overlap for insert
  • ios.cpp: deferred _Ploc initialization for robustness
  • ios.cpp: dropped negative index code in _Findarr
  • iosfwd: changed streamoff to _Longlong
  • iostream.cpp: protected flush calls
  • istream: changed seekg to clear eofbit on success
  • list: added destroy counter to _Buynode with pointer constructors
  • list: added knot check to splice
  • list: changed remove to store test value
  • list: corrected _LOCK_DEBUG locks
  • list: corrected _Splice calls in sort
  • list: corrected erase all return
  • list: corrected iterator invalidation for sort
  • list: eliminated orphaning of end() iterators
  • list: protected against self swap
  • locale0.cpp: added _Locinfo(const string&)
  • map: added extra erase for _HAS_STRICT_CONFORMANCE
  • memory: changed auto_ptr stored pointer from void* to _Ty*
  • memory: changed autp_ptr_ref stored pointer from const void ** to void *
  • memory: corrected auto_ptr looping
  • memory: corrected auto_ptr_ref assignment
  • memory: corrected handling of negative arg to get_temporary_buffer
  • memory: delayed allocation in _Temp_buffer
  • memory: simplified auto_ptr operator*/->
  • newop.cpp: protected zero count
  • newop2.cpp: protected zero count
  • ostream: added _Addit to basic_ostream constructor
  • ostream: added exception handling to _Osfx
  • set: added extra erase for _HAS_STRICT_CONFORMANCE
  • slist: added knot check to splice
  • slist: changed remove to store test value
  • slist: corrected _LOCK_DEBUG locks
  • slist: corrected _Orphan_ptr
  • slist: corrected _Splice calls in sort
  • slist: corrected iterator invalidation for sort
  • slist: corrected previous
  • slist: corrected swap for different allocators
  • slist: eliminated orphaning of end() iterators
  • slist: protected against self swaps
  • sstream: added ios::ate support
  • sstream: corrected overflow logic for reallocated buffer
  • stack: added const_/reference types
  • utility: protected against self swaps
  • valarray: added explicit default construction to valarray(size_t) in _Grow
  • valarray: changed delete[] to delete
  • valarray: changed valarray::resize to discard old contents
  • valarray: corrected _Grow initialization for default constructors
  • valarray: corrected valarray(size_t) initialization
  • valarray: protected min/max from macros
  • vector: added _Vector_const_iterator
  • vector: added std:: to copy calls
  • vector: added swap overload for vector elements
  • vector: changed clear to not free storage
  • vector: corrected _LOCK_DEBUG locks
  • vector: corrected iterator+= for vector
  • vector: fixed overlap for insert
  • vector: protected against self swaps
  • vector: reduced use of _Tmp in insert_n
  • vector: simplified operator[] for iterator debugging performance
  • xcomplex: corrected tanh
  • xhash: added U to large decimal numbers
  • xhash: corrected rehash for small bucket argument
  • xhash: improved hash functions
  • xhash: protected against self swaps
  • xhash: simplified swap to fix end() bug
  • xiosbase: added hexfloat
  • xiosbase: corrected _USE
  • xlocale: added -3 return from _Mbrtowc
  • xlocale: added std:: to bad_cast
  • xlocale: clobbered locale name in combine for strict conformance
  • xlocale: corrected _Dowiden for null character
  • xlocale: dropped name option for combine
  • xlocale: weakened codecvt::do_length for strict conformance
  • xlocmes: corrected do_open return
  • xlocmon: added numpunct overrides for _HAS_STRICT_CONFORMANCE
  • xlocmon: clipped negative _Fracdigits in _Putmfld
  • xlocmon: made _Fracdigits an unsigned int in _Putmfld
  • xlocmon: tidied group checking
  • xlocnum: added hexfloat for C99
  • xlocnum: added hexfloat input
  • xlocnum: added numpunct overrides for _HAS_STRICT_CONFORMANCE
  • xlocnum: changed ',' to '\0' for num_put grouping
  • xlocnum: changed ::memchr to _CSTD memchr
  • xlocnum: changed default _Kseparator to comma
  • xlocnum: corrected I64 fixup for MS+Dinkum native
  • xlocnum: corrected ll/l64 fixup in _Ifmt
  • xlocnum: corrected strict _Grouping construction
  • xlocnum: corrected trailing precision logic
  • xlocnum: disabled group checking for _Getffld
  • xlocnum: disabled group checking for empty grouping string
  • xlocnum: skipped zero counting for Inf and zero
  • xloctime: added -3 return from _Mbrtowc
  • xloctime: corrected do_get_date eof logic
  • xmemory: changed _Destroy_range arguments for nonstandard allocators
  • xstring: added _Chassign
  • xstring: added _String_const_iterator
  • xstring: changed compare to always call traits::compare
  • xstring: protected against self swaps
  • xstring: tweaked single-element append
  • xtree: corrected _Orphan_ptr
  • xtree: corrected _Orphan_ptr declaration and call
  • xtree: dropped nonmutable _Lmost/_Rmost/_Root
  • xtree: eliminated orphaning of end() iterators
  • xtree: made _Dec and _Inc more alike for invalid case
  • xtree: protected against self swaps
  • xutility: added _STD qualifier to mismatch calls in equal
  • xutility: added non-const overloads to _Debug_lt*
  • xutility: corrected bad function name for _Debug_order with pred
  • xutility: eliminated orphaning of all iterators on assign
  • xutility: made first argument a ref for default _Debug_pointer
  • xutility: protected min/max from macros
  • xutility: templatized compares, subtract for reverse_iterator
  • yvals.h: added __STDC_VERSION__ definition
  • yvals.h: dropped _MIN/_MAX
  • yvals.h: increased _MAX_SIG_DIG to 48

Major changes to the Standard C Library:

  • atoll.c: corrected cast
  • fclose.c: added sanity check
  • fdopen.c: corrected open logic
  • feholdexcept.c: corrected FE_ALL_EXCEPT spelling in IA64
  • fesetexceptflag.c: corrected p type for software-only version
  • fesetround.c: changed movl to mov for Linux
  • fgetwc.c: added -3 return from _Mbtowc
  • fileno.c: corrected _FD_VALID call
  • fwrite.c: added nleft logic
  • nexttoward.c: corrected y Nan and x Inf handling
  • nexttoward.c: dropped INEXACT raises
  • nexttoward.c: added UNDERFLOW raise for all denorms
  • nexttowardf.c: corrected y Nan and x Inf handling
  • nexttowardf.c: dropped INEXACT raises
  • nexttowardf.c: added UNDERFLOW raise for all denorms
  • nexttowardl.c: corrected y Nan and x Inf handling
  • nexttowardl.c: corrected decrementing _L1 for 16 byte
  • nexttowardl.c: corrected Inf fixup for 8/16 byte
  • nexttowardl.c: dropped INEXACT raises
  • nexttowardl.c: added UNDERFLOW raise for all denorms
  • remove.c: added _Rmdir for Posix
  • setvbuf.c: changed size == 0 logic to better match FreeBSD
  • tmpfile.c: corrected lock logic
  • tmpnam.c: added remove
  • xctype.c: made NUL a control char for Posix
  • xdscale.c: corrected for large lexp, rounding denormalized
  • xdscale.c: corrected round to even logic
  • xdtest.c: added _DENORM for fpclassify
  • xfdscale.c: corrected for large lexp, rounding denormalized
  • xfdscale.c: corrected round to even logic
  • xfdtest.c: added _DENORM for fpclassify
  • xfenv0.c: corrected _FPP_NONE case
  • xferaise.c: added _FE_INEXACT on over/underflow for IEC 60559
  • xfrprep.c: enabled buffer allocation for line buffering
  • xgentime.c: corrected default case
  • xgentime.c: corrected isleapyr logic
  • xgetfld.c: added k, K, r, and R qualifiers for fixed-point
  • xgetfld.c: added AltiVec stuff
  • xgetfloa.c: added pointer argument for AltiVec
  • xgetint.c: added pointer argument for AltiVec
  • xgetstr.c: added -3 return from _Mbtowc
  • xgetstr.c: suppressed argument pickup for noconv
  • xgetstr.c: corrected error return logic
  • xgetstr.c: corrected range-detection logic
  • xldscale.c: corrected _DLONG==1 denormalized
  • xldscale.c: corrected for large lexp, rounding denormalized
  • xldscale.c: corrected _DLONG==2 denormalized, round to even
  • xldscale.c: corrected zero detection for _DLONG==1
  • xldtest.c: added _DENORM for fpclassify
  • xldtob.c: converted extra digit to fix rounding
  • xldunsca.c: corrected 80-bit denormalized exponent
  • xmbtowc.c: added -3 return
  • xprintf.c: added _HAS_FIXED_POINT stuff for %v
  • xprintf.c: corrected separator logic
  • xprintf.c: added argno
  • xputfld.c: added _HAS_FIXED_POINT k, K, r, and R specifiers
  • xputfld.c: corrected bad code handling
  • xputfld.c: added _HAS_FIXED_POINT v specifier
  • xputfld.c: added argno
  • xputstr.c: checked _Puttxt returns
  • xscanf.c: changed nconv to detect unstored conversions
  • xscanf.c: added secure/prec for _HAS_SECURE_LIB
  • xscanf.c: corrected overflow test
  • xscanf.c: corrected read failure logic
  • xscanf.c: corrected matching failure returns
  • xscanf.c: added AltiVec stuff
  • xstoflt.c: reworked to avoid excess digits
  • xstoflt.c: corrected value for bad parse
  • xstoflt.c: added rollback logic to exponent parse
  • xstopfx.c: corrected NaN) and hex parsing
  • xstoxflt.c: reworked to avoid excess digits
  • xstoxflt.c: corrected incomplete exponent parse
  • xstoxflt.c: regularized predicate on fraction accumulator
  • xstoxflt.c: reconciled maxsig compares with xstoflt.c
  • xthread.c: corrected thread start logic
  • xwgetfld.c: added k, K, r, and R qualifiers for fixed-point
  • xwgetfld.c: added AltiVec stuff
  • xwgetflo.c: added pointer argument for AltiVec
  • xwgetint.c: added pointer argument for AltiVec
  • xwgetstr.c: suppressed argument pickup for noconv
  • xwgetstr.c: corrected error return logic
  • xwgetstr.c: corrected range-detection logic
  • xwldtob.c: converted extra digit to fix rounding
  • xwprintf.c: corrected x.qual logic
  • xwprintf.c: corrected separator logic
  • xwprintf.c: added argno
  • xwputfld.c: added k, K, r, and R qualifiers for fixed-point
  • xwputfld.c: corrected bad code handling
  • xwputfld.c: added _HAS_FIXED_POINT v specifier
  • xwputfld.c: added argno
  • xwputfld.c: reconciled with xputfld.c
  • xwputstr.c: checked _WPuttxt returns
  • xwrename.c: corrected parens in wcstombs test
  • xwscanf.c: changed nconv to detect unstored conversions
  • xwscanf.c: corrected overflow test
  • xwscanf.c: corrected matching failure return
  • xwscanf.c: added AltiVec stuff
  • xwstoflt.c: reworked to avoid excess digits
  • xwstoflt.c: corrected value for bad parse
  • xwstoflt.c: added rollback logic to exponent parse
  • xwstoflt.c: reconciled maxsig compares with xstoflt.c
  • xwstopfx.c: corrected NaN) and hex parsing
  • xwstopfx.c: corrected Inf parsing
  • xwstoxfl.c: reworked to avoid excess digits
  • xwstoxfl.c: corrected incomplete exponent parse
  • xwstoxfl.c: repaired damaged predicate on fraction accumulator
  • xwstoxfl.c: reconciled maxsig compares with xstoflt.c
  • xxacosh.h: changed zero divide to invalid
  • xxasinh.h: corrected negative x test
  • xxatanh.h: corrected negative test
  • xxcacos.h: corrected Inf+I*NaN logic
  • xxcacos.h: corrected special cases
  • xxcacosh.h: corrected special cases
  • xxcacosh.h: corrected final atan2 first argument
  • xxcasin.h: rewrote in terms of casinh
  • xxcasinh.h: corrected special cases
  • xxcatan.h: rewrote in terms of catanh
  • xxcatanh.h: corrected special cases
  • xxccos.h: rewrote in terms of ccosh
  • xxccosh.h: corrected special cases
  • xxcexp.h: added over/underflow tests
  • xxcexp.h: moved trap setting to Exp
  • xxcexp.h: corrected special cases
  • xxclog.h: reduced cm precision for larger Hypot scaling
  • xxclog.h: corrected precision near unit circle
  • xxclog.h: added zero-divide reporting
  • xxcsin.h: rewrote in terms of csinh
  • xxcsinh.h: corrected special cases
  • xxcsqrt.h: added special cases for C99
  • xxcsqrt.h: corrected (inf, x) logic
  • xxcsqrt.h: corrected (0 or finite, -0) logic
  • xxctan.h: eliminated divide by Inf
  • xxctan.h: rewrote in terms of ctanh
  • xxctanh.h: eliminated divide by Inf
  • xxctanh.h: corrected special cases
  • xxerf.h: changed return for small x
  • xxerfc.h: added underflow reporting
  • xxerfc.h: added more intervals, extra precision exp
  • xxerfc.h: corrected interval logic
  • xxerfc.h: moved trap setting to Exp
  • xxerfc.h: improved fits
  • xxerfc.h: improved zero representations
  • xxerfc.h: added erf declaration
  • xxexp.h: moved trap setting to Exp
  • xxexp2.h: split off exponent to improve accuracy
  • xxexp2.h: moved trap setting to Exp
  • xxexpm1.h: changed return for small x
  • xxfdim.h: eliminated -0 return
  • xxfma.h: corrected rounding logic
  • xxfma.h: corrected accumulation
  • xxfma.h: corrected exp test for huge+2*huge-huge, xp*yp add
  • xxfma.h: separated out z=Inf case
  • xxfma.h: added _Xp stuff
  • xxfmax.h: added -0 handling
  • xxfmin.h: added -0 handling
  • xxfmod.h: corrected for large exponent difference
  • xxlgamma.h: moved in stuff from xxxlgamma.h
  • xxlgamma.h: added overflow report to lgamma_big
  • xxlgamma.h: added patches for zeros
  • xxlgamma.h: added [1.2, 1.5] approximation
  • xxlgamma.h: improved root approximations
  • xxllrint.h: simplified
  • xxllrint.h: added FE_INEXACT logic
  • xxllround.h: simplified
  • xxllround.h: added round declaration
  • xxlog1p.h: changed return for small x
  • xxlog1p.h: replaced rational approx with _Log1p calls
  • xxlog1p.h: replaced _Log1p call with extra precision approx
  • xxlrint.h: simplified
  • xxlrint.h: added FE_INEXACT logic
  • xxlround.h: simplified
  • xxnearbyint.h: simplified
  • xxnearbyint.h: moved finite case to xxxrint.h
  • xxnearbyint.h: corrected return syntax
  • xxpow.h: corrected -0 return
  • xxpow.h: corrected over/underflow logic, tidied
  • xxpow.h: corrected (1+eps)^huge
  • xxpow.h: made zexp long for safety
  • xxpow.h: added _Xp stuff
  • xxpow.h: moved trap setting to Exp
  • xxpow.h: corrected xpx1 load, revised logic
  • xxpow.h: added ln(x+a) logic
  • xxpow.h: added _Pow for tgamma
  • xxpow.h: corrected ln(1) to log2(1) conversion
  • xxremquo.h: added qneg
  • xxrint.h: simplified
  • xxrint.h: added inexact check
  • xxround.h: simplified
  • xxsqrt.h: corrected -0 case
  • xxstod.h: renamed, added perr
  • xxstod.h: simplified accumulation
  • xxtan.h: enhanced, moved Quad to xxxquad.h
  • xxtan.h: corrected 1/eps sign
  • xxtanh.h: added half argument step
  • xxtanh.h: eliminated intermediate overflow
  • xxtgamma.h: added over/underflow reporting
  • xxtgamma.h: eliminated Lgamma call
  • xxtgamma.h: moved large x handling to Tgamma
  • xxtgamma.h: changed Tgamma_big to Gamma_big
  • xxxatan.h: added inexact logic
  • xxxcaddcc.h: corrected arithmetic
  • xxxcaddcc.h: added infinity fixup
  • xxxcaddcc.h: reconciled with multiply
  • xxxcaddcc.h: removed infinity fixup
  • xxxcaddcr.h: dropped assigns
  • xxxcdivcc.h: corrected NaN tests
  • xxxcdivcc.h: added infinity fixup
  • xxxcdivcc.h: removed infinity fixup
  • xxxcdivcr.h: dropped assigns
  • xxxcmulcc.h: added infinity fixup
  • xxxcmulcc.h: removed infinity fixup
  • xxxcmulcr.h: dropped assigns
  • xxxcosh.h: corrected -Inf return
  • xxxcosh.h: moved trap setting to Exp
  • xxxcsubcc.h: corrected arithmetic
  • xxxcsubcc.h: added infinity fixup
  • xxxcsubcc.h: reconciled with multiply
  • xxxcsubcc.h: removed infinity fixup
  • xxxcsubcr.h: dropped assigns
  • xxxdtent.h: renamed, added perr
  • xxxexp.h: changed exponent argument to long
  • xxxexp.h: corrected c* precision
  • xxxexp.h: corrected Inf sign and size of xexp
  • xxxexp.h: added special code checking and trap setting
  • xxxexp.h: corrected y==0 logic
  • xxxexp.h: corrected -0 logic
  • xxxhypot.h: improved scaling for csqrt
  • xxxhypot.h: corrected zero arg case
  • xxxlog.h: generalized Inf return
  • xxxlog.h: added Logpoly for pow
  • xxxprec.h: added new file
  • xxxquad.h: enhanced, moved out of xxxsin.h
  • xxxquad.h: increased c* precision
  • xxxquad.h: added Xp stuff for 128-bit precision
  • xxxquad.h: corrected inexact return
  • xxxquad.h: made full precision
  • xxxquad.h: added Quadph
  • xxxquad.h: corrected overflow in 53-bit values
  • xxxquad.h: added tables of large moduli
  • xxxquad.h: corrected XSIZE usage with xpx
  • xxxrint.h: added new file, copying from xxnearbyint.h
  • xxxsin.h: enhanced, moved out Quad to xxxquad.h
  • xxxsinh.h: corrected small x case
  • xxxsinh.h: moved trap setting to Exp
  • xxxtgamma.h: moved in Gamma_big from xxxlgamma.h
  • xxxtgamma.h: moved in large x handling from xxtgamma.h
  • xxxtgamma.h: changed Tgamma_big to Gamma_big