Research portable Memory game | Исследовать портируемую игру Память
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

283 lines
13KB

  1. uthash ChangeLog
  2. ================
  3. Click to return to the link:index.html[uthash home page].
  4. NOTE: This ChangeLog may be incomplete and/or incorrect. See the git commit log.
  5. Version 2.3.0 (2021-02-25)
  6. --------------------------
  7. * remove HASH_FCN; the HASH_FUNCTION and HASH_KEYCMP macros now behave similarly
  8. * remove uthash_memcmp (deprecated in v2.1.0) in favor of HASH_KEYCMP
  9. * silence -Wswitch-default warnings (thanks, Olaf Bergmann!)
  10. Version 2.2.0 (2020-12-17)
  11. --------------------------
  12. * add HASH_NO_STDINT for platforms without C99 <stdint.h>
  13. * silence many -Wcast-qual warnings (thanks, Olaf Bergmann!)
  14. * skip hash computation when finding in an empty hash (thanks, Huansong Fu!)
  15. * rename oom to utarray_oom, in utarray.h (thanks, Hong Xu!)
  16. * rename oom to utstring_oom, in utstring.h (thanks, Hong Xu!)
  17. * remove MurmurHash/HASH_MUR
  18. Version 2.1.0 (2018-12-20)
  19. --------------------------
  20. * silence some Clang static analysis warnings
  21. * add LL_INSERT_INORDER and LL_LOWER_BOUND etc (thanks, Jeffrey Lovitz and Mattias Eriksson!)
  22. * add uthash_bzero for platforms without <string.h>
  23. * fix a missing HASH_BLOOM_ADD in HASH_SELECT (thanks, Pawel Veselov!)
  24. * permit malloc failure to be recoverable via HASH_NONFATAL_OOM (thanks, Pawel Veselov!)
  25. * avoid repeated calls to uthash_strlen in HASH_FIND_STR
  26. * rename uthash_memcmp to HASH_KEYCMP, leaving the old name for compatibility
  27. * add utstack.h
  28. * remove libut
  29. Version 2.0.2 (2017-03-02)
  30. --------------------------
  31. * fix segfault in HASH_ADD_INORDER etc (thanks, Yana Kireyonok!)
  32. * remove spurious cast to unsigned in utstring_len (thanks, Michal Sestrienka!)
  33. * add uthash_memcmp and uthash_strlen for platforms without <stdlib.h> (thanks, Pawel Veselov!)
  34. * fix a C++ incompatibility in utringbuffer
  35. Version 2.0.1 (2016-07-05)
  36. --------------------------
  37. * in-order insertion macros HASH_ADD_INORDER etc (thanks, Thilo Schulz!)
  38. * by-hashvalue insertion macros HASH_ADD_BYHASHVALUE etc
  39. * during key comparison, check hashvalue before doing a full memcmp
  40. * add utringbuffer.h
  41. Version 1.9.9.1 (2014-11-18)
  42. ----------------------------
  43. * inclusion of experimental libut bundle with utvector in opt/
  44. * use shift in Bernstein hash instead of multiply (thanks, Jimmy Zhuo!)
  45. * switch ssize_t types in utarray/utstring to size_t (thanks, Hong Xu!)
  46. * fix utstring pointer math on >4GB strings (thanks, Thomas Bottesch!)
  47. * change FNV hash to FNV-1a varation (thanks, dwest1975!)
  48. * fix bug in HASH_REPLACE_STR (thanks, Ilya Kaliman!)
  49. Version 1.9.9 (2014-02-25)
  50. --------------------------
  51. * made HASH_ADD_STR compatible with char* or char[] (thanks, Samuel Thibault!)
  52. * fixed header inclusion of sys/types.h for ssize_t (thanks, Fernando Campos!)
  53. * added LL_COUNT/DL_COUNT/CDL_COUNT (thansk, Paul Praet!)
  54. * added LRU cache example in `tests/lru_cache` (thanks, Oliver Lorenz!)
  55. * fix LL_DELETE2 for VS2008 (thanks, Greg Davydouski!)
  56. * fix missing argument in `HASH_REPLACE_STR` (thanks, Alex!)
  57. * bump version number in source files to match docs (thanks, John Crow!)
  58. * add `HASH_OVERHEAD` macro to get overhead size for hash table
  59. Version 1.9.8 (2013-03-10)
  60. --------------------------
  61. * `HASH_REPLACE` now in uthash (thanks, Nick Vatamaniuc!)
  62. * fixed clang warnings (thanks wynnw!)
  63. * fixed `utarray_insert` when inserting past array end (thanks Rob Willett!)
  64. * you can now find http://troydhanson.github.com/uthash/[uthash on GitHub]
  65. * there's a https://groups.google.com/d/forum/uthash[uthash Google Group]
  66. * uthash has been downloaded 29,000+ times since 2006 on SourceForge
  67. Version 1.9.7 (2012-10-09)
  68. --------------------------
  69. * utstring now supports substring search using `utstring_find` (thanks, Joe Wei!)
  70. * utlist now supports element 'prepend' and 'replace' (thanks, Zoltán Lajos Kis!)
  71. * utlist element prev/next fields can now have any names (thanks, Pawel S. Veselov!)
  72. * uthash cast quiets a clang warning (thanks, Roman Divacky and Baptiste Daroussin!)
  73. * uthash userguide example shows how to check key uniqueness (thanks, Richard Cook!)
  74. * uthash HASH_MUR compiles under MSVC++ 10 in C mode (thanks, Arun Kirthi Cherian!)
  75. * `utstring_printf` now supports format checking (thanks, Donald Carr!)
  76. Version 1.9.6 (2012-04-28)
  77. --------------------------
  78. * add utarray_prev (thanks, Ben Hiett!)
  79. * add parens/casts for greater compatibility (thanks, Atis, Debasis Ganguly, and Steve McClellan!)
  80. * added ifndef to uthash_malloc and related hooks (thanks, Holger Machens!)
  81. * edit examples so they do not leak memory (thanks, 任晶磊!)
  82. Version 1.9.5 (2011-11-16)
  83. --------------------------
  84. * added `utarray_renew`
  85. * fixed memory leak in `uthash_clear` when using Bloom filter (thanks, Jan Hättig!)
  86. * utarray now copies the UT_icd on array creation rather than storing a pointer
  87. * add parentheses to `HASH_ADD` to fix preprocessing of certain arguments (thanks, Aaron Rosen!)
  88. * more parenthesizations for greater macro argument flexibility
  89. Version 1.9.4 (2011-06-05)
  90. --------------------------
  91. * uthash now supports MurmurHash v3
  92. * utlist now includes concatenation macros (`LL_CONCAT` and `DL_CONCAT`)
  93. * utarray now supports binary search (`utarray_find`)
  94. * utstring now supports a new-or-clear-existing macro (`utstring_renew`)
  95. * documented technique for a multi-level hash table
  96. * clarified scope requirements for `UT_icd` in the utarray documentation
  97. * fixed termination when `utstring_clear` is followed by `utstring_body`
  98. * fixed utarray_inserta macro when used with complex arguments
  99. * on Visual Studio define missing type `uint8_t`
  100. * Debian/Ubuntu include uthash in the package `uthash-dev`.
  101. * uthash has been downloaded 16,211 times.
  102. Thanks to Yu Feng, Richard Cook, Dino Ciuffetti, Chris Groer, and Arun Cherian
  103. for feedback and fixes in this release!
  104. Version 1.9.3 (2010-10-31)
  105. --------------------------
  106. * fix an `ifdef` for compatibility with Intel compiler (thanks, degski!)
  107. * fix `HASH_ITER` macro to satisfy C++ casting rules (thanks, Erik Bai!)
  108. Version 1.9.2 (2010-10-04)
  109. --------------------------
  110. * new `HASH_ITER` macro for more convenient deletion-safe iteration
  111. * `hashscan` can now run on FreeBSD 8.1 and later (thanks, Markus Gebert!)
  112. * More parens to evaluate complex macro arguments properly (thanks, ngg!)
  113. * Add sz parameter to the `uthash_free` hook for platforms that do their own memory management. Hopefully this minor API change doesn't cause too much breakage for people. (thanks, Niall Douglas!)
  114. * uthash has been downloaded 12,294 times
  115. Version 1.9.1 (2010-05-15)
  116. --------------------------
  117. * Fix a redefinition warning when using `uthash.h` and `utstring.h` together
  118. * Fix a bug in `utstring_init`
  119. * Added `HASH_FIND_PTR` and `HASH_ADD_PTR` (thanks, Niall Douglas!)
  120. Version 1.9 (2010-03-31)
  121. --------------------------
  122. * uthash now supports Visual Studio 2008 and 2010 in C or C++ code!
  123. * new headers link:utarray.html[utarray.h] and link:utstring.html[utstring.h]
  124. are now included. These implement dynamic arrays and strings using macros
  125. * link:utlist.html[utlist.h] now has deletion-safe iterators and search macros
  126. * the test suite now runs under Visual Studio (thanks again degski!)
  127. * special thanks for suggesting utarray and utlist features to Charalampos P.!
  128. * uthash has been downloaded 9,616 times
  129. Version 1.8 (2009-09-08)
  130. --------------------------
  131. * Added the `hashscan` utility that can report on the size and quality of
  132. hash tables in a running process (Linux-only)
  133. * Added Bloom filter support. This has the potential to speed up certain
  134. types of programs that look up non-existant keys in sufficient numbers.
  135. * Restored the MurmurHash, which can once again be used, if an additional
  136. symbol is defined. This is a "safety" by which the user declares they
  137. understand that `-fno-strict-aliasing` flag must be used if they are
  138. using MurmurHash under gcc with optimization.
  139. * Unified the bucket/table malloc hooks; now there is only one malloc hook
  140. * Re-organized the manual into a main section and advanced topics section
  141. * Fixed a bug in `utlist.h` where sorting a singly-linked list threw a
  142. compile-time error.
  143. * Fixed a bug in `utlist.h` where a doubly-linked list that is sorted
  144. did not maintain the special `head->prev` pointer back to the list tail.
  145. Version 1.7 (2009-06-11)
  146. --------------------------
  147. * The MurmurHash has been removed, and Jenkin's hash is once again the default.
  148. While MurmurHash performed well, it's unsafe with regard to the strict
  149. aliasing rule. This results in incorrect code when compiled with optimization.
  150. It's not possible to enable `-fno-strict-aliasing` from within a header file.
  151. * The linked list macros in `utlist.h` now comply with the strict-aliasing
  152. rule so they generate correct code under high optimization levels (O2 or O3).
  153. The use of the `__typeof__` extension, which was originally a GNU extension,
  154. may reduce portability to other compilers that do not support this extension.
  155. This extension is used in the singly-linked list macros and the sort macros.
  156. Version 1.6 (2009-05-08)
  157. --------------------------
  158. Special thanks to Alfred Heisner for contributing several enhancements:
  159. * Support for two new hash functions:
  160. - the Paul Hsieh hash function (`HASH_SFH`)
  161. - Austin Appleby's MurmurHash function (`HASH_MUR`)
  162. * Because of its excellent performance, MurmurHash is now the default hash function.
  163. * `keystats` now has much better elapsed time accuracy under Cygwin and MinGW
  164. * fixed casting in `HASH_FNV`, `HASH_SAX` and `HASH_OAT` for non-char keys
  165. This release also includes:
  166. * a new `HASH_CLEAR` operation clears a hash table in one step.
  167. * a new `HASH_SELECT` operation inserts those elements from one hash that
  168. satisfy a given condition into another hash. The selected items have
  169. dual presence in both hash tables. For example a game could select the
  170. visible polygons from a hash of all polygons.
  171. * fixed a compile-time error which occurred if the final argument to
  172. `HASH_ADD_KEYPTR` was a pointer to an array member like `&a[i]`
  173. * added another test script `tests/all_funcs` which executes the test suite
  174. using every supported hash function
  175. And lastly,
  176. * a new, separate header called link:utlist.html[utlist.h] is included which
  177. provides 'linked list macros' for C structures, similar in style to the
  178. uthash macros
  179. Version 1.5 (2009-02-19)
  180. --------------------------
  181. * now thread-safe for concurrent readers
  182. * use scratch variables on stack rather than in table (thanks, Petter Arvidsson!).
  183. This change made HASH_FIND about 13% faster and enabled reader concurrency.
  184. * made link:license.html[BSD license] terms even more permissive
  185. * added link:userguide.pdf[PDF version] of User Guide
  186. * added http://troydhanson.wordpress.com/feed/[update news] image:rss.png[(RSS)]
  187. Version 1.4 (2008-09-23)
  188. --------------------------
  189. * Add `HASH_COUNT` for counting items in the hash
  190. * Compatibility with C\+\+. Satisfy additional casting requirements.
  191. Also in the `tests/` directory, running `make cplusplus` now compiles
  192. all the test programs with the C++ compiler.
  193. * Eliminate `elmt` pointer from the UT_hash_handle. Calculate elmt
  194. from hash handle address by subtracting `hho` (hash handle offset).
  195. * Contributed by L.S.Chin:
  196. Cast `void*` to char* before pointer arithmetic to suppress compiler
  197. warnings. We assume compilers abide to C standards which impose
  198. requirement that `sizeof(void*) == sizeof(char*)`.
  199. * Return meaningful exit status from do_tests per Tiago Cunha,
  200. so that package manager-based install can verify tests are successful
  201. Version 1.3 (2008-07-27)
  202. ------------------------
  203. * use integer-only math-- no floating point! Support FPU-less CPU's.
  204. * eliminate `hash_q` metric, which measured the fraction of items with
  205. non-ideal chain positions. We only need to know if this fraction
  206. is below 0.5. This is now determined using fast bitwise tests.
  207. * when an item is added to the hash, calculate the key's hash value
  208. upfront and store it, instead of recomputing it as needed. This hashv
  209. is stored in the hash handle. Potentially major speed benefit for
  210. bucket expansion algorithm. Deleting is marginally improved too.
  211. * fixed a minor bug in the calculation of the max ideal chain length;
  212. line 446 in v1.2 erroneously calculated a/b*2 instead of a/(b*2).
  213. The effect of this bug was that bucket expansion could occur more
  214. readily because the per-bucket 'max chain length multiplier factor'
  215. (which delays bucket expansion when certain buckets are overused)
  216. was set to a lower, expansion-favoring value than intended.
  217. * improved source commenting and improved variable names in structures
  218. * remove `HASH_JSW`. Lengthy random number array made code less readable
  219. * add `HASH_SRT(hh,hash,cmp)` as a generalized `HASH_SORT(hash,cmp)`.
  220. It was an omission in uthash 1.2 that there was no sort macro for
  221. hash handles with names other than hh.
  222. * Corrected `HASH_FSCK` so it works with any name for the hash handle.
  223. * behave properly in pathological `HASH_DEL(a,a)` case where the same
  224. variable references the head and the deletee (advancing the head
  225. then loses the correct reference to the deletee); fix by using
  226. scratch area in the hash table to store deletee hash handle.
  227. * made tests runnable on MinGW
  228. * 3000+ downloads since uthash-1.0
  229. Version 1.2 (2006-11-22)
  230. ------------------------
  231. * new `HASH_SORT` macro
  232. * Cygwin support
  233. * User Guide now features a clickable Table of Contents.
  234. (The technique for generating the TOC on the browser was contributed
  235. back to the AsciiDoc project and incorporated into AsciiDoc v8.1.0).
  236. Version 1.1 (2006-06-28)
  237. ------------------------
  238. * uthash-1.1 released
  239. * supports several built-in user-selectable hash functions
  240. * new keystats utility quantifies performance of hash functions
  241. Version 1.0 (2006-06-02)
  242. ------------------------
  243. * Initial release
  244. // vim: set syntax=asciidoc: