passenger 4.0.20 → 4.0.21

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (496) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.gitignore +1 -0
  5. data/.travis.yml +1 -1
  6. data/NEWS +15 -0
  7. data/README.md +5 -3
  8. data/Rakefile +1 -0
  9. data/bin/passenger-config +1 -5
  10. data/bin/passenger-install-apache2-module +53 -5
  11. data/bin/passenger-install-nginx-module +19 -6
  12. data/bin/passenger-memory-stats +3 -3
  13. data/build/agents.rb +11 -8
  14. data/build/apache2.rb +9 -5
  15. data/build/basics.rb +15 -21
  16. data/build/common_library.rb +16 -6
  17. data/build/cplusplus_support.rb +5 -5
  18. data/build/cxx_tests.rb +3 -3
  19. data/build/documentation.rb +1 -1
  20. data/build/misc.rb +4 -37
  21. data/build/node_tests.rb +29 -0
  22. data/build/oxt_tests.rb +1 -1
  23. data/build/packaging.rb +29 -10
  24. data/build/preprocessor.rb +2 -1
  25. data/build/test_basics.rb +15 -6
  26. data/debian.template/locations.ini.template +1 -0
  27. data/debian.template/passenger.install.template +1 -0
  28. data/dev/copy_boost_headers.rb +7 -3
  29. data/dev/run_travis.sh +32 -16
  30. data/doc/Users guide Apache.idmap.txt +22 -34
  31. data/doc/Users guide Apache.txt +20 -234
  32. data/doc/Users guide Nginx.idmap.txt +84 -66
  33. data/doc/Users guide Nginx.txt +50 -1
  34. data/doc/Users guide Standalone.idmap.txt +74 -0
  35. data/doc/Users guide Standalone.txt +22 -9
  36. data/doc/Users guide.txt +51 -0
  37. data/doc/users_guide_snippets/environment_variables.txt +0 -3
  38. data/doc/users_guide_snippets/installation.txt +337 -380
  39. data/doc/users_guide_snippets/installation/run_installer.txt +58 -0
  40. data/doc/users_guide_snippets/installation/verify_running_epilogue.txt +6 -0
  41. data/doc/users_guide_snippets/support_information.txt +2 -9
  42. data/doc/users_guide_snippets/troubleshooting/default.txt +112 -0
  43. data/doc/users_guide_snippets/troubleshooting/rails.txt +56 -0
  44. data/doc/users_guide_snippets/where_to_get_support.txt +9 -0
  45. data/ext/apache2/Bucket.h +1 -1
  46. data/ext/apache2/Configuration.hpp +0 -44
  47. data/ext/apache2/CreateDirConfig.cpp +1 -1
  48. data/ext/apache2/CreateDirConfig.cpp.erb +1 -1
  49. data/ext/apache2/Hooks.cpp +28 -21
  50. data/ext/apache2/MergeDirConfig.cpp +1 -0
  51. data/ext/apache2/MergeDirConfig.cpp.erb +1 -1
  52. data/ext/apache2/SetHeaders.cpp +73 -0
  53. data/ext/apache2/SetHeaders.cpp.erb +88 -0
  54. data/ext/boost/algorithm/string/detail/find_format.hpp +5 -5
  55. data/ext/boost/algorithm/string/detail/find_format_all.hpp +5 -5
  56. data/ext/boost/algorithm/string/detail/finder.hpp +1 -1
  57. data/ext/boost/algorithm/string/formatter.hpp +2 -2
  58. data/ext/boost/assert.hpp +6 -1
  59. data/ext/boost/atomic.hpp +18 -0
  60. data/ext/boost/atomic/atomic.hpp +241 -0
  61. data/ext/boost/atomic/detail/base.hpp +585 -0
  62. data/ext/boost/atomic/detail/cas32strong.hpp +885 -0
  63. data/ext/boost/atomic/detail/cas32weak.hpp +947 -0
  64. data/ext/boost/atomic/detail/cas64strong.hpp +443 -0
  65. data/ext/boost/atomic/detail/config.hpp +54 -0
  66. data/ext/boost/atomic/detail/gcc-alpha.hpp +368 -0
  67. data/ext/boost/atomic/detail/gcc-armv6plus.hpp +252 -0
  68. data/ext/boost/atomic/detail/gcc-cas.hpp +157 -0
  69. data/ext/boost/atomic/detail/gcc-ppc.hpp +2850 -0
  70. data/ext/boost/atomic/detail/gcc-sparcv9.hpp +1259 -0
  71. data/ext/boost/atomic/detail/gcc-x86.hpp +1766 -0
  72. data/ext/boost/atomic/detail/generic-cas.hpp +206 -0
  73. data/ext/boost/atomic/detail/interlocked.hpp +200 -0
  74. data/ext/boost/atomic/detail/linux-arm.hpp +189 -0
  75. data/ext/boost/atomic/detail/lockpool.hpp +97 -0
  76. data/ext/boost/atomic/detail/platform.hpp +62 -0
  77. data/ext/boost/atomic/detail/type-classification.hpp +45 -0
  78. data/ext/boost/chrono/config.hpp +8 -3
  79. data/ext/boost/chrono/duration.hpp +9 -10
  80. data/ext/boost/chrono/system_clocks.hpp +1 -1
  81. data/ext/boost/chrono/time_point.hpp +4 -3
  82. data/ext/boost/config/auto_link.hpp +53 -52
  83. data/ext/boost/config/compiler/borland.hpp +1 -0
  84. data/ext/boost/config/compiler/clang.hpp +24 -1
  85. data/ext/boost/config/compiler/codegear.hpp +1 -0
  86. data/ext/boost/config/compiler/common_edg.hpp +1 -0
  87. data/ext/boost/config/compiler/cray.hpp +1 -0
  88. data/ext/boost/config/compiler/digitalmars.hpp +1 -0
  89. data/ext/boost/config/compiler/gcc.hpp +29 -3
  90. data/ext/boost/config/compiler/gcc_xml.hpp +2 -1
  91. data/ext/boost/config/compiler/hp_acc.hpp +1 -0
  92. data/ext/boost/config/compiler/intel.hpp +1 -1
  93. data/ext/boost/config/compiler/metrowerks.hpp +1 -0
  94. data/ext/boost/config/compiler/mpw.hpp +1 -0
  95. data/ext/boost/config/compiler/pathscale.hpp +1 -0
  96. data/ext/boost/config/compiler/pgi.hpp +1 -0
  97. data/ext/boost/config/compiler/sunpro_cc.hpp +1 -0
  98. data/ext/boost/config/compiler/vacpp.hpp +3 -2
  99. data/ext/boost/config/compiler/visualc.hpp +25 -11
  100. data/ext/boost/config/platform/vxworks.hpp +353 -15
  101. data/ext/boost/config/select_compiler_config.hpp +4 -4
  102. data/ext/boost/config/stdlib/dinkumware.hpp +10 -3
  103. data/ext/boost/config/stdlib/libstdcpp3.hpp +2 -1
  104. data/ext/boost/config/suffix.hpp +45 -19
  105. data/ext/boost/date_time/format_date_parser.hpp +1 -11
  106. data/ext/boost/date_time/strings_from_facet.hpp +5 -3
  107. data/ext/boost/detail/atomic_redef_macros.hpp +19 -0
  108. data/ext/boost/detail/atomic_undef_macros.hpp +39 -0
  109. data/ext/boost/detail/endian.hpp +52 -4
  110. data/ext/boost/detail/scoped_enum_emulation.hpp +10 -10
  111. data/ext/boost/detail/select_type.hpp +36 -0
  112. data/ext/boost/exception/current_exception_cast.hpp +1 -1
  113. data/ext/boost/exception/detail/error_info_impl.hpp +3 -5
  114. data/ext/boost/exception/detail/exception_ptr.hpp +3 -3
  115. data/ext/boost/exception/detail/is_output_streamable.hpp +1 -1
  116. data/ext/boost/exception/detail/object_hex_dump.hpp +1 -1
  117. data/ext/boost/exception/detail/type_info.hpp +1 -1
  118. data/ext/boost/exception/diagnostic_information.hpp +15 -14
  119. data/ext/boost/exception/exception.hpp +1 -1
  120. data/ext/boost/exception/get_error_info.hpp +1 -1
  121. data/ext/boost/exception/info.hpp +12 -13
  122. data/ext/boost/exception/to_string.hpp +6 -1
  123. data/ext/boost/exception/to_string_stub.hpp +9 -1
  124. data/ext/boost/foreach.hpp +5 -5
  125. data/ext/boost/function/function_template.hpp +6 -6
  126. data/ext/boost/functional/hash/detail/float_functions.hpp +90 -0
  127. data/ext/boost/functional/hash/detail/hash_float.hpp +11 -2
  128. data/ext/boost/functional/hash/extensions.hpp +14 -2
  129. data/ext/boost/functional/hash/hash.hpp +26 -5
  130. data/ext/boost/get_pointer.hpp +17 -2
  131. data/ext/boost/integer_traits.hpp +1 -1
  132. data/ext/boost/lexical_cast.hpp +615 -395
  133. data/ext/boost/libs/atomic/lockpool.cpp +24 -0
  134. data/ext/boost/libs/system/src/error_code.cpp +25 -18
  135. data/ext/boost/libs/thread/src/future.cpp +7 -5
  136. data/ext/boost/libs/thread/src/pthread/once.cpp +9 -3
  137. data/ext/boost/libs/thread/src/pthread/once_atomic.cpp +90 -0
  138. data/ext/boost/libs/thread/src/pthread/thread.cpp +129 -95
  139. data/ext/boost/libs/thread/src/pthread/timeconv.inl +20 -1
  140. data/ext/boost/limits.hpp +1 -1
  141. data/ext/boost/math/policies/policy.hpp +10 -0
  142. data/ext/boost/math/special_functions/detail/round_fwd.hpp +17 -4
  143. data/ext/boost/math/special_functions/fpclassify.hpp +114 -45
  144. data/ext/boost/math/special_functions/math_fwd.hpp +195 -83
  145. data/ext/boost/math/special_functions/sign.hpp +13 -8
  146. data/ext/boost/math/tools/config.hpp +38 -16
  147. data/ext/boost/move/algorithm.hpp +275 -0
  148. data/ext/boost/move/core.hpp +332 -0
  149. data/ext/boost/move/detail/config_begin.hpp +23 -0
  150. data/ext/boost/move/detail/config_end.hpp +20 -0
  151. data/ext/boost/move/detail/meta_utils.hpp +158 -0
  152. data/ext/boost/move/iterator.hpp +298 -0
  153. data/ext/boost/move/move.hpp +10 -1256
  154. data/ext/boost/move/traits.hpp +142 -0
  155. data/ext/boost/move/utility.hpp +194 -0
  156. data/ext/boost/mpl/assert.hpp +72 -4
  157. data/ext/boost/noncopyable.hpp +15 -3
  158. data/ext/boost/pointer_to_other.hpp +55 -0
  159. data/ext/boost/range/concepts.hpp +4 -4
  160. data/ext/boost/range/detail/extract_optional_type.hpp +1 -1
  161. data/ext/boost/range/empty.hpp +1 -1
  162. data/ext/boost/range/iterator_range_core.hpp +4 -1
  163. data/ext/boost/range/iterator_range_io.hpp +2 -2
  164. data/ext/boost/ratio/config.hpp +6 -0
  165. data/ext/boost/ratio/detail/overflow_helpers.hpp +2 -2
  166. data/ext/boost/smart_ptr/allocate_shared_array.hpp +250 -0
  167. data/ext/boost/smart_ptr/detail/allocate_array_helper.hpp +169 -0
  168. data/ext/boost/smart_ptr/detail/array_deleter.hpp +124 -0
  169. data/ext/boost/smart_ptr/detail/array_traits.hpp +53 -0
  170. data/ext/boost/smart_ptr/detail/array_utility.hpp +178 -0
  171. data/ext/boost/smart_ptr/detail/make_array_helper.hpp +157 -0
  172. data/ext/boost/smart_ptr/detail/operator_bool.hpp +16 -9
  173. data/ext/boost/smart_ptr/detail/shared_count.hpp +78 -7
  174. data/ext/boost/smart_ptr/detail/sp_convertible.hpp +15 -0
  175. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +12 -6
  176. data/ext/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
  177. data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
  178. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
  179. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
  180. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
  181. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +1 -0
  182. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
  183. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
  184. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
  185. data/ext/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
  186. data/ext/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
  187. data/ext/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +162 -0
  188. data/ext/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
  189. data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
  190. data/ext/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
  191. data/ext/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
  192. data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +15 -0
  193. data/ext/boost/smart_ptr/detail/sp_forward.hpp +39 -0
  194. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +19 -3
  195. data/ext/boost/smart_ptr/detail/sp_if_array.hpp +31 -0
  196. data/ext/boost/smart_ptr/detail/sp_nullptr_t.hpp +45 -0
  197. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +5 -12
  198. data/ext/boost/smart_ptr/enable_shared_from_this.hpp +4 -4
  199. data/ext/boost/smart_ptr/make_shared.hpp +5 -1060
  200. data/ext/boost/smart_ptr/make_shared_array.hpp +247 -0
  201. data/ext/boost/smart_ptr/make_shared_object.hpp +1128 -0
  202. data/ext/boost/smart_ptr/scoped_array.hpp +32 -7
  203. data/ext/boost/smart_ptr/scoped_ptr.hpp +31 -5
  204. data/ext/boost/smart_ptr/shared_array.hpp +135 -20
  205. data/ext/boost/smart_ptr/shared_ptr.hpp +444 -126
  206. data/ext/boost/smart_ptr/weak_ptr.hpp +39 -28
  207. data/ext/boost/static_assert.hpp +74 -17
  208. data/ext/boost/system/error_code.hpp +76 -68
  209. data/ext/boost/system/system_error.hpp +5 -1
  210. data/ext/boost/thread/barrier.hpp +6 -2
  211. data/ext/boost/thread/completion_latch.hpp +233 -0
  212. data/ext/boost/thread/condition.hpp +6 -1
  213. data/ext/boost/thread/detail/async_func.hpp +571 -0
  214. data/ext/boost/thread/detail/config.hpp +248 -40
  215. data/ext/boost/thread/detail/counter.hpp +93 -0
  216. data/ext/boost/thread/detail/delete.hpp +12 -0
  217. data/ext/boost/thread/detail/invoke.hpp +1351 -0
  218. data/ext/boost/thread/detail/is_convertible.hpp +48 -0
  219. data/ext/boost/thread/detail/lockable_wrapper.hpp +45 -0
  220. data/ext/boost/thread/detail/log.hpp +83 -0
  221. data/ext/boost/thread/detail/make_tuple_indices.hpp +224 -0
  222. data/ext/boost/thread/detail/move.hpp +32 -16
  223. data/ext/boost/thread/detail/thread.hpp +236 -41
  224. data/ext/boost/thread/detail/thread_group.hpp +55 -9
  225. data/ext/boost/thread/detail/thread_interruption.hpp +4 -1
  226. data/ext/boost/thread/exceptions.hpp +2 -0
  227. data/ext/boost/thread/externally_locked.hpp +351 -0
  228. data/ext/boost/thread/externally_locked_stream.hpp +170 -0
  229. data/ext/boost/thread/future.hpp +2517 -455
  230. data/ext/boost/thread/future_error_code.hpp +61 -0
  231. data/ext/boost/thread/is_locked_by_this_thread.hpp +39 -0
  232. data/ext/boost/thread/latch.hpp +142 -0
  233. data/ext/boost/thread/lock_algorithms.hpp +468 -0
  234. data/ext/boost/thread/lock_concepts.hpp +197 -0
  235. data/ext/boost/thread/lock_factories.hpp +78 -0
  236. data/ext/boost/thread/lock_guard.hpp +88 -0
  237. data/ext/boost/thread/lock_options.hpp +31 -0
  238. data/ext/boost/thread/lock_traits.hpp +45 -0
  239. data/ext/boost/thread/lock_types.hpp +1226 -0
  240. data/ext/boost/thread/lockable_adapter.hpp +226 -0
  241. data/ext/boost/thread/lockable_concepts.hpp +157 -0
  242. data/ext/boost/thread/lockable_traits.hpp +207 -0
  243. data/ext/boost/thread/locks.hpp +5 -1816
  244. data/ext/boost/thread/mutex.hpp +33 -1
  245. data/ext/boost/thread/null_mutex.hpp +243 -0
  246. data/ext/boost/thread/once.hpp +10 -1
  247. data/ext/boost/thread/poly_lockable.hpp +68 -0
  248. data/ext/boost/thread/poly_lockable_adapter.hpp +89 -0
  249. data/ext/boost/thread/poly_shared_lockable.hpp +135 -0
  250. data/ext/boost/thread/poly_shared_lockable_adapter.hpp +170 -0
  251. data/ext/boost/thread/pthread/condition_variable.hpp +74 -26
  252. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +54 -27
  253. data/ext/boost/thread/pthread/mutex.hpp +101 -38
  254. data/ext/boost/thread/pthread/once.hpp +459 -44
  255. data/ext/boost/thread/pthread/once_atomic.hpp +313 -0
  256. data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -10
  257. data/ext/boost/thread/pthread/shared_mutex.hpp +226 -61
  258. data/ext/boost/thread/pthread/shared_mutex_assert.hpp +724 -0
  259. data/ext/boost/thread/pthread/thread_data.hpp +53 -50
  260. data/ext/boost/thread/pthread/timespec.hpp +96 -12
  261. data/ext/boost/thread/recursive_mutex.hpp +44 -1
  262. data/ext/boost/thread/reverse_lock.hpp +3 -2
  263. data/ext/boost/thread/scoped_thread.hpp +285 -0
  264. data/ext/boost/thread/shared_lock_guard.hpp +2 -1
  265. data/ext/boost/thread/shared_mutex.hpp +23 -0
  266. data/ext/boost/thread/strict_lock.hpp +235 -0
  267. data/ext/boost/thread/sync_bounded_queue.hpp +594 -0
  268. data/ext/boost/thread/sync_queue.hpp +516 -0
  269. data/ext/boost/thread/synchronized_value.hpp +1001 -0
  270. data/ext/boost/thread/testable_mutex.hpp +148 -0
  271. data/ext/boost/thread/thread.hpp +1 -13
  272. data/ext/boost/thread/thread_functors.hpp +57 -0
  273. data/ext/boost/thread/thread_guard.hpp +46 -0
  274. data/ext/boost/thread/thread_only.hpp +29 -0
  275. data/ext/boost/thread/v2/shared_mutex.hpp +1062 -0
  276. data/ext/boost/thread/v2/thread.hpp +37 -10
  277. data/ext/boost/thread/xtime.hpp +2 -1
  278. data/ext/boost/token_functions.hpp +16 -16
  279. data/ext/boost/type_traits/add_lvalue_reference.hpp +26 -0
  280. data/ext/boost/type_traits/add_reference.hpp +1 -1
  281. data/ext/boost/type_traits/add_rvalue_reference.hpp +4 -4
  282. data/ext/boost/type_traits/aligned_storage.hpp +13 -0
  283. data/ext/boost/type_traits/common_type.hpp +11 -12
  284. data/ext/boost/type_traits/config.hpp +1 -1
  285. data/ext/boost/type_traits/detail/common_type_imp.hpp +1 -1
  286. data/ext/boost/type_traits/detail/has_binary_operator.hpp +1 -1
  287. data/ext/boost/type_traits/detail/is_function_ptr_tester.hpp +1 -1
  288. data/ext/boost/type_traits/has_left_shift.hpp +49 -0
  289. data/ext/boost/type_traits/has_right_shift.hpp +49 -0
  290. data/ext/boost/type_traits/has_trivial_move_assign.hpp +57 -0
  291. data/ext/boost/type_traits/has_trivial_move_constructor.hpp +57 -0
  292. data/ext/boost/type_traits/intrinsics.hpp +18 -2
  293. data/ext/boost/type_traits/is_abstract.hpp +1 -1
  294. data/ext/boost/type_traits/is_array.hpp +1 -1
  295. data/ext/boost/type_traits/is_const.hpp +1 -1
  296. data/ext/boost/type_traits/is_convertible.hpp +78 -17
  297. data/ext/boost/type_traits/is_function.hpp +6 -1
  298. data/ext/boost/type_traits/is_integral.hpp +6 -1
  299. data/ext/boost/type_traits/is_nothrow_move_assignable.hpp +84 -0
  300. data/ext/boost/type_traits/is_nothrow_move_constructible.hpp +84 -0
  301. data/ext/boost/type_traits/is_pod.hpp +3 -1
  302. data/ext/boost/type_traits/is_rvalue_reference.hpp +1 -1
  303. data/ext/boost/type_traits/is_volatile.hpp +1 -1
  304. data/ext/boost/type_traits/make_signed.hpp +153 -0
  305. data/ext/boost/type_traits/make_unsigned.hpp +16 -0
  306. data/ext/boost/type_traits/remove_const.hpp +1 -1
  307. data/ext/boost/type_traits/remove_cv.hpp +1 -1
  308. data/ext/boost/type_traits/remove_reference.hpp +1 -1
  309. data/ext/boost/type_traits/remove_volatile.hpp +1 -1
  310. data/ext/boost/unordered/detail/allocate.hpp +1120 -0
  311. data/ext/boost/unordered/detail/buckets.hpp +876 -0
  312. data/ext/boost/unordered/detail/equivalent.hpp +680 -0
  313. data/ext/boost/unordered/detail/extract_key.hpp +183 -0
  314. data/ext/boost/unordered/detail/fwd.hpp +23 -0
  315. data/ext/boost/unordered/detail/table.hpp +861 -0
  316. data/ext/boost/unordered/detail/unique.hpp +622 -0
  317. data/ext/boost/unordered/detail/util.hpp +260 -0
  318. data/ext/boost/unordered/unordered_map.hpp +1652 -0
  319. data/ext/boost/unordered/unordered_map_fwd.hpp +65 -0
  320. data/ext/boost/unordered/unordered_set.hpp +1549 -0
  321. data/ext/boost/unordered/unordered_set_fwd.hpp +63 -0
  322. data/ext/boost/unordered_map.hpp +18 -0
  323. data/ext/boost/unordered_set.hpp +18 -0
  324. data/ext/boost/utility/addressof.hpp +2 -2
  325. data/ext/boost/utility/result_of.hpp +8 -1
  326. data/ext/boost/version.hpp +2 -2
  327. data/ext/common/Account.h +1 -1
  328. data/ext/common/AccountsDatabase.h +1 -1
  329. data/ext/common/AgentsStarter.cpp +3 -1
  330. data/ext/common/AgentsStarter.h +2 -2
  331. data/ext/common/ApplicationPool2/AppTypes.cpp +24 -6
  332. data/ext/common/ApplicationPool2/AppTypes.h +17 -8
  333. data/ext/common/ApplicationPool2/Common.h +12 -12
  334. data/ext/common/ApplicationPool2/DirectSpawner.h +2 -2
  335. data/ext/common/ApplicationPool2/DummySpawner.h +3 -3
  336. data/ext/common/ApplicationPool2/Group.h +6 -6
  337. data/ext/common/ApplicationPool2/Implementation.cpp +19 -19
  338. data/ext/common/ApplicationPool2/PipeWatcher.h +5 -5
  339. data/ext/common/ApplicationPool2/Pool.h +21 -21
  340. data/ext/common/ApplicationPool2/Process.h +6 -6
  341. data/ext/common/ApplicationPool2/Session.h +1 -1
  342. data/ext/common/ApplicationPool2/SmartSpawner.h +24 -12
  343. data/ext/common/ApplicationPool2/Socket.h +2 -2
  344. data/ext/common/ApplicationPool2/Spawner.h +64 -14
  345. data/ext/common/ApplicationPool2/SpawnerFactory.h +7 -7
  346. data/ext/common/ApplicationPool2/SuperGroup.h +5 -5
  347. data/ext/common/BackgroundEventLoop.cpp +4 -4
  348. data/ext/common/BackgroundEventLoop.h +1 -1
  349. data/ext/common/Constants.h +13 -1
  350. data/ext/common/EventedBufferedInput.h +8 -8
  351. data/ext/common/Exceptions.cpp +71 -0
  352. data/ext/common/Exceptions.h +60 -7
  353. data/ext/common/FileDescriptor.h +4 -4
  354. data/ext/common/MessageClient.h +1 -1
  355. data/ext/common/MessageServer.h +5 -5
  356. data/ext/common/MultiLibeio.cpp +3 -3
  357. data/ext/common/MultiLibeio.h +2 -2
  358. data/ext/common/RandomGenerator.h +11 -11
  359. data/ext/common/ResourceLocator.h +8 -1
  360. data/ext/common/SafeLibev.h +12 -12
  361. data/ext/common/ServerInstanceDir.h +11 -3
  362. data/ext/common/UnionStation.h +10 -10
  363. data/ext/common/Utils.cpp +11 -13
  364. data/ext/common/Utils.h +9 -9
  365. data/ext/common/Utils/BlockingQueue.h +10 -10
  366. data/ext/common/Utils/BufferedIO.h +1 -1
  367. data/ext/common/Utils/CachedFileStat.hpp +2 -2
  368. data/ext/common/Utils/FileChangeChecker.h +1 -1
  369. data/ext/common/Utils/HashMap.h +13 -4
  370. data/ext/common/Utils/IOUtils.cpp +33 -10
  371. data/ext/common/Utils/IniFile.h +3 -3
  372. data/ext/common/Utils/Lock.h +2 -2
  373. data/ext/common/Utils/MessagePassing.h +10 -10
  374. data/ext/common/Utils/ProcessMetricsCollector.h +24 -6
  375. data/ext/common/Utils/ScopeGuard.h +5 -5
  376. data/ext/common/Utils/jsoncpp.cpp +2 -0
  377. data/ext/common/agents/HelperAgent/FileBackedPipe.h +26 -26
  378. data/ext/common/agents/HelperAgent/Main.cpp +18 -18
  379. data/ext/common/agents/HelperAgent/RequestHandler.cpp +4 -4
  380. data/ext/common/agents/HelperAgent/RequestHandler.h +30 -21
  381. data/ext/common/agents/LoggingAgent/AdminController.h +1 -1
  382. data/ext/common/agents/LoggingAgent/FilterSupport.h +13 -11
  383. data/ext/common/agents/LoggingAgent/LoggingServer.h +11 -11
  384. data/ext/common/agents/LoggingAgent/Main.cpp +9 -9
  385. data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
  386. data/ext/common/agents/SpawnPreparer.cpp +1 -0
  387. data/ext/common/agents/Watchdog/AgentWatcher.cpp +8 -7
  388. data/ext/common/agents/Watchdog/Main.cpp +81 -73
  389. data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +1 -1
  390. data/ext/libev/Changes +57 -0
  391. data/ext/libev/LICENSE +2 -1
  392. data/ext/libev/Makefile.in +110 -50
  393. data/ext/libev/README +8 -8
  394. data/ext/libev/aclocal.m4 +1503 -861
  395. data/ext/libev/config.guess +290 -304
  396. data/ext/libev/config.sub +77 -198
  397. data/ext/libev/configure +1735 -890
  398. data/ext/libev/configure.ac +3 -2
  399. data/ext/libev/ev++.h +6 -6
  400. data/ext/libev/ev.c +541 -214
  401. data/ext/libev/ev.h +106 -100
  402. data/ext/libev/ev_epoll.c +1 -1
  403. data/ext/libev/ev_kqueue.c +20 -4
  404. data/ext/libev/ev_vars.h +15 -16
  405. data/ext/libev/ev_win32.c +12 -2
  406. data/ext/libev/ev_wrap.h +162 -160
  407. data/ext/libev/event.c +29 -6
  408. data/ext/libev/event.h +9 -2
  409. data/ext/libev/ltmain.sh +2632 -1384
  410. data/ext/nginx/ConfigurationCommands.c +1 -1
  411. data/ext/nginx/ConfigurationCommands.c.erb +3 -1
  412. data/ext/nginx/ContentHandler.c +25 -2
  413. data/ext/nginx/CreateLocationConfig.c +1 -0
  414. data/ext/nginx/CreateLocationConfig.c.erb +1 -1
  415. data/ext/nginx/MergeLocationConfig.c +1 -0
  416. data/ext/nginx/MergeLocationConfig.c.erb +1 -1
  417. data/ext/nginx/config +12 -0
  418. data/ext/oxt/dynamic_thread_group.hpp +7 -4
  419. data/ext/oxt/system_calls.cpp +5 -1
  420. data/ext/oxt/system_calls.hpp +3 -0
  421. data/helper-scripts/node-loader.js +117 -249
  422. data/lib/phusion_passenger.rb +27 -5
  423. data/lib/phusion_passenger/abstract_installer.rb +104 -9
  424. data/lib/phusion_passenger/admin_tools/memory_stats.rb +10 -9
  425. data/lib/phusion_passenger/apache2/config_options.rb +6 -3
  426. data/lib/phusion_passenger/common_library.rb +7 -1
  427. data/lib/phusion_passenger/constants.rb +6 -0
  428. data/lib/phusion_passenger/loader_shared_helpers.rb +7 -4
  429. data/lib/phusion_passenger/nginx/config_options.rb +2 -1
  430. data/lib/phusion_passenger/packaging.rb +3 -0
  431. data/lib/phusion_passenger/platform_info/apache.rb +43 -6
  432. data/lib/phusion_passenger/platform_info/apache_detector.rb +15 -5
  433. data/lib/phusion_passenger/platform_info/compiler.rb +167 -32
  434. data/lib/phusion_passenger/platform_info/cxx_portability.rb +133 -77
  435. data/lib/phusion_passenger/platform_info/depcheck.rb +17 -7
  436. data/lib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +3 -3
  437. data/lib/phusion_passenger/platform_info/depcheck_specs/compiler_toolchain.rb +4 -4
  438. data/lib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +5 -6
  439. data/lib/phusion_passenger/platform_info/linux.rb +2 -1
  440. data/lib/phusion_passenger/platform_info/operating_system.rb +1 -1
  441. data/lib/phusion_passenger/platform_info/ruby.rb +18 -3
  442. data/lib/phusion_passenger/standalone/runtime_installer.rb +6 -2
  443. data/lib/phusion_passenger/standalone/start_command.rb +8 -2
  444. data/lib/phusion_passenger/utils/ansi_colors.rb +9 -0
  445. data/lib/phusion_passenger/utils/hosts_file_parser.rb +4 -2
  446. data/node_lib/phusion_passenger/httplib_emulation.js +141 -0
  447. data/node_lib/phusion_passenger/line_reader.js +154 -0
  448. data/node_lib/phusion_passenger/request_handler.js +65 -0
  449. data/node_lib/phusion_passenger/session_protocol_parser.js +113 -0
  450. data/resources/templates/apache2/deployment_example.txt.erb +2 -1
  451. data/resources/templates/apache2/installing_against_a_different_apache.txt.erb +14 -0
  452. data/resources/templates/apache2/multiple_apache_installations_detected.txt.erb +15 -0
  453. data/resources/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
  454. data/resources/templates/general_error_with_html.html.template +1 -1
  455. data/resources/templates/installer_common/gem_install_permission_problems.txt.erb +17 -0
  456. data/resources/templates/installer_common/low_amount_of_memory_warning.txt.erb +6 -4
  457. data/resources/templates/installer_common/world_inaccessible_directories.txt.erb +16 -0
  458. data/resources/templates/nginx/deployment_example.txt.erb +2 -1
  459. data/resources/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
  460. data/resources/templates/standalone/config.erb +1 -0
  461. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -3
  462. data/test/cxx/ApplicationPool2/PoolTest.cpp +4 -4
  463. data/test/cxx/ApplicationPool2/ProcessTest.cpp +5 -5
  464. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +5 -5
  465. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +1 -1
  466. data/test/cxx/EventedBufferedInputTest.cpp +6 -6
  467. data/test/cxx/FileBackedPipeTest.cpp +1 -1
  468. data/test/cxx/MessagePassingTest.cpp +1 -1
  469. data/test/cxx/MessageServerTest.cpp +4 -4
  470. data/test/cxx/RequestHandlerTest.cpp +7 -7
  471. data/test/cxx/UnionStationTest.cpp +2 -2
  472. data/test/node/line_reader_spec.js +338 -0
  473. data/test/node/spec_helper.js +27 -0
  474. data/test/ruby/standalone/runtime_installer_spec.rb +2 -1
  475. metadata +131 -22
  476. metadata.gz.asc +7 -7
  477. data/ext/boost/functional/hash/detail/container_fwd_0x.hpp +0 -29
  478. data/ext/boost/lambda/core.hpp +0 -79
  479. data/ext/boost/lambda/detail/actions.hpp +0 -174
  480. data/ext/boost/lambda/detail/arity_code.hpp +0 -110
  481. data/ext/boost/lambda/detail/function_adaptors.hpp +0 -789
  482. data/ext/boost/lambda/detail/is_instance_of.hpp +0 -104
  483. data/ext/boost/lambda/detail/lambda_config.hpp +0 -48
  484. data/ext/boost/lambda/detail/lambda_functor_base.hpp +0 -615
  485. data/ext/boost/lambda/detail/lambda_functors.hpp +0 -324
  486. data/ext/boost/lambda/detail/lambda_fwd.hpp +0 -74
  487. data/ext/boost/lambda/detail/lambda_traits.hpp +0 -578
  488. data/ext/boost/lambda/detail/member_ptr.hpp +0 -737
  489. data/ext/boost/lambda/detail/operator_actions.hpp +0 -139
  490. data/ext/boost/lambda/detail/operator_lambda_func_base.hpp +0 -271
  491. data/ext/boost/lambda/detail/operator_return_type_traits.hpp +0 -917
  492. data/ext/boost/lambda/detail/operators.hpp +0 -370
  493. data/ext/boost/lambda/detail/ret.hpp +0 -325
  494. data/ext/boost/lambda/detail/return_type_traits.hpp +0 -282
  495. data/ext/boost/lambda/detail/select_functions.hpp +0 -74
  496. data/ext/boost/lambda/lambda.hpp +0 -34
