noderb 0.0.4 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (361) hide show
  1. data/ext/noderb_extension/libuv/AUTHORS +11 -1
  2. data/ext/noderb_extension/libuv/LICENSE +0 -8
  3. data/ext/noderb_extension/libuv/Makefile +5 -5
  4. data/ext/noderb_extension/libuv/README +11 -6
  5. data/ext/noderb_extension/libuv/common.gypi +158 -7
  6. data/ext/noderb_extension/libuv/config-unix.mk +34 -26
  7. data/ext/noderb_extension/libuv/gyp_uv +22 -4
  8. data/ext/noderb_extension/libuv/include/{eio.h → uv-private/eio.h} +2 -2
  9. data/ext/noderb_extension/libuv/include/{uv-unix.h → uv-private/uv-unix.h} +40 -0
  10. data/ext/noderb_extension/libuv/include/{uv-win.h → uv-private/uv-win.h} +96 -14
  11. data/ext/noderb_extension/libuv/include/uv.h +508 -83
  12. data/ext/noderb_extension/libuv/src/unix/cares.c +185 -0
  13. data/ext/noderb_extension/libuv/src/unix/core.c +828 -0
  14. data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_darwin.h +4 -0
  15. data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_linux.h +5 -15
  16. data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.c +23 -2
  17. data/ext/noderb_extension/libuv/src/unix/error.c +102 -0
  18. data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_linux.h +26 -15
  19. data/ext/noderb_extension/libuv/src/unix/fs.c +562 -0
  20. data/ext/noderb_extension/libuv/src/unix/internal.h +75 -0
  21. data/ext/noderb_extension/libuv/src/unix/pipe.c +282 -0
  22. data/ext/noderb_extension/libuv/src/unix/process.c +287 -0
  23. data/ext/noderb_extension/libuv/src/unix/stream.c +727 -0
  24. data/ext/noderb_extension/libuv/src/unix/tcp.c +226 -0
  25. data/ext/noderb_extension/libuv/src/unix/udp.c +524 -0
  26. data/ext/noderb_extension/libuv/src/{uv-eio.c → unix/uv-eio.c} +48 -27
  27. data/ext/noderb_extension/libuv/src/{uv-eio.h → unix/uv-eio.h} +1 -1
  28. data/ext/noderb_extension/libuv/src/uv-common.c +24 -14
  29. data/ext/noderb_extension/libuv/src/uv-common.h +12 -7
  30. data/ext/noderb_extension/libuv/src/win/async.c +14 -16
  31. data/ext/noderb_extension/libuv/src/win/cares.c +64 -79
  32. data/ext/noderb_extension/libuv/src/win/core.c +105 -53
  33. data/ext/noderb_extension/libuv/src/win/error.c +23 -13
  34. data/ext/noderb_extension/libuv/src/win/fs.c +807 -0
  35. data/ext/noderb_extension/libuv/src/win/getaddrinfo.c +61 -41
  36. data/ext/noderb_extension/libuv/src/win/handle.c +56 -30
  37. data/ext/noderb_extension/libuv/src/win/internal.h +134 -95
  38. data/ext/noderb_extension/libuv/src/win/loop-watcher.c +21 -18
  39. data/ext/noderb_extension/libuv/src/win/pipe.c +313 -158
  40. data/ext/noderb_extension/libuv/src/win/process.c +117 -131
  41. data/ext/noderb_extension/libuv/src/win/req.c +55 -31
  42. data/ext/noderb_extension/libuv/src/win/stdio.c +5 -5
  43. data/ext/noderb_extension/libuv/src/win/stream.c +19 -14
  44. data/ext/noderb_extension/libuv/src/win/tcp.c +278 -336
  45. data/ext/noderb_extension/libuv/src/win/threadpool.c +73 -0
  46. data/ext/noderb_extension/libuv/src/win/timer.c +44 -37
  47. data/ext/noderb_extension/libuv/src/win/udp.c +592 -0
  48. data/ext/noderb_extension/libuv/src/win/util.c +20 -6
  49. data/ext/noderb_extension/libuv/src/win/winapi.c +23 -6
  50. data/ext/noderb_extension/libuv/src/win/winapi.h +4206 -0
  51. data/ext/noderb_extension/libuv/src/win/winsock.c +270 -0
  52. data/ext/noderb_extension/libuv/src/win/winsock.h +134 -0
  53. data/ext/noderb_extension/libuv/test/benchmark-ares.c +10 -6
  54. data/ext/noderb_extension/libuv/test/benchmark-getaddrinfo.c +10 -7
  55. data/ext/noderb_extension/libuv/test/benchmark-list.h +21 -0
  56. data/ext/noderb_extension/libuv/test/benchmark-ping-pongs.c +11 -7
  57. data/ext/noderb_extension/libuv/test/benchmark-pound.c +147 -58
  58. data/ext/noderb_extension/libuv/test/benchmark-pump.c +29 -23
  59. data/ext/noderb_extension/libuv/test/benchmark-spawn.c +13 -10
  60. data/ext/noderb_extension/libuv/test/benchmark-udp-packet-storm.c +250 -0
  61. data/ext/noderb_extension/libuv/test/dns-server.c +11 -6
  62. data/ext/noderb_extension/libuv/test/echo-server.c +30 -22
  63. data/ext/noderb_extension/libuv/test/test-async.c +3 -3
  64. data/ext/noderb_extension/libuv/test/test-callback-stack.c +6 -6
  65. data/ext/noderb_extension/libuv/test/test-connection-fail.c +6 -5
  66. data/ext/noderb_extension/libuv/test/test-delayed-accept.c +13 -13
  67. data/ext/noderb_extension/libuv/test/test-fs.c +715 -0
  68. data/ext/noderb_extension/libuv/test/test-getaddrinfo.c +11 -8
  69. data/ext/noderb_extension/libuv/test/test-gethostbyname.c +8 -9
  70. data/ext/noderb_extension/libuv/test/test-getsockname.c +142 -16
  71. data/ext/noderb_extension/libuv/test/test-idle.c +4 -3
  72. data/ext/noderb_extension/libuv/test/test-list.h +29 -2
  73. data/ext/noderb_extension/libuv/test/test-loop-handles.c +9 -8
  74. data/ext/noderb_extension/libuv/test/test-ping-pong.c +9 -9
  75. data/ext/noderb_extension/libuv/test/test-pipe-bind-error.c +18 -14
  76. data/ext/noderb_extension/libuv/test/test-ref.c +17 -16
  77. data/ext/noderb_extension/libuv/test/test-shutdown-eof.c +5 -5
  78. data/ext/noderb_extension/libuv/test/test-spawn.c +17 -17
  79. data/ext/noderb_extension/libuv/test/test-tcp-bind-error.c +24 -18
  80. data/ext/noderb_extension/libuv/test/test-tcp-bind6-error.c +19 -14
  81. data/ext/noderb_extension/libuv/test/test-tcp-writealot.c +6 -5
  82. data/ext/noderb_extension/libuv/test/test-threadpool.c +59 -0
  83. data/ext/noderb_extension/libuv/test/test-timer-again.c +15 -12
  84. data/ext/noderb_extension/libuv/test/test-timer.c +8 -8
  85. data/ext/noderb_extension/libuv/test/test-udp-dgram-too-big.c +88 -0
  86. data/ext/noderb_extension/libuv/test/test-udp-ipv6.c +158 -0
  87. data/ext/noderb_extension/libuv/test/test-udp-send-and-recv.c +210 -0
  88. data/ext/noderb_extension/libuv/{all.gyp → uv.gyp} +75 -77
  89. data/ext/noderb_extension/libuv/vcbuild.bat +93 -0
  90. data/ext/noderb_extension/noderb.c +13 -0
  91. data/ext/noderb_extension/noderb_common.h +2 -1
  92. data/ext/noderb_extension/noderb_defer.c +54 -0
  93. data/ext/noderb_extension/noderb_defer.h +15 -0
  94. data/ext/noderb_extension/noderb_dns.c +1 -1
  95. data/ext/noderb_extension/noderb_fs.c +277 -0
  96. data/ext/noderb_extension/noderb_fs.h +27 -0
  97. data/ext/noderb_extension/noderb_process.c +5 -5
  98. data/ext/noderb_extension/noderb_tcp.c +10 -6
  99. data/ext/noderb_extension/noderb_timers.c +1 -1
  100. data/ext/noderb_extension/noderb_tools.c +42 -8
  101. data/ext/noderb_extension/noderb_tools.h +3 -1
  102. data/lib/noderb/defer.rb +25 -0
  103. data/lib/noderb/file.rb +119 -0
  104. data/lib/noderb/fs.rb +72 -0
  105. data/lib/noderb/version.rb +1 -1
  106. data/lib/noderb.rb +8 -0
  107. metadata +102 -266
  108. data/ext/noderb_extension/libuv/BSDmakefile +0 -2
  109. data/ext/noderb_extension/libuv/create-msvs-files.bat +0 -21
  110. data/ext/noderb_extension/libuv/deps/pthread-win32/ANNOUNCE +0 -482
  111. data/ext/noderb_extension/libuv/deps/pthread-win32/BUGS +0 -141
  112. data/ext/noderb_extension/libuv/deps/pthread-win32/Bmakefile +0 -268
  113. data/ext/noderb_extension/libuv/deps/pthread-win32/CONTRIBUTORS +0 -140
  114. data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING +0 -150
  115. data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING.LIB +0 -504
  116. data/ext/noderb_extension/libuv/deps/pthread-win32/ChangeLog +0 -5194
  117. data/ext/noderb_extension/libuv/deps/pthread-win32/FAQ +0 -451
  118. data/ext/noderb_extension/libuv/deps/pthread-win32/GNUmakefile +0 -593
  119. data/ext/noderb_extension/libuv/deps/pthread-win32/MAINTAINERS +0 -4
  120. data/ext/noderb_extension/libuv/deps/pthread-win32/Makefile +0 -516
  121. data/ext/noderb_extension/libuv/deps/pthread-win32/NEWS +0 -1245
  122. data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile +0 -24
  123. data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile.tests +0 -260
  124. data/ext/noderb_extension/libuv/deps/pthread-win32/PROGRESS +0 -4
  125. data/ext/noderb_extension/libuv/deps/pthread-win32/README +0 -601
  126. data/ext/noderb_extension/libuv/deps/pthread-win32/README.Borland +0 -57
  127. data/ext/noderb_extension/libuv/deps/pthread-win32/README.CV +0 -3036
  128. data/ext/noderb_extension/libuv/deps/pthread-win32/README.NONPORTABLE +0 -783
  129. data/ext/noderb_extension/libuv/deps/pthread-win32/README.Watcom +0 -62
  130. data/ext/noderb_extension/libuv/deps/pthread-win32/README.WinCE +0 -6
  131. data/ext/noderb_extension/libuv/deps/pthread-win32/TODO +0 -7
  132. data/ext/noderb_extension/libuv/deps/pthread-win32/WinCE-PORT +0 -222
  133. data/ext/noderb_extension/libuv/deps/pthread-win32/attr.c +0 -53
  134. data/ext/noderb_extension/libuv/deps/pthread-win32/autostatic.c +0 -69
  135. data/ext/noderb_extension/libuv/deps/pthread-win32/barrier.c +0 -47
  136. data/ext/noderb_extension/libuv/deps/pthread-win32/build/all.gyp +0 -207
  137. data/ext/noderb_extension/libuv/deps/pthread-win32/builddmc.bat +0 -9
  138. data/ext/noderb_extension/libuv/deps/pthread-win32/cancel.c +0 -44
  139. data/ext/noderb_extension/libuv/deps/pthread-win32/cleanup.c +0 -148
  140. data/ext/noderb_extension/libuv/deps/pthread-win32/condvar.c +0 -50
  141. data/ext/noderb_extension/libuv/deps/pthread-win32/config.h +0 -153
  142. data/ext/noderb_extension/libuv/deps/pthread-win32/context.h +0 -74
  143. data/ext/noderb_extension/libuv/deps/pthread-win32/create.c +0 -308
  144. data/ext/noderb_extension/libuv/deps/pthread-win32/dll.c +0 -92
  145. data/ext/noderb_extension/libuv/deps/pthread-win32/errno.c +0 -94
  146. data/ext/noderb_extension/libuv/deps/pthread-win32/exit.c +0 -44
  147. data/ext/noderb_extension/libuv/deps/pthread-win32/fork.c +0 -39
  148. data/ext/noderb_extension/libuv/deps/pthread-win32/global.c +0 -107
  149. data/ext/noderb_extension/libuv/deps/pthread-win32/implement.h +0 -944
  150. data/ext/noderb_extension/libuv/deps/pthread-win32/misc.c +0 -50
  151. data/ext/noderb_extension/libuv/deps/pthread-win32/mutex.c +0 -62
  152. data/ext/noderb_extension/libuv/deps/pthread-win32/need_errno.h +0 -145
  153. data/ext/noderb_extension/libuv/deps/pthread-win32/nonportable.c +0 -47
  154. data/ext/noderb_extension/libuv/deps/pthread-win32/private.c +0 -54
  155. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.c +0 -66
  156. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsp +0 -142
  157. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsw +0 -29
  158. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.h +0 -1368
  159. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_destroy.c +0 -79
  160. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getdetachstate.c +0 -86
  161. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getinheritsched.c +0 -51
  162. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedparam.c +0 -52
  163. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedpolicy.c +0 -61
  164. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getscope.c +0 -54
  165. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstackaddr.c +0 -97
  166. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstacksize.c +0 -100
  167. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_init.c +0 -117
  168. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setdetachstate.c +0 -91
  169. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setinheritsched.c +0 -57
  170. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedparam.c +0 -63
  171. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedpolicy.c +0 -55
  172. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setscope.c +0 -62
  173. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstackaddr.c +0 -97
  174. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstacksize.c +0 -110
  175. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_destroy.c +0 -103
  176. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_init.c +0 -69
  177. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_wait.c +0 -104
  178. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_destroy.c +0 -83
  179. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_getpshared.c +0 -95
  180. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_init.c +0 -85
  181. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_setpshared.c +0 -119
  182. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cancel.c +0 -189
  183. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_destroy.c +0 -253
  184. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_init.c +0 -167
  185. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_signal.c +0 -231
  186. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_wait.c +0 -567
  187. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_destroy.c +0 -86
  188. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_getpshared.c +0 -97
  189. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_init.c +0 -87
  190. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_setpshared.c +0 -117
  191. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_delay_np.c +0 -172
  192. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_detach.c +0 -136
  193. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_equal.c +0 -76
  194. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_exit.c +0 -106
  195. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getconcurrency.c +0 -45
  196. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getschedparam.c +0 -75
  197. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getspecific.c +0 -87
  198. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getunique_np.c +0 -47
  199. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getw32threadhandle_np.c +0 -65
  200. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_join.c +0 -157
  201. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_create.c +0 -108
  202. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_delete.c +0 -125
  203. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_kill.c +0 -105
  204. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_consistent.c +0 -187
  205. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_destroy.c +0 -148
  206. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_init.c +0 -130
  207. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_lock.c +0 -269
  208. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_timedlock.c +0 -324
  209. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_trylock.c +0 -154
  210. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_unlock.c +0 -175
  211. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_destroy.c +0 -83
  212. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getkind_np.c +0 -44
  213. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getpshared.c +0 -95
  214. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getrobust.c +0 -113
  215. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_gettype.c +0 -56
  216. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_init.c +0 -86
  217. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setkind_np.c +0 -44
  218. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setpshared.c +0 -119
  219. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setrobust.c +0 -119
  220. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_settype.c +0 -143
  221. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_num_processors_np.c +0 -56
  222. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_once.c +0 -79
  223. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_destroy.c +0 -143
  224. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_init.c +0 -109
  225. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_rdlock.c +0 -102
  226. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedrdlock.c +0 -109
  227. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedwrlock.c +0 -139
  228. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_tryrdlock.c +0 -102
  229. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_trywrlock.c +0 -122
  230. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_unlock.c +0 -93
  231. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_wrlock.c +0 -133
  232. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_destroy.c +0 -84
  233. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_getpshared.c +0 -97
  234. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_init.c +0 -83
  235. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_setpshared.c +0 -120
  236. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_self.c +0 -141
  237. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcancelstate.c +0 -125
  238. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcanceltype.c +0 -126
  239. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setconcurrency.c +0 -53
  240. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setschedparam.c +0 -123
  241. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setspecific.c +0 -167
  242. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_destroy.c +0 -111
  243. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_init.c +0 -123
  244. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_lock.c +0 -80
  245. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_trylock.c +0 -77
  246. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_unlock.c +0 -71
  247. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_testcancel.c +0 -103
  248. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_timechange_handler_np.c +0 -108
  249. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_win32_attach_detach_np.c +0 -258
  250. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_MCS_lock.c +0 -278
  251. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_callUserDestroyRoutines.c +0 -232
  252. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_calloc.c +0 -56
  253. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_cond_check_need_init.c +0 -78
  254. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_getprocessors.c +0 -91
  255. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_is_attr.c +0 -47
  256. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_mutex_check_need_init.c +0 -92
  257. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_new.c +0 -94
  258. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processInitialize.c +0 -92
  259. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processTerminate.c +0 -105
  260. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_relmillisecs.c +0 -132
  261. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_reuse.c +0 -151
  262. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_cancelwrwait.c +0 -50
  263. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_check_need_init.c +0 -77
  264. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_semwait.c +0 -135
  265. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_spinlock_check_need_init.c +0 -78
  266. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadDestroy.c +0 -79
  267. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadStart.c +0 -357
  268. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_throw.c +0 -189
  269. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_timespec.c +0 -83
  270. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocCreate.c +0 -118
  271. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocDestroy.c +0 -114
  272. data/ext/noderb_extension/libuv/deps/pthread-win32/rwlock.c +0 -51
  273. data/ext/noderb_extension/libuv/deps/pthread-win32/sched.c +0 -53
  274. data/ext/noderb_extension/libuv/deps/pthread-win32/sched.h +0 -183
  275. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_max.c +0 -134
  276. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_min.c +0 -135
  277. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_getscheduler.c +0 -71
  278. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_setscheduler.c +0 -83
  279. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_yield.c +0 -71
  280. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_close.c +0 -58
  281. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_destroy.c +0 -144
  282. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_getvalue.c +0 -110
  283. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_init.c +0 -169
  284. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_open.c +0 -58
  285. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post.c +0 -128
  286. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post_multiple.c +0 -142
  287. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_timedwait.c +0 -238
  288. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_trywait.c +0 -117
  289. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_unlink.c +0 -58
  290. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_wait.c +0 -187
  291. data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.c +0 -69
  292. data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.h +0 -169
  293. data/ext/noderb_extension/libuv/deps/pthread-win32/signal.c +0 -179
  294. data/ext/noderb_extension/libuv/deps/pthread-win32/spin.c +0 -46
  295. data/ext/noderb_extension/libuv/deps/pthread-win32/sync.c +0 -43
  296. data/ext/noderb_extension/libuv/deps/pthread-win32/tsd.c +0 -44
  297. data/ext/noderb_extension/libuv/deps/pthread-win32/version.rc +0 -388
  298. data/ext/noderb_extension/libuv/deps/pthread-win32/w32_CancelableWait.c +0 -161
  299. data/ext/noderb_extension/libuv/doc/iocp-links.html +0 -574
  300. data/ext/noderb_extension/libuv/src/uv-unix.c +0 -2421
  301. data/ext/noderb_extension/libuv/src/win/ntdll.h +0 -130
  302. /data/ext/noderb_extension/libuv/include/{ev.h → uv-private/ev.h} +0 -0
  303. /data/ext/noderb_extension/libuv/include/{ngx-queue.h → uv-private/ngx-queue.h} +0 -0
  304. /data/ext/noderb_extension/libuv/include/{tree.h → uv-private/tree.h} +0 -0
  305. /data/ext/noderb_extension/libuv/src/{uv-cygwin.c → unix/cygwin.c} +0 -0
  306. /data/ext/noderb_extension/libuv/src/{uv-darwin.c → unix/darwin.c} +0 -0
  307. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/Changes +0 -0
  308. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/LICENSE +0 -0
  309. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/Makefile.am +0 -0
  310. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/aclocal.m4 +0 -0
  311. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/autogen.sh +0 -0
  312. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config.h.in +0 -0
  313. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_cygwin.h +0 -0
  314. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_freebsd.h +0 -0
  315. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_sunos.h +0 -0
  316. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/configure.ac +0 -0
  317. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/demo.c +0 -0
  318. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/ecb.h +0 -0
  319. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.3 +0 -0
  320. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.pod +0 -0
  321. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/libeio.m4 +0 -0
  322. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/xthread.h +0 -0
  323. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Changes +0 -0
  324. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/LICENSE +0 -0
  325. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Makefile.am +0 -0
  326. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Makefile.in +0 -0
  327. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/README +0 -0
  328. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/aclocal.m4 +0 -0
  329. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/autogen.sh +0 -0
  330. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.guess +0 -0
  331. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.h.in +0 -0
  332. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.sub +0 -0
  333. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_cygwin.h +0 -0
  334. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_darwin.h +0 -0
  335. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_freebsd.h +0 -0
  336. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_sunos.h +0 -0
  337. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/configure +0 -0
  338. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/configure.ac +0 -0
  339. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/depcomp +0 -0
  340. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev++.h +0 -0
  341. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.3 +0 -0
  342. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.c +0 -0
  343. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.pod +0 -0
  344. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_epoll.c +0 -0
  345. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_kqueue.c +0 -0
  346. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_poll.c +0 -0
  347. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_port.c +0 -0
  348. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_select.c +0 -0
  349. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_vars.h +0 -0
  350. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_win32.c +0 -0
  351. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_wrap.h +0 -0
  352. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/event.c +0 -0
  353. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/event.h +0 -0
  354. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/install-sh +0 -0
  355. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/libev.m4 +0 -0
  356. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ltmain.sh +0 -0
  357. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/missing +0 -0
  358. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/mkinstalldirs +0 -0
  359. /data/ext/noderb_extension/libuv/src/{uv-freebsd.c → unix/freebsd.c} +0 -0
  360. /data/ext/noderb_extension/libuv/src/{uv-linux.c → unix/linux.c} +0 -0
  361. /data/ext/noderb_extension/libuv/src/{uv-sunos.c → unix/sunos.c} +0 -0
@@ -1,1245 +0,0 @@
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
-