noderb 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. data/LICENSE +19 -0
  2. data/README.md +25 -0
  3. data/ext/noderb_extension/extconf.rb +11 -0
  4. data/ext/noderb_extension/libuv/AUTHORS +11 -0
  5. data/ext/noderb_extension/libuv/LICENSE +48 -0
  6. data/ext/noderb_extension/libuv/Makefile +119 -0
  7. data/ext/noderb_extension/libuv/README +45 -0
  8. data/ext/noderb_extension/libuv/build/all.gyp +254 -0
  9. data/ext/noderb_extension/libuv/build/common.gypi +13 -0
  10. data/ext/noderb_extension/libuv/build/gyp_uv +43 -0
  11. data/ext/noderb_extension/libuv/config-mingw.mk +67 -0
  12. data/ext/noderb_extension/libuv/config-unix.mk +121 -0
  13. data/ext/noderb_extension/libuv/create-msvs-files.bat +14 -0
  14. data/ext/noderb_extension/libuv/deps/pthread-win32/ANNOUNCE +482 -0
  15. data/ext/noderb_extension/libuv/deps/pthread-win32/BUGS +141 -0
  16. data/ext/noderb_extension/libuv/deps/pthread-win32/Bmakefile +268 -0
  17. data/ext/noderb_extension/libuv/deps/pthread-win32/CONTRIBUTORS +140 -0
  18. data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING +150 -0
  19. data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING.LIB +504 -0
  20. data/ext/noderb_extension/libuv/deps/pthread-win32/ChangeLog +5194 -0
  21. data/ext/noderb_extension/libuv/deps/pthread-win32/FAQ +451 -0
  22. data/ext/noderb_extension/libuv/deps/pthread-win32/GNUmakefile +593 -0
  23. data/ext/noderb_extension/libuv/deps/pthread-win32/MAINTAINERS +4 -0
  24. data/ext/noderb_extension/libuv/deps/pthread-win32/Makefile +516 -0
  25. data/ext/noderb_extension/libuv/deps/pthread-win32/NEWS +1245 -0
  26. data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile +24 -0
  27. data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile.tests +260 -0
  28. data/ext/noderb_extension/libuv/deps/pthread-win32/PROGRESS +4 -0
  29. data/ext/noderb_extension/libuv/deps/pthread-win32/README +601 -0
  30. data/ext/noderb_extension/libuv/deps/pthread-win32/README.Borland +57 -0
  31. data/ext/noderb_extension/libuv/deps/pthread-win32/README.CV +3036 -0
  32. data/ext/noderb_extension/libuv/deps/pthread-win32/README.NONPORTABLE +783 -0
  33. data/ext/noderb_extension/libuv/deps/pthread-win32/README.Watcom +62 -0
  34. data/ext/noderb_extension/libuv/deps/pthread-win32/README.WinCE +6 -0
  35. data/ext/noderb_extension/libuv/deps/pthread-win32/TODO +7 -0
  36. data/ext/noderb_extension/libuv/deps/pthread-win32/WinCE-PORT +222 -0
  37. data/ext/noderb_extension/libuv/deps/pthread-win32/attr.c +53 -0
  38. data/ext/noderb_extension/libuv/deps/pthread-win32/autostatic.c +69 -0
  39. data/ext/noderb_extension/libuv/deps/pthread-win32/barrier.c +47 -0
  40. data/ext/noderb_extension/libuv/deps/pthread-win32/build/all.gyp +207 -0
  41. data/ext/noderb_extension/libuv/deps/pthread-win32/builddmc.bat +9 -0
  42. data/ext/noderb_extension/libuv/deps/pthread-win32/cancel.c +44 -0
  43. data/ext/noderb_extension/libuv/deps/pthread-win32/cleanup.c +148 -0
  44. data/ext/noderb_extension/libuv/deps/pthread-win32/condvar.c +50 -0
  45. data/ext/noderb_extension/libuv/deps/pthread-win32/config.h +153 -0
  46. data/ext/noderb_extension/libuv/deps/pthread-win32/context.h +74 -0
  47. data/ext/noderb_extension/libuv/deps/pthread-win32/create.c +308 -0
  48. data/ext/noderb_extension/libuv/deps/pthread-win32/dll.c +92 -0
  49. data/ext/noderb_extension/libuv/deps/pthread-win32/errno.c +94 -0
  50. data/ext/noderb_extension/libuv/deps/pthread-win32/exit.c +44 -0
  51. data/ext/noderb_extension/libuv/deps/pthread-win32/fork.c +39 -0
  52. data/ext/noderb_extension/libuv/deps/pthread-win32/global.c +107 -0
  53. data/ext/noderb_extension/libuv/deps/pthread-win32/implement.h +944 -0
  54. data/ext/noderb_extension/libuv/deps/pthread-win32/misc.c +50 -0
  55. data/ext/noderb_extension/libuv/deps/pthread-win32/mutex.c +62 -0
  56. data/ext/noderb_extension/libuv/deps/pthread-win32/need_errno.h +145 -0
  57. data/ext/noderb_extension/libuv/deps/pthread-win32/nonportable.c +47 -0
  58. data/ext/noderb_extension/libuv/deps/pthread-win32/private.c +54 -0
  59. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.c +66 -0
  60. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsp +142 -0
  61. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsw +29 -0
  62. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.h +1368 -0
  63. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_destroy.c +79 -0
  64. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getdetachstate.c +86 -0
  65. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getinheritsched.c +51 -0
  66. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedparam.c +52 -0
  67. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedpolicy.c +61 -0
  68. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getscope.c +54 -0
  69. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstackaddr.c +97 -0
  70. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstacksize.c +100 -0
  71. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_init.c +117 -0
  72. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setdetachstate.c +91 -0
  73. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setinheritsched.c +57 -0
  74. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedparam.c +63 -0
  75. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedpolicy.c +55 -0
  76. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setscope.c +62 -0
  77. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstackaddr.c +97 -0
  78. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstacksize.c +110 -0
  79. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_destroy.c +103 -0
  80. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_init.c +69 -0
  81. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_wait.c +104 -0
  82. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_destroy.c +83 -0
  83. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_getpshared.c +95 -0
  84. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_init.c +85 -0
  85. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_setpshared.c +119 -0
  86. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cancel.c +189 -0
  87. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_destroy.c +253 -0
  88. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_init.c +167 -0
  89. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_signal.c +231 -0
  90. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_wait.c +567 -0
  91. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_destroy.c +86 -0
  92. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_getpshared.c +97 -0
  93. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_init.c +87 -0
  94. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_setpshared.c +117 -0
  95. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_delay_np.c +172 -0
  96. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_detach.c +136 -0
  97. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_equal.c +76 -0
  98. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_exit.c +106 -0
  99. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getconcurrency.c +45 -0
  100. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getschedparam.c +75 -0
  101. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getspecific.c +87 -0
  102. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getunique_np.c +47 -0
  103. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getw32threadhandle_np.c +65 -0
  104. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_join.c +157 -0
  105. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_create.c +108 -0
  106. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_delete.c +125 -0
  107. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_kill.c +105 -0
  108. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_consistent.c +187 -0
  109. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_destroy.c +148 -0
  110. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_init.c +130 -0
  111. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_lock.c +269 -0
  112. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_timedlock.c +324 -0
  113. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_trylock.c +154 -0
  114. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_unlock.c +175 -0
  115. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_destroy.c +83 -0
  116. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getkind_np.c +44 -0
  117. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getpshared.c +95 -0
  118. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getrobust.c +113 -0
  119. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_gettype.c +56 -0
  120. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_init.c +86 -0
  121. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setkind_np.c +44 -0
  122. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setpshared.c +119 -0
  123. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setrobust.c +119 -0
  124. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_settype.c +143 -0
  125. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_num_processors_np.c +56 -0
  126. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_once.c +79 -0
  127. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_destroy.c +143 -0
  128. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_init.c +109 -0
  129. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_rdlock.c +102 -0
  130. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedrdlock.c +109 -0
  131. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedwrlock.c +139 -0
  132. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_tryrdlock.c +102 -0
  133. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_trywrlock.c +122 -0
  134. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_unlock.c +93 -0
  135. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_wrlock.c +133 -0
  136. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_destroy.c +84 -0
  137. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_getpshared.c +97 -0
  138. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_init.c +83 -0
  139. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_setpshared.c +120 -0
  140. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_self.c +141 -0
  141. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcancelstate.c +125 -0
  142. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcanceltype.c +126 -0
  143. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setconcurrency.c +53 -0
  144. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setschedparam.c +123 -0
  145. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setspecific.c +167 -0
  146. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_destroy.c +111 -0
  147. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_init.c +123 -0
  148. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_lock.c +80 -0
  149. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_trylock.c +77 -0
  150. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_unlock.c +71 -0
  151. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_testcancel.c +103 -0
  152. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_timechange_handler_np.c +108 -0
  153. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_win32_attach_detach_np.c +258 -0
  154. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_MCS_lock.c +278 -0
  155. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_callUserDestroyRoutines.c +232 -0
  156. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_calloc.c +56 -0
  157. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_cond_check_need_init.c +78 -0
  158. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_getprocessors.c +91 -0
  159. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_is_attr.c +47 -0
  160. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_mutex_check_need_init.c +92 -0
  161. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_new.c +94 -0
  162. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processInitialize.c +92 -0
  163. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processTerminate.c +105 -0
  164. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_relmillisecs.c +132 -0
  165. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_reuse.c +151 -0
  166. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_cancelwrwait.c +50 -0
  167. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_check_need_init.c +77 -0
  168. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_semwait.c +135 -0
  169. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_spinlock_check_need_init.c +78 -0
  170. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadDestroy.c +79 -0
  171. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadStart.c +357 -0
  172. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_throw.c +189 -0
  173. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_timespec.c +83 -0
  174. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocCreate.c +118 -0
  175. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocDestroy.c +114 -0
  176. data/ext/noderb_extension/libuv/deps/pthread-win32/rwlock.c +51 -0
  177. data/ext/noderb_extension/libuv/deps/pthread-win32/sched.c +53 -0
  178. data/ext/noderb_extension/libuv/deps/pthread-win32/sched.h +183 -0
  179. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_max.c +134 -0
  180. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_min.c +135 -0
  181. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_getscheduler.c +71 -0
  182. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_setscheduler.c +83 -0
  183. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_yield.c +71 -0
  184. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_close.c +58 -0
  185. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_destroy.c +144 -0
  186. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_getvalue.c +110 -0
  187. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_init.c +169 -0
  188. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_open.c +58 -0
  189. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post.c +128 -0
  190. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post_multiple.c +142 -0
  191. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_timedwait.c +238 -0
  192. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_trywait.c +117 -0
  193. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_unlink.c +58 -0
  194. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_wait.c +187 -0
  195. data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.c +69 -0
  196. data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.h +169 -0
  197. data/ext/noderb_extension/libuv/deps/pthread-win32/signal.c +179 -0
  198. data/ext/noderb_extension/libuv/deps/pthread-win32/spin.c +46 -0
  199. data/ext/noderb_extension/libuv/deps/pthread-win32/sync.c +43 -0
  200. data/ext/noderb_extension/libuv/deps/pthread-win32/tsd.c +44 -0
  201. data/ext/noderb_extension/libuv/deps/pthread-win32/version.rc +388 -0
  202. data/ext/noderb_extension/libuv/deps/pthread-win32/w32_CancelableWait.c +161 -0
  203. data/ext/noderb_extension/libuv/doc/desired-api.md +159 -0
  204. data/ext/noderb_extension/libuv/doc/iocp-links.html +574 -0
  205. data/ext/noderb_extension/libuv/include/ares.h +582 -0
  206. data/ext/noderb_extension/libuv/include/ares_version.h +24 -0
  207. data/ext/noderb_extension/libuv/include/eio.h +376 -0
  208. data/ext/noderb_extension/libuv/include/ev.h +835 -0
  209. data/ext/noderb_extension/libuv/include/ngx-queue.h +102 -0
  210. data/ext/noderb_extension/libuv/include/tree.h +762 -0
  211. data/ext/noderb_extension/libuv/include/uv-unix.h +138 -0
  212. data/ext/noderb_extension/libuv/include/uv-win.h +187 -0
  213. data/ext/noderb_extension/libuv/include/uv.h +635 -0
  214. data/ext/noderb_extension/libuv/src/ares/AUTHORS +37 -0
  215. data/ext/noderb_extension/libuv/src/ares/CHANGES +1198 -0
  216. data/ext/noderb_extension/libuv/src/ares/CMakeLists.txt +22 -0
  217. data/ext/noderb_extension/libuv/src/ares/NEWS +21 -0
  218. data/ext/noderb_extension/libuv/src/ares/README +60 -0
  219. data/ext/noderb_extension/libuv/src/ares/README.cares +13 -0
  220. data/ext/noderb_extension/libuv/src/ares/README.msvc +118 -0
  221. data/ext/noderb_extension/libuv/src/ares/README.node +21 -0
  222. data/ext/noderb_extension/libuv/src/ares/RELEASE-NOTES +25 -0
  223. data/ext/noderb_extension/libuv/src/ares/TODO +23 -0
  224. data/ext/noderb_extension/libuv/src/ares/ares__close_sockets.c +66 -0
  225. data/ext/noderb_extension/libuv/src/ares/ares__get_hostent.c +263 -0
  226. data/ext/noderb_extension/libuv/src/ares/ares__read_line.c +71 -0
  227. data/ext/noderb_extension/libuv/src/ares/ares__timeval.c +111 -0
  228. data/ext/noderb_extension/libuv/src/ares/ares_cancel.c +63 -0
  229. data/ext/noderb_extension/libuv/src/ares/ares_data.c +190 -0
  230. data/ext/noderb_extension/libuv/src/ares/ares_data.h +65 -0
  231. data/ext/noderb_extension/libuv/src/ares/ares_destroy.c +105 -0
  232. data/ext/noderb_extension/libuv/src/ares/ares_dns.h +90 -0
  233. data/ext/noderb_extension/libuv/src/ares/ares_expand_name.c +193 -0
  234. data/ext/noderb_extension/libuv/src/ares/ares_expand_string.c +75 -0
  235. data/ext/noderb_extension/libuv/src/ares/ares_fds.c +62 -0
  236. data/ext/noderb_extension/libuv/src/ares/ares_free_hostent.c +39 -0
  237. data/ext/noderb_extension/libuv/src/ares/ares_free_string.c +25 -0
  238. data/ext/noderb_extension/libuv/src/ares/ares_gethostbyaddr.c +292 -0
  239. data/ext/noderb_extension/libuv/src/ares/ares_gethostbyname.c +515 -0
  240. data/ext/noderb_extension/libuv/src/ares/ares_getnameinfo.c +426 -0
  241. data/ext/noderb_extension/libuv/src/ares/ares_getopt.c +122 -0
  242. data/ext/noderb_extension/libuv/src/ares/ares_getopt.h +53 -0
  243. data/ext/noderb_extension/libuv/src/ares/ares_getsock.c +72 -0
  244. data/ext/noderb_extension/libuv/src/ares/ares_init.c +1665 -0
  245. data/ext/noderb_extension/libuv/src/ares/ares_ipv6.h +78 -0
  246. data/ext/noderb_extension/libuv/src/ares/ares_library_init.c +132 -0
  247. data/ext/noderb_extension/libuv/src/ares/ares_library_init.h +39 -0
  248. data/ext/noderb_extension/libuv/src/ares/ares_llist.c +86 -0
  249. data/ext/noderb_extension/libuv/src/ares/ares_llist.h +42 -0
  250. data/ext/noderb_extension/libuv/src/ares/ares_mkquery.c +195 -0
  251. data/ext/noderb_extension/libuv/src/ares/ares_nowarn.c +59 -0
  252. data/ext/noderb_extension/libuv/src/ares/ares_nowarn.h +24 -0
  253. data/ext/noderb_extension/libuv/src/ares/ares_options.c +253 -0
  254. data/ext/noderb_extension/libuv/src/ares/ares_parse_a_reply.c +260 -0
  255. data/ext/noderb_extension/libuv/src/ares/ares_parse_aaaa_reply.c +256 -0
  256. data/ext/noderb_extension/libuv/src/ares/ares_parse_mx_reply.c +170 -0
  257. data/ext/noderb_extension/libuv/src/ares/ares_parse_ns_reply.c +182 -0
  258. data/ext/noderb_extension/libuv/src/ares/ares_parse_ptr_reply.c +208 -0
  259. data/ext/noderb_extension/libuv/src/ares/ares_parse_srv_reply.c +179 -0
  260. data/ext/noderb_extension/libuv/src/ares/ares_parse_txt_reply.c +201 -0
  261. data/ext/noderb_extension/libuv/src/ares/ares_private.h +351 -0
  262. data/ext/noderb_extension/libuv/src/ares/ares_process.c +1296 -0
  263. data/ext/noderb_extension/libuv/src/ares/ares_query.c +183 -0
  264. data/ext/noderb_extension/libuv/src/ares/ares_rules.h +144 -0
  265. data/ext/noderb_extension/libuv/src/ares/ares_search.c +322 -0
  266. data/ext/noderb_extension/libuv/src/ares/ares_send.c +134 -0
  267. data/ext/noderb_extension/libuv/src/ares/ares_setup.h +191 -0
  268. data/ext/noderb_extension/libuv/src/ares/ares_strcasecmp.c +66 -0
  269. data/ext/noderb_extension/libuv/src/ares/ares_strcasecmp.h +30 -0
  270. data/ext/noderb_extension/libuv/src/ares/ares_strdup.c +42 -0
  271. data/ext/noderb_extension/libuv/src/ares/ares_strdup.h +26 -0
  272. data/ext/noderb_extension/libuv/src/ares/ares_strerror.c +56 -0
  273. data/ext/noderb_extension/libuv/src/ares/ares_timeout.c +80 -0
  274. data/ext/noderb_extension/libuv/src/ares/ares_version.c +11 -0
  275. data/ext/noderb_extension/libuv/src/ares/ares_writev.c +79 -0
  276. data/ext/noderb_extension/libuv/src/ares/ares_writev.h +36 -0
  277. data/ext/noderb_extension/libuv/src/ares/bitncmp.c +59 -0
  278. data/ext/noderb_extension/libuv/src/ares/bitncmp.h +26 -0
  279. data/ext/noderb_extension/libuv/src/ares/config_cygwin/ares_config.h +510 -0
  280. data/ext/noderb_extension/libuv/src/ares/config_darwin/ares_config.h +510 -0
  281. data/ext/noderb_extension/libuv/src/ares/config_freebsd/ares_config.h +510 -0
  282. data/ext/noderb_extension/libuv/src/ares/config_linux/ares_config.h +510 -0
  283. data/ext/noderb_extension/libuv/src/ares/config_openbsd/ares_config.h +510 -0
  284. data/ext/noderb_extension/libuv/src/ares/config_sunos/ares_config.h +510 -0
  285. data/ext/noderb_extension/libuv/src/ares/config_win32/ares_config.h +369 -0
  286. data/ext/noderb_extension/libuv/src/ares/get_ver.awk +35 -0
  287. data/ext/noderb_extension/libuv/src/ares/inet_net_pton.c +450 -0
  288. data/ext/noderb_extension/libuv/src/ares/inet_net_pton.h +31 -0
  289. data/ext/noderb_extension/libuv/src/ares/inet_ntop.c +232 -0
  290. data/ext/noderb_extension/libuv/src/ares/inet_ntop.h +27 -0
  291. data/ext/noderb_extension/libuv/src/ares/nameser.h +193 -0
  292. data/ext/noderb_extension/libuv/src/ares/setup_once.h +488 -0
  293. data/ext/noderb_extension/libuv/src/ares/windows_port.c +22 -0
  294. data/ext/noderb_extension/libuv/src/eio/Changes +63 -0
  295. data/ext/noderb_extension/libuv/src/eio/LICENSE +36 -0
  296. data/ext/noderb_extension/libuv/src/eio/Makefile.am +15 -0
  297. data/ext/noderb_extension/libuv/src/eio/aclocal.m4 +8957 -0
  298. data/ext/noderb_extension/libuv/src/eio/autogen.sh +3 -0
  299. data/ext/noderb_extension/libuv/src/eio/config.h.in +86 -0
  300. data/ext/noderb_extension/libuv/src/eio/config_cygwin.h +77 -0
  301. data/ext/noderb_extension/libuv/src/eio/config_darwin.h +137 -0
  302. data/ext/noderb_extension/libuv/src/eio/config_freebsd.h +78 -0
  303. data/ext/noderb_extension/libuv/src/eio/config_linux.h +101 -0
  304. data/ext/noderb_extension/libuv/src/eio/config_sunos.h +81 -0
  305. data/ext/noderb_extension/libuv/src/eio/configure.ac +22 -0
  306. data/ext/noderb_extension/libuv/src/eio/demo.c +194 -0
  307. data/ext/noderb_extension/libuv/src/eio/ecb.h +370 -0
  308. data/ext/noderb_extension/libuv/src/eio/eio.3 +3428 -0
  309. data/ext/noderb_extension/libuv/src/eio/eio.c +2562 -0
  310. data/ext/noderb_extension/libuv/src/eio/eio.pod +969 -0
  311. data/ext/noderb_extension/libuv/src/eio/libeio.m4 +195 -0
  312. data/ext/noderb_extension/libuv/src/eio/xthread.h +164 -0
  313. data/ext/noderb_extension/libuv/src/ev/Changes +388 -0
  314. data/ext/noderb_extension/libuv/src/ev/LICENSE +36 -0
  315. data/ext/noderb_extension/libuv/src/ev/Makefile.am +18 -0
  316. data/ext/noderb_extension/libuv/src/ev/Makefile.in +771 -0
  317. data/ext/noderb_extension/libuv/src/ev/README +58 -0
  318. data/ext/noderb_extension/libuv/src/ev/aclocal.m4 +8957 -0
  319. data/ext/noderb_extension/libuv/src/ev/autogen.sh +6 -0
  320. data/ext/noderb_extension/libuv/src/ev/config.guess +1526 -0
  321. data/ext/noderb_extension/libuv/src/ev/config.h.in +125 -0
  322. data/ext/noderb_extension/libuv/src/ev/config.sub +1658 -0
  323. data/ext/noderb_extension/libuv/src/ev/config_cygwin.h +123 -0
  324. data/ext/noderb_extension/libuv/src/ev/config_darwin.h +122 -0
  325. data/ext/noderb_extension/libuv/src/ev/config_freebsd.h +120 -0
  326. data/ext/noderb_extension/libuv/src/ev/config_linux.h +130 -0
  327. data/ext/noderb_extension/libuv/src/ev/config_sunos.h +122 -0
  328. data/ext/noderb_extension/libuv/src/ev/configure +13037 -0
  329. data/ext/noderb_extension/libuv/src/ev/configure.ac +18 -0
  330. data/ext/noderb_extension/libuv/src/ev/depcomp +630 -0
  331. data/ext/noderb_extension/libuv/src/ev/ev++.h +816 -0
  332. data/ext/noderb_extension/libuv/src/ev/ev.3 +5311 -0
  333. data/ext/noderb_extension/libuv/src/ev/ev.c +3913 -0
  334. data/ext/noderb_extension/libuv/src/ev/ev.pod +5243 -0
  335. data/ext/noderb_extension/libuv/src/ev/ev_epoll.c +266 -0
  336. data/ext/noderb_extension/libuv/src/ev/ev_kqueue.c +198 -0
  337. data/ext/noderb_extension/libuv/src/ev/ev_poll.c +148 -0
  338. data/ext/noderb_extension/libuv/src/ev/ev_port.c +179 -0
  339. data/ext/noderb_extension/libuv/src/ev/ev_select.c +310 -0
  340. data/ext/noderb_extension/libuv/src/ev/ev_vars.h +203 -0
  341. data/ext/noderb_extension/libuv/src/ev/ev_win32.c +153 -0
  342. data/ext/noderb_extension/libuv/src/ev/ev_wrap.h +196 -0
  343. data/ext/noderb_extension/libuv/src/ev/event.c +402 -0
  344. data/ext/noderb_extension/libuv/src/ev/event.h +170 -0
  345. data/ext/noderb_extension/libuv/src/ev/install-sh +294 -0
  346. data/ext/noderb_extension/libuv/src/ev/libev.m4 +39 -0
  347. data/ext/noderb_extension/libuv/src/ev/ltmain.sh +8413 -0
  348. data/ext/noderb_extension/libuv/src/ev/missing +336 -0
  349. data/ext/noderb_extension/libuv/src/ev/mkinstalldirs +111 -0
  350. data/ext/noderb_extension/libuv/src/uv-common.c +172 -0
  351. data/ext/noderb_extension/libuv/src/uv-common.h +53 -0
  352. data/ext/noderb_extension/libuv/src/uv-cygwin.c +52 -0
  353. data/ext/noderb_extension/libuv/src/uv-darwin.c +64 -0
  354. data/ext/noderb_extension/libuv/src/uv-eio.c +113 -0
  355. data/ext/noderb_extension/libuv/src/uv-eio.h +13 -0
  356. data/ext/noderb_extension/libuv/src/uv-freebsd.c +65 -0
  357. data/ext/noderb_extension/libuv/src/uv-linux.c +51 -0
  358. data/ext/noderb_extension/libuv/src/uv-sunos.c +60 -0
  359. data/ext/noderb_extension/libuv/src/uv-unix.c +2408 -0
  360. data/ext/noderb_extension/libuv/src/win/async.c +129 -0
  361. data/ext/noderb_extension/libuv/src/win/cares.c +304 -0
  362. data/ext/noderb_extension/libuv/src/win/core.c +155 -0
  363. data/ext/noderb_extension/libuv/src/win/error.c +140 -0
  364. data/ext/noderb_extension/libuv/src/win/getaddrinfo.c +341 -0
  365. data/ext/noderb_extension/libuv/src/win/handle.c +176 -0
  366. data/ext/noderb_extension/libuv/src/win/internal.h +237 -0
  367. data/ext/noderb_extension/libuv/src/win/loop-watcher.c +128 -0
  368. data/ext/noderb_extension/libuv/src/win/pipe.c +828 -0
  369. data/ext/noderb_extension/libuv/src/win/process.c +936 -0
  370. data/ext/noderb_extension/libuv/src/win/req.c +141 -0
  371. data/ext/noderb_extension/libuv/src/win/stdio.c +75 -0
  372. data/ext/noderb_extension/libuv/src/win/stream.c +149 -0
  373. data/ext/noderb_extension/libuv/src/win/tcp.c +895 -0
  374. data/ext/noderb_extension/libuv/src/win/timer.c +269 -0
  375. data/ext/noderb_extension/libuv/src/win/util.c +82 -0
  376. data/ext/noderb_extension/libuv/test/benchmark-ares.c +117 -0
  377. data/ext/noderb_extension/libuv/test/benchmark-getaddrinfo.c +90 -0
  378. data/ext/noderb_extension/libuv/test/benchmark-list.h +77 -0
  379. data/ext/noderb_extension/libuv/test/benchmark-ping-pongs.c +210 -0
  380. data/ext/noderb_extension/libuv/test/benchmark-pound.c +237 -0
  381. data/ext/noderb_extension/libuv/test/benchmark-pump.c +459 -0
  382. data/ext/noderb_extension/libuv/test/benchmark-sizes.c +39 -0
  383. data/ext/noderb_extension/libuv/test/benchmark-spawn.c +154 -0
  384. data/ext/noderb_extension/libuv/test/dns-server.c +323 -0
  385. data/ext/noderb_extension/libuv/test/echo-server.c +299 -0
  386. data/ext/noderb_extension/libuv/test/run-benchmarks.c +64 -0
  387. data/ext/noderb_extension/libuv/test/run-tests.c +82 -0
  388. data/ext/noderb_extension/libuv/test/runner-unix.c +335 -0
  389. data/ext/noderb_extension/libuv/test/runner-unix.h +36 -0
  390. data/ext/noderb_extension/libuv/test/runner-win.c +343 -0
  391. data/ext/noderb_extension/libuv/test/runner-win.h +42 -0
  392. data/ext/noderb_extension/libuv/test/runner.c +311 -0
  393. data/ext/noderb_extension/libuv/test/runner.h +155 -0
  394. data/ext/noderb_extension/libuv/test/task.h +111 -0
  395. data/ext/noderb_extension/libuv/test/test-async.c +218 -0
  396. data/ext/noderb_extension/libuv/test/test-callback-stack.c +205 -0
  397. data/ext/noderb_extension/libuv/test/test-connection-fail.c +149 -0
  398. data/ext/noderb_extension/libuv/test/test-delayed-accept.c +198 -0
  399. data/ext/noderb_extension/libuv/test/test-fail-always.c +29 -0
  400. data/ext/noderb_extension/libuv/test/test-get-currentexe.c +53 -0
  401. data/ext/noderb_extension/libuv/test/test-getaddrinfo.c +110 -0
  402. data/ext/noderb_extension/libuv/test/test-gethostbyname.c +192 -0
  403. data/ext/noderb_extension/libuv/test/test-getsockname.c +196 -0
  404. data/ext/noderb_extension/libuv/test/test-hrtime.c +51 -0
  405. data/ext/noderb_extension/libuv/test/test-idle.c +83 -0
  406. data/ext/noderb_extension/libuv/test/test-list.h +165 -0
  407. data/ext/noderb_extension/libuv/test/test-loop-handles.c +361 -0
  408. data/ext/noderb_extension/libuv/test/test-pass-always.c +28 -0
  409. data/ext/noderb_extension/libuv/test/test-ping-pong.c +256 -0
  410. data/ext/noderb_extension/libuv/test/test-pipe-bind-error.c +148 -0
  411. data/ext/noderb_extension/libuv/test/test-ref.c +91 -0
  412. data/ext/noderb_extension/libuv/test/test-shutdown-eof.c +183 -0
  413. data/ext/noderb_extension/libuv/test/test-spawn.c +345 -0
  414. data/ext/noderb_extension/libuv/test/test-tcp-bind-error.c +204 -0
  415. data/ext/noderb_extension/libuv/test/test-tcp-bind6-error.c +164 -0
  416. data/ext/noderb_extension/libuv/test/test-tcp-writealot.c +198 -0
  417. data/ext/noderb_extension/libuv/test/test-timer-again.c +141 -0
  418. data/ext/noderb_extension/libuv/test/test-timer.c +134 -0
  419. data/ext/noderb_extension/noderb.c +340 -0
  420. data/ext/noderb_extension/noderb.h +2 -0
  421. data/lib/noderb/connection.rb +21 -0
  422. data/lib/noderb/process.rb +17 -0
  423. data/lib/noderb.rb +25 -0
  424. metadata +470 -0