@@ -14,7 +14,7 @@
14
14
 
15
15
  // IT = Integer type.
16
16
  // RT = Real type (built-in floating-point types, float, double, long double) & User Defined Types
17
- // AT = Integer or Real type
17
+ // AT = Integer or Real type
18
18
 
19
19
  #ifndef BOOST_MATH_SPECIAL_MATH_FWD_HPP
20
20
  #define BOOST_MATH_SPECIAL_MATH_FWD_HPP
@@ -38,111 +38,111 @@ namespace boost
38
38
 
39
39
  // Beta functions.
40
40
  template <class RT1, class RT2>
41
- typename tools::promote_args<RT1, RT2>::type
41
+ typename tools::promote_args<RT1, RT2>::type
42
42
  beta(RT1 a, RT2 b); // Beta function (2 arguments).
43
43
 
44
44
  template <class RT1, class RT2, class A>
45
- typename tools::promote_args<RT1, RT2, A>::type
45
+ typename tools::promote_args<RT1, RT2, A>::type
46
46
  beta(RT1 a, RT2 b, A x); // Beta function (3 arguments).
47
47
 
48
48
  template <class RT1, class RT2, class RT3, class Policy>
49
- typename tools::promote_args<RT1, RT2, RT3>::type
49
+ typename tools::promote_args<RT1, RT2, RT3>::type
50
50
  beta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Beta function (3 arguments).
51
51
 
52
52
  template <class RT1, class RT2, class RT3>
53
- typename tools::promote_args<RT1, RT2, RT3>::type
53
+ typename tools::promote_args<RT1, RT2, RT3>::type
54
54
  betac(RT1 a, RT2 b, RT3 x);
55
55
 
56
56
  template <class RT1, class RT2, class RT3, class Policy>
57
- typename tools::promote_args<RT1, RT2, RT3>::type
57
+ typename tools::promote_args<RT1, RT2, RT3>::type
58
58
  betac(RT1 a, RT2 b, RT3 x, const Policy& pol);
59
59
 
60
60
  template <class RT1, class RT2, class RT3>
61
- typename tools::promote_args<RT1, RT2, RT3>::type
61
+ typename tools::promote_args<RT1, RT2, RT3>::type
62
62
  ibeta(RT1 a, RT2 b, RT3 x); // Incomplete beta function.
63
63
 
64
64
  template <class RT1, class RT2, class RT3, class Policy>
65
- typename tools::promote_args<RT1, RT2, RT3>::type
65
+ typename tools::promote_args<RT1, RT2, RT3>::type
66
66
  ibeta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta function.
67
67
 
68
68
  template <class RT1, class RT2, class RT3>
69
- typename tools::promote_args<RT1, RT2, RT3>::type
69
+ typename tools::promote_args<RT1, RT2, RT3>::type
70
70
  ibetac(RT1 a, RT2 b, RT3 x); // Incomplete beta complement function.