@@ -0,0 +1,1245 @@
1
+ CURRENT CVS HEAD Version
2
+ RELEASE 2.9.0 pending
3
+ -------------
4
+ (2011-??-??)
5
+
6
+ General
7
+ -------
8
+ New bug fixes in this release since 2.8.0 have NOT been applied to the
9
+ 1.x.x series.
10
+
11
+ Version 2.8.0 may be the last release for some older Windows systems.
12
+ Some changes post 2011-02-26 in CVS may not be compatible with pre
13
+ Windows 2000 systems.
14
+
15
+ Version 1 no longer maintained
16
+ ------------------------------
17
+ The 1.x.x series is no longer maintained. However, if you really need a
18
+ version 1, the differences between 1.11.0 and 2.7.0 are very small, mainly
19
+ revolving around the pthread_once_t_ struct. Those differences applied
20
+ as a patch to the current 2.x.x should work. Don't forget to change
21
+ the version numbering in pthread.h before building. If you distribute
22
+ such a version 1.x.x please bear in mind that your numbers may clash
23
+ with those of others doing the same thing. Please consider also making
24
+ identifying changes in version.rc to differentiate your build.
25
+
26
+ Testing and verification
27
+ ------------------------
28
+ The current CVS head version has been tested on an SMP architecture
29
+ (AMD Phenom 9750 Quad Core) by running the MinGW32 (GCC) builds against
30
+ the full test suite, stress tests and benchmarks.
31
+
32
+ New Features
33
+ ------------
34
+ (MSC and GNU builds) The statically linked library now automatically
35
+ initialises and cleans up on program start/exit, i.e. statically linked
36
+ applications need not call the routines pthread_win32_process_attach_np()
37
+ and pthread_win32_process_detach_np() explicitly. The per-thread routine
38
+ pthread_win32_thread_detach_np() is also called at program exit to cleanup
39
+ POSIX resources acquired by the primary Windows native thread (if I (RJ)
40
+ understand the process correctly). Other Windows native threads that call
41
+ POSIX API routines may need to call the thread detach routine on thread
42
+ exit if the application depends on reclaimed POSIX resources or running
43
+ POSIX TSD (TLS) destructors.
44
+ See README.NONPORTABLE for descriptions of these routines.
45
+ - Ramiro Polla
46
+
47
+ Robust mutexes are implemented within the PROCESS_PRIVATE scope. NOTE that
48
+ pthread_mutex_* functions may return different error codes for robust
49
+ mutexes than they otherwise do in normal usage, e.g. pthread_mutex_unlock
50
+ is required to check ownership for all mutex types when the mutex is
51
+ robust, whereas this does not occur for the "normal" non-robust mutex type.
52
+ - Ross Johnson
53
+
54
+ pthread_getunique_np is implemented for source level compatibility
55
+ with some other implementations. This routine returns a 64 bit
56
+ sequence number that is uniquely associated with a thread. It can be
57
+ used by applications to order or hash POSIX thread handles.
58
+ - Ross Johnson
59
+
60
+ Bug fixes
61
+ ---------
62
+ Many more changes for 64 bit systems.
63
+ - Kai Tietz
64
+
65
+ Various modifications and fixes to build and test for WinCE.
66
+ - Marcel Ruff, Sinan Kaya
67
+
68
+ Fix pthread_cond_destroy() - should not be a cancellation point. Other
69
+ minor build problems fixed.
70
+ - Romano Paolo Tenca
71
+
72
+ Remove potential deadlock condition from pthread_cond_destroy().
73
+ - Eric Berge
74
+
75
+ Various modifications to build and test for Win64.
76
+ - Kip Streithorst
77
+
78
+ Various fixes to the QueueUserAPCEx async cancellation helper DLL
79
+ (this is a separate download) and pthreads code cleanups.
80
+ - Sebastian Gottschalk
81
+
82
+ Removed potential NULL pointer reference.
83
+ - Robert Kindred
84
+
85
+ Removed the requirement that applications restrict the number of threads
86
+ calling pthread_barrier_wait to just the barrier count. Also reduced the
87
+ contention between barrier_wait and barrier_destroy. This change will have
88
+ slowed barriers down slightly but halves the number of semaphores consumed
89
+ per barrier to one.
90
+ - Ross Johnson
91
+
92
+ Fixed a handle leak in sched_[gs]etscheduler.
93
+ - Mark Pizzolato
94
+
95
+ Removed all of the POSIX re-entrant function compatibility macros from pthread.h.
96
+ Some were simply not semanticly correct.
97
+ - Igor Lubashev
98
+
99
+ Threads no longer attempt to pass uncaught exceptions out of thread scope (C++
100
+ and SEH builds only). Uncaught exceptions now cause the thread to exit with
101
+ the return code PTHREAD_CANCELED.
102
+ - Ross Johnson
103
+
104
+ Lots of casting fixes particularly for x64, Interlocked fixes and reworking
105
+ for x64.
106
+ - Daniel Richard G., John Kamp
107
+
108
+ Other changes
109
+ -------------
110
+ Dependence on the winsock library is now discretionary via
111
+ #define RETAIN_WSALASTERROR in config.h. It is undefined by default unless
112
+ WINCE is defined (because RJ is unsure of the dependency there).
113
+ - Ramiro Polla
114
+
115
+ Several static POSIX mutexes used for internal management were replaced by
116
+ MCS queue-based locks to reduce resource consumption, in particular use of Win32
117
+ objects.
118
+ - Ross Johnson
119
+
120
+ For security, the QuserEx.dll if used must now be installed in the Windows System
121
+ folder.
122
+ - Ross Johnson
123
+
124
+ New tests
125
+ ---------
126
+ robust[1-5].c - Robust mutexes
127
+ sequence1.c - per-thread unique sequence numbers
128
+
129
+ Modified tests and benchtests
130
+ -----------------------------
131
+ All mutex*.c tests wherever appropriate have been modified to also test
132
+ robust mutexes under the same conditions.
133
+ Added robust mutex benchtests to benchtest*.c wherever appropriate.
134
+
135
+
136
+ RELEASE 2.8.0
137
+ -------------
138
+ (2006-12-22)
139
+
140
+ General
141
+ -------
142
+ New bug fixes in this release since 2.7.0 have not been applied to the
143
+ version 1.x.x series. It is probably time to drop version 1.
144
+
145
+ Testing and verification
146
+ ------------------------
147
+ This release has not yet been tested on SMP architechtures. All tests pass
148
+ on a uni-processor system.
149
+
150
+ Bug fixes
151
+ ---------
152
+ Sem_destroy could return EBUSY even though no threads were waiting on the
153
+ semaphore. Other races around invalidating semaphore structs (internally)
154
+ have been removed as well.
155
+
156
+ New tests
157
+ ---------
158
+ semaphore5.c - tests the bug fix referred to above.
159
+
160
+
161
+ RELEASE 2.7.0
162
+ -------------
163
+ (2005-06-04)
164
+
165
+ General
166
+ -------
167
+ All new features in this release have been back-ported in release 1.11.0,
168
+ including the incorporation of MCS locks in pthread_once, however, versions
169
+ 1 and 2 remain incompatible even though they are now identical in
170
+ performance and functionality.
171
+
172
+ Testing and verification
173
+ ------------------------
174
+ This release has been tested (passed the test suite) on both uni-processor
175
+ and multi-processor systems.
176
+ - Tim Theisen
177
+
178
+ Bug fixes
179
+ ---------
180
+ Pthread_once has been re-implemented to remove priority boosting and other
181
+ complexity to improve robustness. Races for Win32 handles that are not
182
+ recycle-unique have been removed. The general form of pthread_once is now
183
+ the same as that suggested earlier by Alexander Terekhov, but instead of the
184
+ 'named mutex', a queue-based lock has been implemented which has the required
185
+ properties of dynamic self initialisation and destruction. This lock is also
186
+ efficient. The ABI is unaffected in as much as the size of pthread_once_t has
187
+ not changed and PTHREAD_ONCE_INIT has not changed, however, applications that
188
+ peek inside pthread_once_t, which is supposed to be opaque, will break.
189
+ - Vladimir Kliatchko
190
+
191
+ New features
192
+ ------------
193
+ * Support for Mingw cross development tools added to GNUmakefile.
194
+ Mingw cross tools allow building the libraries on Linux.
195
+ - Mikael Magnusson
196
+
197
+
198
+ RELEASE 2.6.0
199
+ -------------
200
+ (2005-05-19)
201
+
202
+ General
203
+ -------
204
+ All of the bug fixes and new features in this release have been
205
+ back-ported in release 1.10.0.
206
+
207
+ Testing and verification
208
+ ------------------------
209
+ This release has been tested (passed the test suite) on both uni-processor
210
+ and multi-processor systems. Thanks to Tim Theisen at TomoTherapy for
211
+ exhaustively running the MP tests and for providing crutial observations
212
+ and data when faults are detected.
213
+
214
+ Bugs fixed
215
+ ----------
216
+
217
+ * pthread_detach() now reclaims remaining thread resources if called after
218
+ the target thread has terminated. Previously, this routine did nothing in
219
+ this case.
220
+
221
+ New tests
222
+ ---------
223
+
224
+ * detach1.c - tests that pthread_detach properly invalidates the target
225
+ thread, which indicates that the thread resources have been reclaimed.
226
+
227
+
228
+ RELEASE 2.5.0
229
+ -------------
230
+ (2005-05-09)
231
+
232
+ General
233
+ -------
234
+
235
+ The package now includes a reference documentation set consisting of
236
+ HTML formatted Unix-style manual pages that have been edited for
237
+ consistency with Pthreads-w32. The set can also be read online at:
238
+ http://sources.redhat.com/pthreads-win32/manual/index.html
239
+
240
+ Thanks again to Tim Theisen for running the test suite pre-release
241
+ on an MP system.
242
+
243
+ All of the bug fixes and new features in this release have been
244
+ back-ported in release 1.9.0.
245
+
246
+ Bugs fixed
247
+ ----------
248
+
249
+ * Thread Specific Data (TSD) key management has been ammended to
250
+ eliminate a source of (what was effectively) resource leakage (a HANDLE
251
+ plus memory for each key destruct routine/thread association). This was
252
+ not a true leak because these resources were eventually reclaimed when
253
+ pthread_key_delete was run AND each thread referencing the key had exited.
254
+ The problem was that these two conditions are often not met until very
255
+ late, and often not until the process is about to exit.
256
+
257
+ The ammended implementation avoids the need for the problematic HANDLE
258
+ and reclaims the memory as soon as either the key is deleted OR the
259
+ thread exits, whichever is first.
260
+
261
+ Thanks to Richard Hughes at Aculab for identifying and locating the leak.
262
+
263
+ * TSD key destructors are now processed up to PTHREAD_DESTRUCTOR_ITERATIONS
264
+ times instead of just once. PTHREAD_DESTRUCTOR_ITERATIONS has been
265
+ defined in pthread.h for some time but not used.
266
+
267
+ * Fix a semaphore accounting race between sem_post/sem_post_multiple
268
+ and sem_wait cancellation. This is the same issue as with
269
+ sem_timedwait that was fixed in the last release.
270
+
271
+ * sem_init, sem_post, and sem_post_multiple now check that the
272
+ semaphore count never exceeds _POSIX_SEM_VALUE_MAX.
273
+
274
+ * Although sigwait() is nothing more than a no-op, it should at least
275
+ be a cancellation point to be consistent with the standard.
276
+
277
+ New tests
278
+ ---------
279
+
280
+ * stress1.c - attempts to expose problems in condition variable
281
+ and semaphore timed wait logic. This test was inspired by Stephan
282
+ Mueller's sample test code used to identify the sem_timedwait bug
283
+ from the last release. It's not a part of the regular test suite
284
+ because it can take awhile to run. To run it:
285
+ nmake clean VC-stress
286
+
287
+ * tsd2.c - tests that key destructors are re-run if the tsd key value is
288
+ not NULL after the destructor routine has run. Also tests that
289
+ pthread_setspecific() and pthread_getspecific() are callable from
290
+ destructors.
291
+
292
+
293
+ RELEASE 2.4.0
294
+ -------------
295
+ (2005-04-26)
296
+
297
+ General
298
+ -------
299
+
300
+ There is now no plan to release a version 3.0.0 to fix problems in
301
+ pthread_once(). Other possible implementations of pthread_once
302
+ will still be investigated for a possible future release in an attempt
303
+ to reduce the current implementation's complexity.
304
+
305
+ All of the bug fixes and new features in this release have been
306
+ back-ported for release 1.8.0.
307
+
308
+ Bugs fixed
309
+ ----------
310
+
311
+ * Fixed pthread_once race (failures on an MP system). Thanks to
312
+ Tim Theisen for running exhaustive pre-release testing on his MP system
313
+ using a range of compilers:
314
+ VC++ 6
315
+ VC++ 7.1
316
+ Intel C++ version 8.0
317
+ All tests passed.
318
+ Some minor speed improvements were also done.
319
+
320
+ * Fix integer overrun error in pthread_mutex_timedlock() - missed when
321
+ sem_timedwait() was fixed in release 2.2.0. This routine no longer returns
322
+ ENOTSUP when NEED_SEM is defined - it is supported (NEED_SEM is only
323
+ required for WinCE versions prior to 3.0).
324
+
325
+ * Fix timeout bug in sem_timedwait().
326
+ - Thanks to Stephan Mueller for reporting, providing diagnostic output
327
+ and test code.
328
+
329
+ * Fix several problems in the NEED_SEM conditionally included code.
330
+ NEED_SEM included code is provided for systems that don't implement W32
331
+ semaphores, such as WinCE prior to version 3.0. An alternate implementation
332
+ of POSIX semaphores is built using W32 events for these systems when
333
+ NEED_SEM is defined. This code has been completely rewritten in this
334
+ release to reuse most of the default POSIX semaphore code, and particularly,
335
+ to implement all of the sem_* routines supported by pthreads-win32. Tim
336
+ Theisen also run the test suite over the NEED_SEM code on his MP system. All
337
+ tests passed.
338
+
339
+ * The library now builds without errors for the Borland Builder 5.5 compiler.
340
+
341
+ New features
342
+ ------------
343
+
344
+ * pthread_mutex_timedlock() and all sem_* routines provided by
345
+ pthreads-win32 are now implemented for WinCE versions prior to 3.0. Those
346
+ versions did not implement W32 semaphores. Define NEED_SEM in config.h when
347
+ building the library for these systems.
348
+
349
+ Known issues in this release
350
+ ----------------------------
351
+
352
+ * pthread_once is too complicated - but it works as far as testing can
353
+ determine..
354
+
355
+ * The Borland version of the dll fails some of the tests with a memory read
356
+ exception. The cause is not yet known but a compiler bug has not been ruled
357
+ out.
358
+
359
+
360
+ RELEASE 2.3.0
361
+ -------------
362
+ (2005-04-12)
363
+
364
+ General
365
+ -------
366
+
367
+ Release 1.7.0 is a backport of features and bug fixes new in
368
+ this release. See earlier notes under Release 2.0.0/General.
369
+
370
+ Bugs fixed
371
+ ----------
372
+
373
+ * Fixed pthread_once potential for post once_routine cancellation
374
+ hanging due to starvation. See comments in pthread_once.c.
375
+ Momentary priority boosting is used to ensure that, after a
376
+ once_routine is cancelled, the thread that will run the
377
+ once_routine is not starved by higher priority waiting threads at
378
+ critical times. Priority boosting occurs only AFTER a once_routine
379
+ cancellation, and is applied only to that once_control. The
380
+ once_routine is run at the thread's normal base priority.
381
+
382
+ New tests
383
+ ---------
384
+
385
+ * once4.c: Aggressively tests pthread_once() under realtime
386
+ conditions using threads with varying priorities. Windows'
387
+ random priority boosting does not occur for threads with realtime
388
+ priority levels.
389
+
390
+
391
+ RELEASE 2.2.0
392
+ -------------
393
+ (2005-04-04)
394
+
395
+ General
396
+ -------
397
+
398
+ * Added makefile targets to build static link versions of the library.
399
+ Both MinGW and MSVC. Please note that this does not imply any change
400
+ to the LGPL licensing, which still imposes psecific conditions on
401
+ distributing software that has been statically linked with this library.
402
+
403
+ * There is a known bug in pthread_once(). Cancellation of the init_routine
404
+ exposes a potential starvation (i.e. deadlock) problem if a waiting thread
405
+ has a higher priority than the initting thread. This problem will be fixed
406
+ in version 3.0.0 of the library.
407
+
408
+ Bugs fixed
409
+ ----------
410
+
411
+ * Fix integer overrun error in sem_timedwait().
412
+ Kevin Lussier
413
+
414
+ * Fix preprocessor directives for static linking.
415
+ Dimitar Panayotov
416
+
417
+
418
+ RELEASE 2.1.0
419
+ -------------
420
+ (2005-03-16)
421
+
422
+ Bugs fixed
423
+ ----------
424
+
425
+ * Reverse change to pthread_setcancelstate() in 2.0.0.
426
+
427
+
428
+ RELEASE 2.0.0
429
+ -------------
430
+ (2005-03-16)
431
+
432
+ General
433
+ -------
434
+
435
+ This release represents an ABI change and the DLL version naming has
436
+ incremented from 1 to 2, e.g. pthreadVC2.dll.
437
+
438
+ Version 1.4.0 back-ports the new functionality included in this
439
+ release. Please distribute DLLs built from that version with updates
440
+ to applications built on pthreads-win32 version 1.x.x.
441
+
442
+ The package naming has changed, replacing the snapshot date with
443
+ the version number + descriptive information. E.g. this
444
+ release is "pthreads-w32-2-0-0-release".
445
+
446
+ Bugs fixed
447
+ ----------
448
+
449
+ * pthread_setcancelstate() no longer checks for a pending
450
+ async cancel event if the library is using alertable async
451
+ cancel. See the README file (Prerequisites section) for info
452
+ on adding alertable async cancelation.
453
+
454
+ New features
455
+ ------------
456
+
457
+ * pthread_once() now supports init_routine cancellability.
458
+
459
+ New tests
460
+ ---------
461
+
462
+ * Agressively test pthread_once() init_routine cancellability.
463
+
464
+
465
+ SNAPSHOT 2005-03-08
466
+ -------------------
467
+ Version 1.3.0
468
+
469
+ Bug reports (fixed)
470
+ -------------------
471
+
472
+ * Implicitly created threads leave Win32 handles behind after exiting.
473
+ - Dmitrii Semii
474
+
475
+ * pthread_once() starvation problem.
476
+ - Gottlob Frege
477
+
478
+ New tests
479
+ ---------
480
+
481
+ * More intense testing of pthread_once().
482
+
483
+
484
+ SNAPSHOT 2005-01-25
485
+ -------------------
486
+ Version 1.2.0
487
+
488
+ Bug fixes
489
+ ---------
490
+
491
+ * Attempted acquisition of a recursive mutex could cause waiting threads
492
+ to not be woken when the mutex was released.
493
+ - Ralf Kubis <RKubis at mc.com>
494
+
495
+ * Various package omissions have been fixed.
496
+
497
+
498
+ SNAPSHOT 2005-01-03
499
+ -------------------
500
+ Version 1.1.0
501
+
502
+ Bug fixes
503
+ ---------
504
+
505
+ * Unlocking recursive or errorcheck mutexes would sometimes
506
+ unexpectedly return an EPERM error (bug introduced in
507
+ snapshot-2004-11-03).
508
+ - Konstantin Voronkov <beowinkle at yahoo.com>
509
+
510
+
511
+ SNAPSHOT 2004-11-22
512
+ -------------------
513
+ Version 1.0.0
514
+
515
+ This snapshot primarily fixes the condvar bug introduced in
516
+ snapshot-2004-11-03. DLL versioning has also been included to allow
517
+ applications to runtime check the Microsoft compatible DLL version
518
+ information, and to extend the DLL naming system for ABI and major
519
+ (non-backward compatible) API changes. See the README file for details.
520
+
521
+ Bug fixes
522
+ ---------
523
+
524
+ * Condition variables no longer deadlock (bug introduced in
525
+ snapshot-2004-11-03).
526
+ - Alexander Kotliarov and Nicolas at saintmac
527
+
528
+ * DLL naming extended to avoid 'DLL hell' in the future, and to
529
+ accommodate the ABI change introduced in snapshot-2004-11-03. Snapshot
530
+ 2004-11-03 will be removed from FTP sites.
531
+
532
+ New features
533
+ ------------
534
+
535
+ * A Microsoft-style version resource has been added to the DLL for
536
+ applications that wish to check DLL compatibility at runtime.
537
+
538
+ * Pthreads-win32 DLL naming has been extended to allow incompatible DLL
539
+ versions to co-exist in the same filesystem. See the README file for details,
540
+ but briefly: while the version information inside the DLL will change with
541
+ each release from now on, the DLL version names will only change if the new
542
+ DLL is not backward compatible with older applications.
543
+
544
+ The versioning scheme has been borrowed from GNU Libtool, and the DLL
545
+ naming scheme is from Cygwin. Provided the Libtool-style numbering rules are
546
+ honoured, the Cygwin DLL naming scheme automatcally ensures that DLL name
547
+ changes are minimal and that applications will not load an incompatible
548
+ pthreads-win32 DLL.
549
+
550
+ Those who use the pre-built DLLs will find that the DLL/LIB names have a new
551
+ suffix (1) in this snapshot. E.g. pthreadVC1.dll etc.
552
+
553
+ * The POSIX thread ID reuse uniqueness feature introduced in the last snapshot
554
+ has been kept as default, but the behaviour can now be controlled when the DLL
555
+ is built to effectively switch it off. This makes the library much more
556
+ sensitive to applications that assume that POSIX thread IDs are unique, i.e.
557
+ are not strictly compliant with POSIX. See the PTW32_THREAD_ID_REUSE_INCREMENT
558
+ macro comments in config.h for details.
559
+
560
+ Other changes
561
+ -------------
562
+ Certain POSIX macros have changed.
563
+
564
+ These changes are intended to conform to the Single Unix Specification version 3,
565
+ which states that, if set to 0 (zero) or not defined, then applications may use
566
+ sysconf() to determine their values at runtime. Pthreads-win32 does not
567
+ implement sysconf().
568
+
569
+ The following macros are no longer undefined, but defined and set to -1
570
+ (not implemented):
571
+
572
+ _POSIX_THREAD_ATTR_STACKADDR
573
+ _POSIX_THREAD_PRIO_INHERIT
574
+ _POSIX_THREAD_PRIO_PROTECT
575
+ _POSIX_THREAD_PROCESS_SHARED
576
+
577
+ The following macros are defined and set to 200112L (implemented):
578
+
579
+ _POSIX_THREADS
580
+ _POSIX_THREAD_SAFE_FUNCTIONS
581
+ _POSIX_THREAD_ATTR_STACKSIZE
582
+ _POSIX_THREAD_PRIORITY_SCHEDULING
583
+ _POSIX_SEMAPHORES
584
+ _POSIX_READER_WRITER_LOCKS
585
+ _POSIX_SPIN_LOCKS
586
+ _POSIX_BARRIERS
587
+
588
+ The following macros are defined and set to appropriate values:
589
+
590
+ _POSIX_THREAD_THREADS_MAX
591
+ _POSIX_SEM_VALUE_MAX
592
+ _POSIX_SEM_NSEMS_MAX
593
+ PTHREAD_DESTRUCTOR_ITERATIONS
594
+ PTHREAD_KEYS_MAX
595
+ PTHREAD_STACK_MIN
596
+ PTHREAD_THREADS_MAX
597
+
598
+
599
+ SNAPSHOT 2004-11-03
600
+ -------------------
601
+
602
+ DLLs produced from this snapshot cannot be used with older applications without
603
+ recompiling the application, due to a change to pthread_t to provide unique POSIX
604
+ thread IDs.
605
+
606
+ Although this snapshot passes the extended test suite, many of the changes are
607
+ fairly major, and some applications may show different behaviour than previously,
608
+ so adopt with care. Hopefully, any changed behaviour will be due to the library
609
+ being better at it's job, not worse.
610
+
611
+ Bug fixes
612
+ ---------
613
+
614
+ * pthread_create() no longer accepts NULL as the thread reference arg.
615
+ A segfault (memory access fault) will result, and no thread will be
616
+ created.
617
+
618
+ * pthread_barrier_wait() no longer acts as a cancelation point.
619
+
620
+ * Fix potential race condition in pthread_once()
621
+ - Tristan Savatier <tristan at mpegtv.com>
622
+
623
+ * Changes to pthread_cond_destroy() exposed some coding weaknesses in several
624
+ test suite mini-apps because pthread_cond_destroy() now returns EBUSY if the CV
625
+ is still in use.
626
+
627
+ New features
628
+ ------------
629
+
630
+ * Added for compatibility:
631
+ PTHREAD_RECURSIVE_MUTEX_INITIALIZER,
632
+ PTHREAD_ERRORCHECK_MUTEX_INITIALIZER,
633
+ PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
634
+ PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
635
+
636
+ * Initial support for Digital Mars compiler
637
+ - Anuj Goyal <anuj.goyal at gmail.com>
638
+
639
+ * Faster Mutexes. These have been been rewritten following a model provided by
640
+ Alexander Terekhov that reduces kernel space checks, and eliminates some additional
641
+ critical sections used to manage a race between timedlock expiration and unlock.
642
+ Please be aware that the new mutexes do not enforce strict absolute FIFO scheduling
643
+ of mutexes, however any out-of-order lock acquisition should be very rare.
644
+
645
+ * Faster semaphores. Following a similar model to mutexes above, these have been
646
+ rewritten to use preliminary users space checks.
647
+
648
+ * sem_getvalue() now returns the number of waiters.
649
+
650
+ * The POSIX thread ID now has much stronger uniqueness characteristics. The library
651
+ garrantees not to reuse the same thread ID for at least 2^(wordsize) thread
652
+ destruction/creation cycles.
653
+
654
+ New tests
655
+ ---------
656
+
657
+ * semaphore4.c: Tests cancelation of the new sem_wait().
658
+
659
+ * semaphore4t.c: Likewise for sem_timedwait().
660
+
661
+ * rwlock8.c: Tests and times the slow execution paths of r/w locks, and the CVs,
662
+ mutexes, and semaphores that they're built on.
663
+
664
+
665
+ SNAPSHOT 2004-05-16
666
+ -------------------
667
+
668
+ Attempt to add Watcom to the list of compilers that can build the library.
669
+ This failed in the end due to it's non-thread-aware errno. The library
670
+ builds but the test suite fails. See README.Watcom for more details.
671
+
672
+ Bug fixes
673
+ ---------
674
+ * Bug and memory leak in sem_init()
675
+ - Alex Blanco <Alex.Blanco at motorola.com>
676
+
677
+ * ptw32_getprocessors() now returns CPU count of 1 for WinCE.
678
+ - James Ewing <james.ewing at sveasoft.com>
679
+
680
+ * pthread_cond_wait() could be canceled at a point where it should not
681
+ be cancelable. Fixed.
682
+ - Alexander Terekhov <TEREKHOV at de.ibm.com>
683
+
684
+ * sem_timedwait() had an incorrect timeout calculation.
685
+ - Philippe Di Cristo <philipped at voicebox.com>
686
+
687
+ * Fix a memory leak left behind after threads are destroyed.
688
+ - P. van Bruggen <pietvb at newbridges.nl>
689
+
690
+ New features
691
+ ------------
692
+ * Ported to AMD64.
693
+ - Makoto Kato <raven at oldskool.jp>
694
+
695
+ * True pre-emptive asynchronous cancelation of threads. This is optional
696
+ and requires that Panagiotis E. Hadjidoukas's QueueUserAPCEx package be
697
+ installed. This package is included in the pthreads-win32 self-unpacking
698
+ Zip archive starting from this snapshot. See the README.txt file inside
699
+ the package for installation details.
700
+
701
+ Note: If you don't use async cancelation in your application, or don't need
702
+ to cancel threads that are blocked on system resources such as network I/O,
703
+ then the default non-preemptive async cancelation is probably good enough.
704
+ However, pthreads-win32 auto-detects the availability of these components
705
+ at run-time, so you don't need to rebuild the library from source if you
706
+ change your mind later.
707
+
708
+ All of the advice available in books and elsewhere on the undesirability
709
+ of using async cancelation in any application still stands, but this
710
+ feature is a welcome addition with respect to the library's conformance to
711
+ the POSIX standard.
712
+
713
+ SNAPSHOT 2003-09-18
714
+ -------------------
715
+
716
+ Cleanup of thread priority management. In particular, setting of thread
717
+ priority now attempts to map invalid Win32 values within the range returned
718
+ by sched_get_priority_min/max() to useful values. See README.NONPORTABLE
719
+ under "Thread priority".
720
+
721
+ Bug fixes
722
+ ---------
723
+ * pthread_getschedparam() now returns the priority given by the most recent
724
+ call to pthread_setschedparam() or established by pthread_create(), as
725
+ required by the standard. Previously, pthread_getschedparam() incorrectly
726
+ returned the running thread priority at the time of the call, which may have
727
+ been adjusted or temporarily promoted/demoted.
728
+
729
+ * sched_get_priority_min() and sched_get_priority_max() now return -1 on error
730
+ and set errno. Previously, they incorrectly returned the error value directly.
731
+
732
+
733
+ SNAPSHOT 2003-09-04
734
+ -------------------
735
+
736
+ Bug fixes
737
+ ---------
738
+ * ptw32_cancelableWait() now allows cancelation of waiting implicit POSIX
739
+ threads.
740
+
741
+ New test
742
+ --------
743
+ * cancel8.c tests cancelation of Win32 threads waiting at a POSIX cancelation
744
+ point.
745
+
746
+
747
+ SNAPSHOT 2003-09-03
748
+ -------------------
749
+
750
+ Bug fixes
751
+ ---------
752
+ * pthread_self() would free the newly created implicit POSIX thread handle if
753
+ DuplicateHandle failed instead of recycle it (very unlikely).
754
+
755
+ * pthread_exit() was neither freeing nor recycling the POSIX thread struct
756
+ for implicit POSIX threads.
757
+
758
+ New feature - Cancelation of/by Win32 (non-POSIX) threads
759
+ ---------------------------------------------------------
760
+ Since John Bossom's original implementation, the library has allowed non-POSIX
761
+ initialised threads (Win32 threads) to call pthreads-win32 routines and
762
+ therefore interact with POSIX threads. This is done by creating an on-the-fly
763
+ POSIX thread ID for the Win32 thread that, once created, allows fully
764
+ reciprical interaction. This did not extend to thread cancelation (async or
765
+ deferred). Now it does.
766
+
767
+ Any thread can be canceled by any other thread (Win32 or POSIX) if the former
768
+ thread's POSIX pthread_t value is known. It's TSD destructors and POSIX
769
+ cleanup handlers will be run before the thread exits with an exit code of
770
+ PTHREAD_CANCELED (retrieved with GetExitCodeThread()).
771
+
772
+ This allows a Win32 thread to, for example, call POSIX CV routines in the same way
773
+ that POSIX threads would/should, with pthread_cond_wait() cancelability and
774
+ cleanup handlers (pthread_cond_wait() is a POSIX cancelation point).
775
+
776
+ By adding cancelation, Win32 threads should now be able to call all POSIX
777
+ threads routines that make sense including semaphores, mutexes, condition
778
+ variables, read/write locks, barriers, spinlocks, tsd, cleanup push/pop,
779
+ cancelation, pthread_exit, scheduling, etc.
780
+
781
+ Note that these on-the-fly 'implicit' POSIX thread IDs are initialised as detached
782
+ (not joinable) with deferred cancelation type. The POSIX thread ID will be created
783
+ automatically by any POSIX routines that need a POSIX handle (unless the routine
784
+ needs a pthread_t as a parameter of course). A Win32 thread can discover it's own
785
+ POSIX thread ID by calling pthread_self(), which will create the handle if
786
+ necessary and return the pthread_t value.
787
+
788
+ New tests
789
+ ---------
790
+ Test the above new feature.
791
+
792
+
793
+ SNAPSHOT 2003-08-19
794
+ -------------------
795
+
796
+ This snapshot fixes some accidental corruption to new test case sources.
797
+ There are no changes to the library source code.
798
+
799
+
800
+ SNAPSHOT 2003-08-15
801
+ -------------------
802
+
803
+ Bug fixes
804
+ ---------
805
+
806
+ * pthread.dsp now uses correct compile flags (/MD).
807
+ - Viv <vcotirlea@hotmail.com>
808
+
809
+ * pthread_win32_process_detach_np() fixed memory leak.
810
+ - Steven Reddie <Steven.Reddie@ca.com>
811
+
812
+ * pthread_mutex_destroy() fixed incorrect return code.
813
+ - Nicolas Barry <boozai@yahoo.com>
814
+
815
+ * pthread_spin_destroy() fixed memory leak.
816
+ - Piet van Bruggen <pietvb@newbridges.nl>
817
+
818
+ * Various changes to tighten arg checking, and to work with later versions of
819
+ MinGW32 and MsysDTK.
820
+
821
+ * pthread_getschedparam() etc, fixed dangerous thread validity checking.
822
+ - Nicolas Barry <boozai@yahoo.com>
823
+
824
+ * POSIX thread handles are now reused and their memory is not freed on thread exit.
825
+ This allows for stronger thread validity checking.
826
+
827
+ New standard routine
828
+ --------------------
829
+
830
+ * pthread_kill() added to provide thread validity checking to applications.
831
+ It does not accept any non zero values for the signal arg.
832
+
833
+ New test cases
834
+ --------------
835
+
836
+ * New test cases to confirm validity checking, pthread_kill(), and thread reuse.
837
+
838
+
839
+ SNAPSHOT 2003-05-10
840
+ -------------------
841
+
842
+ Bug fixes
843
+ ---------
844
+
845
+ * pthread_mutex_trylock() now returns correct error values.
846
+ pthread_mutex_destroy() will no longer destroy a recursively locked mutex.
847
+ pthread_mutex_lock() is no longer inadvertantly behaving as a cancelation point.
848
+ - Thomas Pfaff <tpfaff@gmx.net>
849
+
850
+ * pthread_mutex_timedlock() no longer occasionally sets incorrect mutex
851
+ ownership, causing deadlocks in some applications.
852
+ - Robert Strycek <strycek@posam.sk> and Alexander Terekhov <TEREKHOV@de.ibm.com>
853
+
854
+
855
+ SNAPSHOT 2002-11-04
856
+ -------------------
857
+
858
+ Bug fixes
859
+ ---------
860
+
861
+ * sem_getvalue() now returns the correct value under Win NT and WinCE.
862
+ - Rob Fanner <rfanner@stonethree.com>
863
+
864
+ * sem_timedwait() now uses tighter checks for unreasonable
865
+ abstime values - that would result in unexpected timeout values.
866
+
867
+ * ptw32_cond_wait_cleanup() no longer mysteriously consumes
868
+ CV signals but may produce more spurious wakeups. It is believed
869
+ that the sem_timedwait() call is consuming a CV signal that it
870
+ shouldn't.
871
+ - Alexander Terekhov <TEREKHOV@de.ibm.com>
872
+
873
+ * Fixed a memory leak in ptw32_threadDestroy() for implicit threads.
874
+
875
+ * Fixed potential for deadlock in pthread_cond_destroy().
876
+ A deadlock could occur for statically declared CVs (PTHREAD_COND_INITIALIZER),
877
+ when one thread is attempting to destroy the condition variable while another
878
+ is attempting to dynamically initialize it.
879
+ - Michael Johnson <michaelj@maine.rr.com>
880
+
881
+
882
+ SNAPSHOT 2002-03-02
883
+ -------------------
884
+
885
+ Cleanup code default style. (IMPORTANT)
886
+ ----------------------------------------------------------------------
887
+ Previously, if not defined, the cleanup style was determined automatically
888
+ from the compiler/language, and one of the following was defined accordingly:
889
+
890
+ __CLEANUP_SEH MSVC only
891
+ __CLEANUP_CXX C++, including MSVC++, GNU G++
892
+ __CLEANUP_C C, including GNU GCC, not MSVC
893
+
894
+ These defines determine the style of cleanup (see pthread.h) and,
895
+ most importantly, the way that cancelation and thread exit (via
896
+ pthread_exit) is performed (see the routine ptw32_throw() in private.c).
897
+
898
+ In short, the exceptions versions of the library throw an exception
899
+ when a thread is canceled or exits (via pthread_exit()), which is
900
+ caught by a handler in the thread startup routine, so that the
901
+ the correct stack unwinding occurs regardless of where the thread
902
+ is when it's canceled or exits via pthread_exit().
903
+
904
+ In this and future snapshots, unless the build explicitly defines (e.g.
905
+ via a compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then
906
+ the build NOW always defaults to __CLEANUP_C style cleanup. This style
907
+ uses setjmp/longjmp in the cancelation and pthread_exit implementations,
908
+ and therefore won't do stack unwinding even when linked to applications
909
+ that have it (e.g. C++ apps). This is for consistency with most
910
+ current commercial Unix POSIX threads implementations. Compaq's TRU64
911
+ may be an exception (no pun intended) and possible future trend.
912
+
913
+ Although it was not clearly documented before, it is still necessary to
914
+ build your application using the same __CLEANUP_* define as was
915
+ used for the version of the library that you link with, so that the
916
+ correct parts of pthread.h are included. That is, the possible
917
+ defines require the following library versions:
918
+
919
+ __CLEANUP_SEH pthreadVSE.dll
920
+ __CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll
921
+ __CLEANUP_C pthreadVC.dll or pthreadGC.dll
922
+
923
+ E.g. regardless of whether your app is C or C++, if you link with
924
+ pthreadVC.lib or libpthreadGC.a, then you must define __CLEANUP_C.
925
+
926
+
927
+ THE POINT OF ALL THIS IS: if you have not been defining one of these
928
+ explicitly, then the defaults as described at the top of this
929
+ section were being used.
930
+
931
+ THIS NOW CHANGES, as has been explained above, but to try to make this
932
+ clearer here's an example:
933
+
934
+ If you were building your application with MSVC++ i.e. using C++
935
+ exceptions and not explicitly defining one of __CLEANUP_*, then
936
+ __CLEANUP_C++ was automatically defined for you in pthread.h.
937
+ You should have been linking with pthreadVCE.dll, which does
938
+ stack unwinding.
939
+
940
+ If you now build your application as you had before, pthread.h will now
941
+ automatically set __CLEANUP_C as the default style, and you will need to
942
+ link with pthreadVC.dll. Stack unwinding will now NOT occur when a thread
943
+ is canceled, or the thread calls pthread_exit().
944
+
945
+ Your application will now most likely behave differently to previous
946
+ versions, and in non-obvious ways. Most likely is that locally
947
+ instantiated objects may not be destroyed or cleaned up after a thread
948
+ is canceled.
949
+
950
+ If you want the same behaviour as before, then you must now define
951
+ __CLEANUP_C++ explicitly using a compiler option and link with
952
+ pthreadVCE.dll as you did before.
953
+
954
+
955
+ WHY ARE WE MAKING THE DEFAULT STYLE LESS EXCEPTION-FRIENDLY?
956
+ Because no commercial Unix POSIX threads implementation allows you to
957
+ choose to have stack unwinding. Therefore, providing it in pthread-win32
958
+ as a default is dangerous. We still provide the choice but unless
959
+ you consciously choose to do otherwise, your pthreads applications will
960
+ now run or crash in similar ways irrespective of the threads platform
961
+ you use. Or at least this is the hope.
962
+
963
+
964
+ WHY NOT REMOVE THE EXCEPTIONS VERSIONS OF THE LIBRARY ALTOGETHER?
965
+ There are a few reasons:
966
+ - because there are well respected POSIX threads people who believe
967
+ that POSIX threads implementations should be exceptions aware and
968
+ do the expected thing in that context. (There are equally respected
969
+ people who believe it should not be easily accessible, if it's there
970
+ at all, for unconditional conformity to other implementations.)
971
+ - because pthreads-win32 is one of the few implementations that has
972
+ the choice, perhaps the only freely available one, and so offers
973
+ a laboratory to people who may want to explore the effects;
974
+ - although the code will always be around somewhere for anyone who
975
+ wants it, once it's removed from the current version it will not be
976
+ nearly as visible to people who may have a use for it.
977
+
978
+
979
+ Source module splitting
980
+ -----------------------
981
+ In order to enable smaller image sizes to be generated
982
+ for applications that link statically with the library,
983
+ most routines have been separated out into individual
984
+ source code files.
985
+
986
+ This is being done in such a way as to be backward compatible.
987
+ The old source files are reused to congregate the individual
988
+ routine files into larger translation units (via a bunch of
989
+ # includes) so that the compiler can still optimise wherever
990
+ possible, e.g. through inlining, which can only be done
991
+ within the same translation unit.
992
+
993
+ It is also possible to build the entire library by compiling
994
+ the single file named "pthread.c", which just #includes all
995
+ the secondary congregation source files. The compiler
996
+ may be able to use this to do more inlining of routines.
997
+
998
+ Although the GNU compiler is able to produce libraries with
999
+ the necessary separation (the -ffunction-segments switch),
1000
+ AFAIK, the MSVC and other compilers don't have this feature.
1001
+
1002
+ Finally, since I use makefiles and command-line compilation,
1003
+ I don't know what havoc this reorganisation may wreak amongst
1004
+ IDE project file users. You should be able to continue
1005
+ using your existing project files without modification.
1006
+
1007
+
1008
+ New non-portable functions
1009
+ --------------------------
1010
+ pthread_num_processors_np():
1011
+ Returns the number of processors in the system that are
1012
+ available to the process, as determined from the processor
1013
+ affinity mask.
1014
+
1015
+ pthread_timechange_handler_np():
1016
+ To improve tolerance against operator or time service initiated
1017
+ system clock changes.
1018
+
1019
+ This routine can be called by an application when it
1020
+ receives a WM_TIMECHANGE message from the system. At present
1021
+ it broadcasts all condition variables so that waiting threads
1022
+ can wake up and re-evaluate their conditions and restart
1023
+ their timed waits if required.
1024
+ - Suggested by Alexander Terekhov
1025
+
1026
+
1027
+ Platform dependence
1028
+ -------------------
1029
+ As Win95 doesn't provide one, the library now contains
1030
+ it's own InterlockedCompareExchange() routine, which is used
1031
+ whenever Windows doesn't provide it. InterlockedCompareExchange()
1032
+ is used to implement spinlocks and barriers, and also in mutexes.
1033
+ This routine relies on the CMPXCHG machine instruction which
1034
+ is not available on i386 CPUs. This library (from snapshot
1035
+ 20010712 onwards) is therefore no longer supported on i386
1036
+ processor platforms.
1037
+
1038
+
1039
+ New standard routines
1040
+ ---------------------
1041
+ For source code portability only - rwlocks cannot be process shared yet.
1042
+
1043
+ pthread_rwlockattr_init()
1044
+ pthread_rwlockattr_destroy()
1045
+ pthread_rwlockattr_setpshared()
1046
+ pthread_rwlockattr_getpshared()
1047
+
1048
+ As defined in the new POSIX standard, and the Single Unix Spec version 3:
1049
+
1050
+ sem_timedwait()
1051
+ pthread_mutex_timedlock() - Alexander Terekhov and Thomas Pfaff
1052
+ pthread_rwlock_timedrdlock() - adapted from pthread_rwlock_rdlock()
1053
+ pthread_rwlock_timedwrlock() - adapted from pthread_rwlock_wrlock()
1054
+
1055
+
1056
+ pthread.h no longer includes windows.h
1057
+ --------------------------------------
1058
+ [Not yet for G++]
1059
+
1060
+ This was done to prevent conflicts.
1061
+
1062
+ HANDLE, DWORD, and NULL are temporarily defined within pthread.h if
1063
+ they are not already.
1064
+
1065
+
1066
+ pthread.h, sched.h and semaphore.h now use dllexport/dllimport
1067
+ --------------------------------------------------------------
1068
+ Not only to avoid the need for the pthread.def file, but to
1069
+ improve performance. Apparently, declaring functions with dllimport
1070
+ generates a direct call to the function and avoids the overhead
1071
+ of a stub function call.
1072
+
1073
+ Bug fixes
1074
+ ---------
1075
+ * Fixed potential NULL pointer dereferences in pthread_mutexattr_init,
1076
+ pthread_mutexattr_getpshared, pthread_barrierattr_init,
1077
+ pthread_barrierattr_getpshared, and pthread_condattr_getpshared.
1078
+ - Scott McCaskill <scott@magruder.org>
1079
+
1080
+ * Removed potential race condition in pthread_mutex_trylock and
1081
+ pthread_mutex_lock;
1082
+ - Alexander Terekhov <TEREKHOV@de.ibm.com>
1083
+
1084
+ * The behaviour of pthread_mutex_trylock in relation to
1085
+ recursive mutexes was inconsistent with commercial implementations.
1086
+ Trylock would return EBUSY if the lock was owned already by the
1087
+ calling thread regardless of mutex type. Trylock now increments the
1088
+ recursion count and returns 0 for RECURSIVE mutexes, and will
1089
+ return EDEADLK rather than EBUSY for ERRORCHECK mutexes. This is
1090
+ consistent with Solaris.
1091
+ - Thomas Pfaff <tpfaff@gmx.net>
1092
+
1093
+ * Found a fix for the library and workaround for applications for
1094
+ the known bug #2, i.e. where __CLEANUP_CXX or __CLEANUP_SEH is defined.
1095
+ See the "Known Bugs in this snapshot" section below.
1096
+
1097
+ This could be made transparent to applications by replacing the macros that
1098
+ define the current C++ and SEH versions of pthread_cleanup_push/pop
1099
+ with the C version, but AFAIK cleanup handlers would not then run in the
1100
+ correct sequence with destructors and exception cleanup handlers when
1101
+ an exception occurs.
1102
+
1103
+ * Cancelation once started in a thread cannot now be inadvertantly
1104
+ double canceled. That is, once a thread begins it's cancelation run,
1105
+ cancelation is disabled and a subsequent cancel request will
1106
+ return an error (ESRCH).
1107
+
1108
+ * errno: An incorrect compiler directive caused a local version
1109
+ of errno to be used instead of the Win32 errno. Both instances are
1110
+ thread-safe but applications checking errno after a pthreads-win32
1111
+ call would be wrong. Fixing this also fixed a bad compiler
1112
+ option in the testsuite (/MT should have been /MD) which is
1113
+ needed to link with the correct library MSVCRT.LIB.
1114
+
1115
+
1116
+ SNAPSHOT 2001-07-12
1117
+ -------------------
1118
+
1119
+ To be added
1120
+
1121
+
1122
+ SNAPSHOT 2001-07-03
1123
+ -------------------
1124
+
1125
+ To be added
1126
+
1127
+
1128
+ SNAPSHOT 2000-08-13
1129
+ -------------------
1130
+
1131
+ New:
1132
+ - Renamed DLL and LIB files:
1133
+ pthreadVSE.dll (MS VC++/Structured EH)
1134
+ pthreadVSE.lib
1135
+ pthreadVCE.dll (MS VC++/C++ EH)
1136
+ pthreadVCE.lib
1137
+ pthreadGCE.dll (GNU G++/C++ EH)
1138
+ libpthreadw32.a
1139
+
1140
+ Both your application and the pthread dll should use the
1141
+ same exception handling scheme.
1142
+
1143
+ Bugs fixed:
1144
+ - MSVC++ C++ exception handling.
1145
+
1146
+ Some new tests have been added.
1147
+
1148
+
1149
+ SNAPSHOT 2000-08-10
1150
+ -------------------
1151
+
1152
+ New:
1153
+ - asynchronous cancelation on X86 (Jason Nye)
1154
+ - Makefile compatible with MS nmake to replace
1155
+ buildlib.bat
1156
+ - GNUmakefile for Mingw32
1157
+ - tests/Makefile for MS nmake replaces runall.bat
1158
+ - tests/GNUmakefile for Mingw32
1159
+
1160
+ Bugs fixed:
1161
+ - kernel32 load/free problem
1162
+ - attempt to hide internel exceptions from application
1163
+ exception handlers (__try/__except and try/catch blocks)
1164
+ - Win32 thread handle leakage bug
1165
+ (David Baggett/Paul Redondo/Eyal Lebedinsky)
1166
+
1167
+ Some new tests have been added.
1168
+
1169
+
1170
+ SNAPSHOT 1999-11-02
1171
+ -------------------
1172
+
1173
+ Bugs fixed:
1174
+ - ctime_r macro had an incorrect argument (Erik Hensema),
1175
+ - threads were not being created
1176
+ PTHREAD_CANCEL_DEFERRED. This should have
1177
+ had little effect as deferred is the only
1178
+ supported type. (Ross Johnson).
1179
+
1180
+ Some compatibility improvements added, eg.
1181
+ - pthread_setcancelstate accepts NULL pointer
1182
+ for the previous value argument. Ditto for
1183
+ pthread_setcanceltype. This is compatible
1184
+ with Solaris but should not affect
1185
+ standard applications (Erik Hensema)
1186
+
1187
+ Some new tests have been added.
1188
+
1189
+
1190
+ SNAPSHOT 1999-10-17
1191
+ -------------------
1192
+
1193
+ Bug fix - Cancelation of threads waiting on condition variables
1194
+ now works properly (Lorin Hochstein and Peter Slacik)
1195
+
1196
+
1197
+ SNAPSHOT 1999-08-12
1198
+ -------------------
1199
+
1200
+ Fixed exception stack cleanup if calling pthread_exit()
1201
+ - (Lorin Hochstein and John Bossom).
1202
+
1203
+ Fixed bugs in condition variables - (Peter Slacik):
1204
+ - additional contention checks
1205
+ - properly adjust number of waiting threads after timed
1206
+ condvar timeout.
1207
+
1208
+
1209
+ SNAPSHOT 1999-05-30
1210
+ -------------------
1211
+
1212
+ Some minor bugs have been fixed. See the ChangeLog file for details.
1213
+
1214
+ Some more POSIX 1b functions are now included but ony return an
1215
+ error (ENOSYS) if called. They are:
1216
+
1217
+ sem_open
1218
+ sem_close
1219
+ sem_unlink
1220
+ sem_getvalue
1221
+
1222
+
1223
+ SNAPSHOT 1999-04-07
1224
+ -------------------
1225
+
1226
+ Some POSIX 1b functions which were internally supported are now
1227
+ available as exported functions:
1228
+
1229
+ sem_init
1230
+ sem_destroy
1231
+ sem_wait
1232
+ sem_trywait
1233
+ sem_post
1234
+ sched_yield
1235
+ sched_get_priority_min
1236
+ sched_get_priority_max
1237
+
1238
+ Some minor bugs have been fixed. See the ChangeLog file for details.
1239
+
1240
+
1241
+ SNAPSHOT 1999-03-16
1242
+ -------------------
1243
+
1244
+ Initial release.
1245
+