71
71
 
72
72
  template <class RT1, class RT2, class RT3, class Policy>
73
- typename tools::promote_args<RT1, RT2, RT3>::type
73
+ typename tools::promote_args<RT1, RT2, RT3>::type
74
74
  ibetac(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta complement function.
75
75
 
76
76
  template <class T1, class T2, class T3, class T4>
77
- typename tools::promote_args<T1, T2, T3, T4>::type
77
+ typename tools::promote_args<T1, T2, T3, T4>::type
78
78
  ibeta_inv(T1 a, T2 b, T3 p, T4* py);
79
79
 
80
80
  template <class T1, class T2, class T3, class T4, class Policy>
81
- typename tools::promote_args<T1, T2, T3, T4>::type
81
+ typename tools::promote_args<T1, T2, T3, T4>::type
82
82
  ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy& pol);
83
83
 
84
84
  template <class RT1, class RT2, class RT3>
85
- typename tools::promote_args<RT1, RT2, RT3>::type
85
+ typename tools::promote_args<RT1, RT2, RT3>::type
86
86
  ibeta_inv(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
87
87
 
88
88
  template <class RT1, class RT2, class RT3, class Policy>
89
- typename tools::promote_args<RT1, RT2, RT3>::type
89
+ typename tools::promote_args<RT1, RT2, RT3>::type
90
90
  ibeta_inv(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
91
91
 
92
92
  template <class RT1, class RT2, class RT3>
93
- typename tools::promote_args<RT1, RT2, RT3>::type
93
+ typename tools::promote_args<RT1, RT2, RT3>::type
94
94
  ibeta_inva(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
95
95
 
96
96
  template <class RT1, class RT2, class RT3, class Policy>
97
- typename tools::promote_args<RT1, RT2, RT3>::type
97
+ typename tools::promote_args<RT1, RT2, RT3>::type
98
98
  ibeta_inva(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
99
99
 
100
100
  template <class RT1, class RT2, class RT3>
101
- typename tools::promote_args<RT1, RT2, RT3>::type
101
+ typename tools::promote_args<RT1, RT2, RT3>::type
102
102
  ibeta_invb(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
103
103
 
104
104
  template <class RT1, class RT2, class RT3, class Policy>
105
- typename tools::promote_args<RT1, RT2, RT3>::type
105
+ typename tools::promote_args<RT1, RT2, RT3>::type
106
106
  ibeta_invb(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
107
107
 
108
108
  template <class T1, class T2, class T3, class T4>
109
- typename tools::promote_args<T1, T2, T3, T4>::type
109
+ typename tools::promote_args<T1, T2, T3, T4>::type
110
110
  ibetac_inv(T1 a, T2 b, T3 q, T4* py);
111
111
 
112
112
  template <class T1, class T2, class T3, class T4, class Policy>
113
- typename tools::promote_args<T1, T2, T3, T4>::type
113
+ typename tools::promote_args<T1, T2, T3, T4>::type
114
114
  ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy& pol);
115
115
 
116
116
  template <class RT1, class RT2, class RT3>
117
- typename tools::promote_args<RT1, RT2, RT3>::type
117
+ typename tools::promote_args<RT1, RT2, RT3>::type
118
118
  ibetac_inv(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
119
119
 
120
120
  template <class RT1, class RT2, class RT3, class Policy>
121
- typename tools::promote_args<RT1, RT2, RT3>::type
121
+ typename tools::promote_args<RT1, RT2, RT3>::type
122
122
  ibetac_inv(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
123
123
 
124
124
  template <class RT1, class RT2, class RT3>
125
- typename tools::promote_args<RT1, RT2, RT3>::type
125
+ typename tools::promote_args<RT1, RT2, RT3>::type
126
126
  ibetac_inva(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
127
127
 
128
128
  template <class RT1, class RT2, class RT3, class Policy>
129
- typename tools::promote_args<RT1, RT2, RT3>::type
129
+ typename tools::promote_args<RT1, RT2, RT3>::type
130
130
  ibetac_inva(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
131
131
 
132
132
  template <class RT1, class RT2, class RT3>
133
- typename tools::promote_args<RT1, RT2, RT3>::type
133
+ typename tools::promote_args<RT1, RT2, RT3>::type
134
134
  ibetac_invb(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
135
135
 
136
136
  template <class RT1, class RT2, class RT3, class Policy>
137
- typename tools::promote_args<RT1, RT2, RT3>::type
137
+ typename tools::promote_args<RT1, RT2, RT3>::type
138
138
  ibetac_invb(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
139
139
 
140
140
  template <class RT1, class RT2, class RT3>
141
- typename tools::promote_args<RT1, RT2, RT3>::type
141
+ typename tools::promote_args<RT1, RT2, RT3>::type
142
142
  ibeta_derivative(RT1 a, RT2 b, RT3 x); // derivative of incomplete beta
143
143
 
144
144
  template <class RT1, class RT2, class RT3, class Policy>
145
- typename tools::promote_args<RT1, RT2, RT3>::type
145
+ typename tools::promote_args<RT1, RT2, RT3>::type
146
146
  ibeta_derivative(RT1 a, RT2 b, RT3 x, const Policy& pol); // derivative of incomplete beta
147
147
 
148
148
  // erf & erfc error functions.
@@ -168,51 +168,51 @@ namespace boost
168
168
 
169
169
  // Polynomials:
170
170
  template <class T1, class T2, class T3>
171
- typename tools::promote_args<T1, T2, T3>::type
171
+ typename tools::promote_args<T1, T2, T3>::type
172
172
  legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1);
173
173
 
174
174
  template <class T>
175
- typename tools::promote_args<T>::type
175
+ typename tools::promote_args<T>::type
176
176
  legendre_p(int l, T x);
177
177
 
178
178
  template <class T, class Policy>
179
- typename tools::promote_args<T>::type
179
+ typename tools::promote_args<T>::type
180
180
  legendre_p(int l, T x, const Policy& pol);
181
181
 
182
182
  template <class T>
183
- typename tools::promote_args<T>::type
183
+ typename tools::promote_args<T>::type
184
184
  legendre_q(unsigned l, T x);
185
185
 
186
186
  template <class T, class Policy>
187
- typename tools::promote_args<T>::type
187
+ typename tools::promote_args<T>::type
188
188
  legendre_q(unsigned l, T x, const Policy& pol);
189
189
 
190
190
  template <class T1, class T2, class T3>
191
- typename tools::promote_args<T1, T2, T3>::type
191
+ typename tools::promote_args<T1, T2, T3>::type
192
192
  legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1);
193
193
 
194
194
  template <class T>
195
- typename tools::promote_args<T>::type
195
+ typename tools::promote_args<T>::type
196
196
  legendre_p(int l, int m, T x);
197
197
 
198
198
  template <class T, class Policy>
199
- typename tools::promote_args<T>::type
199
+ typename tools::promote_args<T>::type
200
200
  legendre_p(int l, int m, T x, const Policy& pol);
201
201
 
202
202
  template <class T1, class T2, class T3>
203
- typename tools::promote_args<T1, T2, T3>::type
203
+ typename tools::promote_args<T1, T2, T3>::type
204
204
  laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1);
205
205
 
206
206
  template <class T1, class T2, class T3>
207
- typename tools::promote_args<T1, T2, T3>::type
207
+ typename tools::promote_args<T1, T2, T3>::type
208
208
  laguerre_next(unsigned n, unsigned l, T1 x, T2 Pl, T3 Plm1);
209
209
 
210
210
  template <class T>
211
- typename tools::promote_args<T>::type
211
+ typename tools::promote_args<T>::type
212
212
  laguerre(unsigned n, T x);
213
213
 
214
214
  template <class T, class Policy>
215
- typename tools::promote_args<T>::type
215
+ typename tools::promote_args<T>::type
216
216
  laguerre(unsigned n, unsigned m, T x, const Policy& pol);
217
217
 
218
218
  template <class T1, class T2>
@@ -226,76 +226,76 @@ namespace boost
226
226
  };
227
227
 
228
228
  template <class T1, class T2>
229
- typename laguerre_result<T1, T2>::type
229
+ typename laguerre_result<T1, T2>::type
230
230
  laguerre(unsigned n, T1 m, T2 x);
231
231
 
232
232
  template <class T>
233
- typename tools::promote_args<T>::type
233
+ typename tools::promote_args<T>::type
234
234
  hermite(unsigned n, T x);
235
235
 
236
236
  template <class T, class Policy>
237
- typename tools::promote_args<T>::type
237
+ typename tools::promote_args<T>::type
238
238
  hermite(unsigned n, T x, const Policy& pol);
239
239
 
240
240
  template <class T1, class T2, class T3>
241
- typename tools::promote_args<T1, T2, T3>::type
241
+ typename tools::promote_args<T1, T2, T3>::type
242
242
  hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
243
243
 
244
244
  template <class T1, class T2>
245
- std::complex<typename tools::promote_args<T1, T2>::type>
245
+ std::complex<typename tools::promote_args<T1, T2>::type>
246
246
  spherical_harmonic(unsigned n, int m, T1 theta, T2 phi);
247
247
 
248
248
  template <class T1, class T2, class Policy>
249
- std::complex<typename tools::promote_args<T1, T2>::type>
249
+ std::complex<typename tools::promote_args<T1, T2>::type>
250
250
  spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
251
251
 
252
252
  template <class T1, class T2>
253
- typename tools::promote_args<T1, T2>::type
253
+ typename tools::promote_args<T1, T2>::type
254
254
  spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi);
255
255
 
256
256
  template <class T1, class T2, class Policy>
257
- typename tools::promote_args<T1, T2>::type
257
+ typename tools::promote_args<T1, T2>::type
258
258
  spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
259
259
 
260
260
  template <class T1, class T2>
261
- typename tools::promote_args<T1, T2>::type
261
+ typename tools::promote_args<T1, T2>::type
262
262
  spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi);
263
263
 
264
264
  template <class T1, class T2, class Policy>
265
- typename tools::promote_args<T1, T2>::type
265
+ typename tools::promote_args<T1, T2>::type
266
266
  spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
267
267
 
268
268
  // Elliptic integrals:
269
269
  template <class T1, class T2, class T3>
270
- typename tools::promote_args<T1, T2, T3>::type
270
+ typename tools::promote_args<T1, T2, T3>::type
271
271
  ellint_rf(T1 x, T2 y, T3 z);
272
272
 
273
273
  template <class T1, class T2, class T3, class Policy>
274
- typename tools::promote_args<T1, T2, T3>::type
274
+ typename tools::promote_args<T1, T2, T3>::type
275
275
  ellint_rf(T1 x, T2 y, T3 z, const Policy& pol);
276
276
 
277
277
  template <class T1, class T2, class T3>
278
- typename tools::promote_args<T1, T2, T3>::type
278
+ typename tools::promote_args<T1, T2, T3>::type
279
279
  ellint_rd(T1 x, T2 y, T3 z);
280
280
 
281
281
  template <class T1, class T2, class T3, class Policy>
282
- typename tools::promote_args<T1, T2, T3>::type
282
+ typename tools::promote_args<T1, T2, T3>::type
283
283
  ellint_rd(T1 x, T2 y, T3 z, const Policy& pol);
284
284
 
285
285
  template <class T1, class T2>
286
- typename tools::promote_args<T1, T2>::type
286
+ typename tools::promote_args<T1, T2>::type
287
287
  ellint_rc(T1 x, T2 y);
288
288
 
289
289
  template <class T1, class T2, class Policy>
290
- typename tools::promote_args<T1, T2>::type
290
+ typename tools::promote_args<T1, T2>::type
291
291
  ellint_rc(T1 x, T2 y, const Policy& pol);
292
292
 
293
293
  template <class T1, class T2, class T3, class T4>
294
- typename tools::promote_args<T1, T2, T3, T4>::type
294
+ typename tools::promote_args<T1, T2, T3, T4>::type
295
295
  ellint_rj(T1 x, T2 y, T3 z, T4 p);
296
296
 
297
297
  template <class T1, class T2, class T3, class T4, class Policy>
298
- typename tools::promote_args<T1, T2, T3, T4>::type
298
+ typename tools::promote_args<T1, T2, T3, T4>::type
299
299
  ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy& pol);
300
300
 
301
301
  template <typename T>
@@ -349,7 +349,7 @@ namespace boost
349
349
  template <class RT, class Policy>
350
350
  RT factorial(unsigned int, const Policy& pol);
351
351
  template <class RT>
352
- RT unchecked_factorial(unsigned int BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(RT));
352
+ RT unchecked_factorial(unsigned int BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(RT));
353
353
  template <class RT>
354
354
  RT double_factorial(unsigned i);
355
355
  template <class RT, class Policy>
@@ -465,11 +465,11 @@ namespace boost
465
465
 
466
466
  // Hypotenuse function sqrt(x ^ 2 + y ^ 2).
467
467
  template <class T1, class T2>
468
- typename tools::promote_args<T1, T2>::type
468
+ typename tools::promote_args<T1, T2>::type
469
469
  hypot(T1 x, T2 y);
470
470
 
471
471
  template <class T1, class T2, class Policy>
472
- typename tools::promote_args<T1, T2>::type
472
+ typename tools::promote_args<T1, T2>::type
473
473
  hypot(T1 x, T2 y, const Policy&);
474
474
 
475
475
  // cbrt - cube root.
@@ -502,11 +502,11 @@ namespace boost
502
502
 
503
503
  // Power - 1
504
504
  template <class T1, class T2>
505
- typename tools::promote_args<T1, T2>::type
505
+ typename tools::promote_args<T1, T2>::type
506
506
  powm1(const T1 a, const T2 z);
507
507
 
508
508
  template <class T1, class T2, class Policy>
509
- typename tools::promote_args<T1, T2>::type
509
+ typename tools::promote_args<T1, T2>::type
510
510
  powm1(const T1 a, const T2 z, const Policy&);
511
511
 
512
512
  // sqrt(1+x) - 1
@@ -614,12 +614,50 @@ namespace boost
614
614
  template <class T>
615
615
  typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_neumann(unsigned v, T x);
616
616
 
617
- template <class T1, class T2, class Policy>
618
- std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_1(T1 v, T2 x, const Policy& pol);
617
+ template <class T, class Policy>
618
+ typename detail::bessel_traits<T, T, Policy>::result_type cyl_bessel_j_zero(T v, int m, const Policy& pol);
619
+
620
+ template <class T>
621
+ typename detail::bessel_traits<T, T, policies::policy<> >::result_type cyl_bessel_j_zero(T v, int m);
622
+
623
+ template <class T, class OutputIterator>
624
+ OutputIterator cyl_bessel_j_zero(T v,
625
+ int start_index,
626
+ unsigned number_of_zeros,
627
+ OutputIterator out_it);
628
+
629
+ template <class T, class OutputIterator, class Policy>
630
+ OutputIterator cyl_bessel_j_zero(T v,
631
+ int start_index,
632
+ unsigned number_of_zeros,
633
+ OutputIterator out_it,
634
+ const Policy&);
635
+
636
+ template <class T, class Policy>
637
+ typename detail::bessel_traits<T, T, Policy>::result_type cyl_neumann_zero(T v, int m, const Policy& pol);
638
+
639
+ template <class T>
640
+ typename detail::bessel_traits<T, T, policies::policy<> >::result_type cyl_neumann_zero(T v, int m);
641
+
642
+ template <class T, class OutputIterator>
643
+ OutputIterator cyl_neumann_zero(T v,
644
+ int start_index,
645
+ unsigned number_of_zeros,
646
+ OutputIterator out_it);
647
+
648
+ template <class T, class OutputIterator, class Policy>
649
+ OutputIterator cyl_neumann_zero(T v,
650
+ int start_index,
651
+ unsigned number_of_zeros,
652
+ OutputIterator out_it,
653
+ const Policy&);
619
654
 
620
655
  template <class T1, class T2>
621
656
  std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> cyl_hankel_1(T1 v, T2 x);
622
657
 
658
+ template <class T1, class T2, class Policy>
659
+ std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_1(T1 v, T2 x, const Policy& pol);
660
+
623
661
  template <class T1, class T2, class Policy>
624
662
  std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_2(T1 v, T2 x, const Policy& pol);
625
663
 
@@ -662,6 +700,40 @@ namespace boost
662
700
  template <class T>
663
701
  typename tools::promote_args<T>::type airy_bi_prime(T x);
664
702
 
703
+ template <class T>
704
+ T airy_ai_zero(unsigned m);
705
+ template <class T, class Policy>
706
+ T airy_ai_zero(unsigned m, const Policy&);
707
+
708
+ template <class OutputIterator>
709
+ OutputIterator airy_ai_zero(
710
+ unsigned start_index,
711
+ unsigned number_of_zeros,
712
+ OutputIterator out_it);
713
+ template <class OutputIterator, class Policy>
714
+ OutputIterator airy_ai_zero(
715
+ unsigned start_index,
716
+ unsigned number_of_zeros,
717
+ OutputIterator out_it,
718
+ const Policy&);
719
+
720
+ template <class T>
721
+ T airy_bi_zero(unsigned m);
722
+ template <class T, class Policy>
723
+ T airy_bi_zero(unsigned m, const Policy&);
724
+
725
+ template <class OutputIterator>
726
+ OutputIterator airy_bi_zero(
727
+ unsigned start_index,
728
+ unsigned number_of_zeros,
729
+ OutputIterator out_it);
730
+ template <class OutputIterator, class Policy>
731
+ OutputIterator airy_bi_zero(
732
+ unsigned start_index,
733
+ unsigned number_of_zeros,
734
+ OutputIterator out_it,
735
+ const Policy&);
736
+
665
737
  template <class T, class Policy>
666
738
  typename tools::promote_args<T>::type sin_pi(T x, const Policy&);
667
739
 
@@ -689,17 +761,17 @@ namespace boost
689
761
  template <class T>
690
762
  bool isnormal BOOST_NO_MACRO_EXPAND(T t);
691
763
 
692
- template<class T>
764
+ template<class T>
693
765
  int signbit BOOST_NO_MACRO_EXPAND(T x);
694
766
 
695
767
  template <class T>
696
768
  int sign BOOST_NO_MACRO_EXPAND(const T& z);
697
769
 
698
- template <class T>
699
- T copysign BOOST_NO_MACRO_EXPAND(const T& x, const T& y);
770
+ template <class T, class U>
771
+ typename tools::promote_args<T, U>::type copysign BOOST_NO_MACRO_EXPAND(const T& x, const U& y);
700
772
 
701
773
  template <class T>
702
- T changesign BOOST_NO_MACRO_EXPAND(const T& z);
774
+ typename tools::promote_args<T>::type changesign BOOST_NO_MACRO_EXPAND(const T& z);
703
775
 
704
776
  // Exponential integrals:
705
777
  namespace detail{
@@ -737,11 +809,11 @@ namespace boost
737
809
  typename tools::promote_args<T1, T2>::type owens_t(T1 h, T2 a);
738
810
 
739
811
  // Jacobi Functions:
740
- template <class T, class Policy>
741
- typename tools::promote_args<T>::type jacobi_elliptic(T k, T theta, T* pcn, T* pdn, const Policy&);
812
+ template <class T, class U, class V, class Policy>
813
+ typename tools::promote_args<T, U, V>::type jacobi_elliptic(T k, U theta, V* pcn, V* pdn, const Policy&);
742
814
 
743
- template <class T>
744
- typename tools::promote_args<T>::type jacobi_elliptic(T k, T theta, T* pcn = 0, T* pdn = 0);
815
+ template <class T, class U, class V>
816
+ typename tools::promote_args<T, U, V>::type jacobi_elliptic(T k, U theta, V* pcn = 0, V* pdn = 0);
745
817
 
746
818
  template <class U, class T, class Policy>
747
819
  typename tools::promote_args<T, U>::type jacobi_sn(U k, T theta, const Policy& pol);
@@ -827,22 +899,26 @@ namespace boost
827
899
  typename tools::promote_args<T>::type pow(T base);
828
900
 
829
901
  // next:
902
+ template <class T, class U, class Policy>
903
+ typename tools::promote_args<T, U>::type nextafter(const T&, const U&, const Policy&);
904
+ template <class T, class U>
905
+ typename tools::promote_args<T, U>::type nextafter(const T&, const U&);
830
906
  template <class T, class Policy>
831
- T nextafter(const T&, const T&, const Policy&);
832
- template <class T>
833
- T nextafter(const T&, const T&);
834
- template <class T, class Policy>
835
- T float_next(const T&, const Policy&);
907
+ typename tools::promote_args<T>::type float_next(const T&, const Policy&);
836
908
  template <class T>
837
- T float_next(const T&);
909
+ typename tools::promote_args<T>::type float_next(const T&);
838
910
  template <class T, class Policy>
839
- T float_prior(const T&, const Policy&);
911
+ typename tools::promote_args<T>::type float_prior(const T&, const Policy&);
840
912
  template <class T>
841
- T float_prior(const T&);
913
+ typename tools::promote_args<T>::type float_prior(const T&);
914
+ template <class T, class U, class Policy>
915
+ typename tools::promote_args<T, U>::type float_distance(const T&, const U&, const Policy&);
916
+ template <class T, class U>
917
+ typename tools::promote_args<T, U>::type float_distance(const T&, const U&);
842
918
  template <class T, class Policy>
843
- T float_distance(const T&, const T&, const Policy&);
919
+ typename tools::promote_args<T>::type float_advance(T val, int distance, const Policy& pol);
844
920
  template <class T>
845
- T float_distance(const T&, const T&);
921
+ typename tools::promote_args<T>::type float_advance(const T& val, int distance);
846
922
 
847
923
  } // namespace math
848
924
  } // namespace boost
@@ -1137,6 +1213,28 @@ namespace boost
1137
1213
  template <class T>\
1138
1214
  inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type \
1139
1215
  sph_neumann(unsigned v, T x){ return boost::math::sph_neumann(v, x, Policy()); }\
1216
+ \
1217
+ template <class T>\
1218
+ inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type cyl_bessel_j_zero(T v, int m)\
1219
+ { return boost::math::cyl_bessel_j_zero(v, m, Policy()); }\
1220
+ \
1221
+ template <class OutputIterator, class T>\
1222
+ inline void cyl_bessel_j_zero(T v,\
1223
+ int start_index,\
1224
+ unsigned number_of_zeros,\
1225
+ OutputIterator out_it)\
1226
+ { boost::math::cyl_bessel_j_zero(v, start_index, number_of_zeros, out_it, Policy()); }\
1227
+ \
1228
+ template <class T>\
1229
+ inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type cyl_neumann_zero(T v, int m)\
1230
+ { return boost::math::cyl_neumann_zero(v, m, Policy()); }\
1231
+ \
1232
+ template <class OutputIterator, class T>\
1233
+ inline void cyl_neumann_zero(T v,\
1234
+ int start_index,\
1235
+ unsigned number_of_zeros,\
1236
+ OutputIterator out_it)\
1237
+ { boost::math::cyl_neumann_zero(v, start_index, number_of_zeros, out_it, Policy()); }\
1140
1238
  \
1141
1239
  template <class T>\
1142
1240
  inline typename boost::math::tools::promote_args<T>::type sin_pi(T x){ return boost::math::sin_pi(x); }\
@@ -1286,6 +1384,20 @@ namespace boost
1286
1384
  inline typename boost::math::tools::promote_args<T>::type airy_bi_prime(T x)\
1287
1385
  { return boost::math::airy_bi_prime(x, Policy()); }\
1288
1386
  \
1387
+ template <class T>\
1388
+ inline T airy_ai_zero(int m)\
1389
+ { return boost::math::airy_ai_zero<T>(m, Policy()); }\
1390
+ template <class T, class OutputIterator>\
1391
+ OutputIterator airy_ai_zero(int start_index, unsigned number_of_zeros, OutputIterator out_it)\
1392
+ { return boost::math::airy_ai_zero<T>(start_index, number_of_zeros, out_it, Policy()); }\
1393
+ \
1394
+ template <class T>\
1395
+ inline T airy_bi_zero(int m)\
1396
+ { return boost::math::airy_bi_zero<T>(m, Policy()); }\
1397
+ template <class T, class OutputIterator>\
1398
+ OutputIterator airy_bi_zero(int start_index, unsigned number_of_zeros, OutputIterator out_it)\
1399
+ { return boost::math::airy_bi_zero<T>(start_index, number_of_zeros, out_it, Policy()); }\
1400
+ \
1289
1401
 
1290
1402
 
1291
1403