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
@@ -0,0 +1,49 @@
1
+ // (C) Copyright 2009-2011 Frederic Bron.
2
+ //
3
+ // Use, modification and distribution are subject to the Boost Software License,
4
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5
+ // http://www.boost.org/LICENSE_1_0.txt).
6
+ //
7
+ // See http://www.boost.org/libs/type_traits for most recent version including documentation.
8
+
9
+ #ifndef BOOST_TT_HAS_RIGHT_SHIFT_HPP_INCLUDED
10
+ #define BOOST_TT_HAS_RIGHT_SHIFT_HPP_INCLUDED
11
+
12
+ #define BOOST_TT_TRAIT_NAME has_right_shift
13
+ #define BOOST_TT_TRAIT_OP >>
14
+ #define BOOST_TT_FORBIDDEN_IF\
15
+ ::boost::type_traits::ice_or<\
16
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
17
+ ::boost::type_traits::ice_and<\
18
+ ::boost::is_fundamental< Lhs_nocv >::value,\
19
+ ::boost::is_fundamental< Rhs_nocv >::value,\
20
+ ::boost::type_traits::ice_or<\
21
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
22
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
23
+ >::value\
24
+ >::value,\
25
+ /* Lhs==fundamental and Rhs==pointer */\
26
+ ::boost::type_traits::ice_and<\
27
+ ::boost::is_fundamental< Lhs_nocv >::value,\
28
+ ::boost::is_pointer< Rhs_noref >::value\
29
+ >::value,\
30
+ /* Rhs==fundamental and Lhs==pointer */\
31
+ ::boost::type_traits::ice_and<\
32
+ ::boost::is_fundamental< Rhs_nocv >::value,\
33
+ ::boost::is_pointer< Lhs_noref >::value\
34
+ >::value,\
35
+ /* Lhs==pointer and Rhs==pointer */\
36
+ ::boost::type_traits::ice_and<\
37
+ ::boost::is_pointer< Lhs_noref >::value,\
38
+ ::boost::is_pointer< Rhs_noref >::value\
39
+ >::value\
40
+ >::value
41
+
42
+
43
+ #include <boost/type_traits/detail/has_binary_operator.hpp>
44
+
45
+ #undef BOOST_TT_TRAIT_NAME
46
+ #undef BOOST_TT_TRAIT_OP
47
+ #undef BOOST_TT_FORBIDDEN_IF
48
+
49
+ #endif
@@ -0,0 +1,57 @@
1
+
2
+ // (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
3
+ // (C) Copyright Eric Friedman 2002-2003.
4
+ // (C) Copyright Antony Polukhin 2013.
5
+ // Use, modification and distribution are subject to the Boost Software License,
6
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
7
+ // http://www.boost.org/LICENSE_1_0.txt).
8
+ //
9
+ // See http://www.boost.org/libs/type_traits for most recent version including documentation.
10
+
11
+ #ifndef BOOST_TT_HAS_TRIVIAL_MOVE_ASSIGN_HPP_INCLUDED
12
+ #define BOOST_TT_HAS_TRIVIAL_MOVE_ASSIGN_HPP_INCLUDED
13
+
14
+ #include <boost/type_traits/config.hpp>
15
+ #include <boost/type_traits/is_pod.hpp>
16
+ #include <boost/type_traits/is_const.hpp>
17
+ #include <boost/type_traits/is_volatile.hpp>
18
+ #include <boost/type_traits/detail/ice_and.hpp>
19
+ #include <boost/type_traits/detail/ice_not.hpp>
20
+
21
+ // should be the last #include
22
+ #include <boost/type_traits/detail/bool_trait_def.hpp>
23
+
24
+ namespace boost {
25
+
26
+ namespace detail {
27
+
28
+ template <typename T>
29
+ struct has_trivial_move_assign_impl
30
+ {
31
+ #ifdef BOOST_HAS_TRIVIAL_MOVE_ASSIGN
32
+ BOOST_STATIC_CONSTANT(bool, value = (BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T)));
33
+ #else
34
+ BOOST_STATIC_CONSTANT(bool, value =
35
+ (::boost::type_traits::ice_and<
36
+ ::boost::is_pod<T>::value,
37
+ ::boost::type_traits::ice_not< ::boost::is_const<T>::value >::value,
38
+ ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
39
+ >::value));
40
+ #endif
41
+ };
42
+
43
+ } // namespace detail
44
+
45
+ BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_move_assign,T,::boost::detail::has_trivial_move_assign_impl<T>::value)
46
+ BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_assign,void,false)
47
+ #ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
48
+ BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_assign,void const,false)
49
+ BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_assign,void const volatile,false)
50
+ BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_assign,void volatile,false)
51
+ #endif
52
+
53
+ } // namespace boost
54
+
55
+ #include <boost/type_traits/detail/bool_trait_undef.hpp>
56
+
57
+ #endif // BOOST_TT_HAS_TRIVIAL_MOVE_ASSIGN_HPP_INCLUDED
@@ -0,0 +1,57 @@
1
+
2
+ // (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
3
+ // (C) Copyright Eric Friedman 2002-2003.
4
+ // (C) Copyright Antony Polukhin 2013.
5
+ // Use, modification and distribution are subject to the Boost Software License,
6
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
7
+ // http://www.boost.org/LICENSE_1_0.txt).
8
+ //
9
+ // See http://www.boost.org/libs/type_traits for most recent version including documentation.
10
+
11
+ #ifndef BOOST_TT_HAS_TRIVIAL_MOVE_CONSTRUCTOR_HPP_INCLUDED
12
+ #define BOOST_TT_HAS_TRIVIAL_MOVE_CONSTRUCTOR_HPP_INCLUDED
13
+
14
+ #include <boost/type_traits/config.hpp>
15
+ #include <boost/type_traits/intrinsics.hpp>
16
+ #include <boost/type_traits/is_pod.hpp>
17
+ #include <boost/type_traits/is_volatile.hpp>
18
+ #include <boost/type_traits/detail/ice_and.hpp>
19
+ #include <boost/type_traits/detail/ice_not.hpp>
20
+
21
+ // should be the last #include
22
+ #include <boost/type_traits/detail/bool_trait_def.hpp>
23
+
24
+ namespace boost {
25
+
26
+ namespace detail {
27
+
28
+ template <typename T>
29
+ struct has_trivial_move_ctor_impl
30
+ {
31
+ #ifdef BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR
32
+ BOOST_STATIC_CONSTANT(bool, value = (BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T)));
33
+ #else
34
+ BOOST_STATIC_CONSTANT(bool, value =
35
+ (::boost::type_traits::ice_and<
36
+ ::boost::is_pod<T>::value,
37
+ ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
38
+ >::value));
39
+ #endif
40
+ };
41
+
42
+ } // namespace detail
43
+
44
+ BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_move_constructor,T,::boost::detail::has_trivial_move_ctor_impl<T>::value)
45
+
46
+ BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_constructor,void,false)
47
+ #ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
48
+ BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_constructor,void const,false)
49
+ BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_constructor,void const volatile,false)
50
+ BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_constructor,void volatile,false)
51
+ #endif
52
+
53
+ } // namespace boost
54
+
55
+ #include <boost/type_traits/detail/bool_trait_undef.hpp>
56
+
57
+ #endif // BOOST_TT_HAS_TRIVIAL_MOVE_CONSTRUCTOR_HPP_INCLUDED
@@ -24,7 +24,9 @@
24
24
  // BOOST_IS_EMPTY(T) should evaluate to true if T is an empty class type (and not a union)
25
25
  // BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) should evaluate to true if "T x;" has no effect
26
26
  // BOOST_HAS_TRIVIAL_COPY(T) should evaluate to true if T(t) <==> memcpy
27
+ // BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) should evaluate to true if T(boost::move(t)) <==> memcpy
27
28
  // BOOST_HAS_TRIVIAL_ASSIGN(T) should evaluate to true if t = u <==> memcpy
29
+ // BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) should evaluate to true if t = boost::move(u) <==> memcpy
28
30
  // BOOST_HAS_TRIVIAL_DESTRUCTOR(T) should evaluate to true if ~T() has no effect
29
31
  // BOOST_HAS_NOTHROW_CONSTRUCTOR(T) should evaluate to true if "T x;" can not throw
30
32
  // BOOST_HAS_NOTHROW_COPY(T) should evaluate to true if T(t) can not throw
@@ -79,8 +81,10 @@
79
81
  # define BOOST_HAS_TYPE_TRAITS_INTRINSICS
80
82
  #endif
81
83
 
82
- #if defined(BOOST_MSVC) && defined(BOOST_MSVC_FULL_VER) && (BOOST_MSVC_FULL_VER >=140050215)
84
+ #if (defined(BOOST_MSVC) && defined(BOOST_MSVC_FULL_VER) && (BOOST_MSVC_FULL_VER >=140050215))\
85
+ || (defined(BOOST_INTEL) && defined(_MSC_VER) && (_MSC_VER >= 1500))
83
86
  # include <boost/type_traits/is_same.hpp>
87
+ # include <boost/type_traits/is_function.hpp>
84
88
 
85
89
  # define BOOST_IS_UNION(T) __is_union(T)
86
90
  # define BOOST_IS_POD(T) (__is_pod(T) && __has_trivial_constructor(T))
@@ -97,13 +101,18 @@
97
101
  # define BOOST_IS_ABSTRACT(T) __is_abstract(T)
98
102
  # define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
99
103
  # define BOOST_IS_CLASS(T) __is_class(T)
100
- # define BOOST_IS_CONVERTIBLE(T,U) ((__is_convertible_to(T,U) || is_same<T,U>::value) && !__is_abstract(U))
104
+ # define BOOST_IS_CONVERTIBLE(T,U) ((__is_convertible_to(T,U) || (is_same<T,U>::value && !is_function<U>::value)) && !__is_abstract(U))
101
105
  # define BOOST_IS_ENUM(T) __is_enum(T)
102
106
  // This one doesn't quite always do the right thing:
103
107
  // # define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
104
108
  // This one fails if the default alignment has been changed with /Zp:
105
109
  // # define BOOST_ALIGNMENT_OF(T) __alignof(T)
106
110
 
111
+ # if defined(_MSC_VER) && (_MSC_VER >= 1700)
112
+ # define BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) ((__has_trivial_move_constructor(T) || ::boost::is_pod<T>::value) && !::boost::is_volatile<T>::value)
113
+ # define BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) ((__has_trivial_move_assign(T) || ::boost::is_pod<T>::value) && ! ::boost::is_const<T>::value && !::boost::is_volatile<T>::value)
114
+ # endif
115
+
107
116
  # define BOOST_HAS_TYPE_TRAITS_INTRINSICS
108
117
  #endif
109
118
 
@@ -181,6 +190,12 @@
181
190
  # if __has_feature(is_polymorphic)
182
191
  # define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
183
192
  # endif
193
+ # if __has_feature(has_trivial_move_constructor)
194
+ # define BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) __has_trivial_move_constructor(T)
195
+ # endif
196
+ # if __has_feature(has_trivial_move_assign)
197
+ # define BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) __has_trivial_move_assign(T)
198
+ # endif
184
199
  # define BOOST_ALIGNMENT_OF(T) __alignof(T)
185
200
 
186
201
  # define BOOST_HAS_TYPE_TRAITS_INTRINSICS
@@ -287,3 +302,4 @@
287
302
 
288
303
 
289
304
 
305
+
@@ -39,7 +39,7 @@
39
39
  // At this time supported by EDG (Intel C++ 7, Comeau 4.3.2) and VC7.1.
40
40
  // - Adapted and added into Boost.Serialization library by Robert Ramey
41
41
  // (starting with submission #10).
42
- // - Jan 2004: GCC 3.4 fixed to suport DR337 (Giovanni Bajo).
42
+ // - Jan 2004: GCC 3.4 fixed to support DR337 (Giovanni Bajo).
43
43
  // - Jan 2004: modified to be part of Boost.TypeTraits (Pavel Vozenilek).
44
44
  // - Nov 2004: Christoph Ludwig found that the implementation did not work with
45
45
  // template types and gcc-3.4 or VC7.1, fix due to Christoph Ludwig
@@ -8,7 +8,7 @@
8
8
  // See http://www.boost.org/libs/type_traits for most recent version including documentation.
9
9
 
10
10
 
11
- // Some fixes for is_array are based on a newgroup posting by Jonathan Lundquist.
11
+ // Some fixes for is_array are based on a newsgroup posting by Jonathan Lundquist.
12
12
 
13
13
 
14
14
  #ifndef BOOST_TT_IS_ARRAY_HPP_INCLUDED
@@ -64,7 +64,7 @@ struct is_const_rvalue_filter
64
64
  BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<T*>::is_const);
65
65
  #endif
66
66
  };
67
- #ifndef BOOST_NO_RVALUE_REFERENCES
67
+ #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
68
68
  template <class T>
69
69
  struct is_const_rvalue_filter<T&&>
70
70
  {
@@ -17,17 +17,17 @@
17
17
  #include <boost/type_traits/detail/yes_no_type.hpp>
18
18
  #include <boost/type_traits/config.hpp>
19
19
  #include <boost/type_traits/is_array.hpp>
20
- #include <boost/type_traits/add_reference.hpp>
21
20
  #include <boost/type_traits/ice.hpp>
22
21
  #include <boost/type_traits/is_arithmetic.hpp>
23
22
  #include <boost/type_traits/is_void.hpp>
24
23
  #ifndef BOOST_NO_IS_ABSTRACT
25
24
  #include <boost/type_traits/is_abstract.hpp>
26
25
  #endif
26
+ #include <boost/type_traits/add_lvalue_reference.hpp>
27
27
  #include <boost/type_traits/add_rvalue_reference.hpp>
28
+ #include <boost/type_traits/is_function.hpp>
28
29
 
29
30
  #if defined(__MWERKS__)
30
- #include <boost/type_traits/is_function.hpp>
31
31
  #include <boost/type_traits/remove_reference.hpp>
32
32
  #endif
33
33
 
@@ -40,7 +40,7 @@ namespace boost {
40
40
 
41
41
  #ifndef BOOST_IS_CONVERTIBLE
42
42
 
43
- // is one type convertable to another?
43
+ // is one type convertible to another?
44
44
  //
45
45
  // there are multiple versions of the is_convertible
46
46
  // template, almost every compiler seems to require its
@@ -69,7 +69,7 @@ struct does_conversion_exist
69
69
  {
70
70
  static no_type BOOST_TT_DECL _m_check(...);
71
71
  static yes_type BOOST_TT_DECL _m_check(To);
72
- static typename add_rvalue_reference<From>::type _m_from;
72
+ static typename add_lvalue_reference<From>::type _m_from;
73
73
  enum { value = sizeof( _m_check(_m_from) ) == sizeof(yes_type) };
74
74
  };
75
75
  };
@@ -107,7 +107,7 @@ struct is_convertible_impl
107
107
  static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(T);
108
108
  };
109
109
 
110
- static typename add_rvalue_reference<From>::type _m_from;
110
+ static typename add_lvalue_reference<From>::type _m_from;
111
111
  static bool const value = sizeof( checker<To>::_m_check(_m_from) )
112
112
  == sizeof(::boost::type_traits::yes_type);
113
113
  #pragma option pop
@@ -120,6 +120,8 @@ struct is_convertible_impl
120
120
  struct any_conversion
121
121
  {
122
122
  template <typename T> any_conversion(const volatile T&);
123
+ template <typename T> any_conversion(const T&);
124
+ template <typename T> any_conversion(volatile T&);
123
125
  template <typename T> any_conversion(T&);
124
126
  };
125
127
 
@@ -132,9 +134,18 @@ template <typename T> struct checker
132
134
  template <typename From, typename To>
133
135
  struct is_convertible_basic_impl
134
136
  {
135
- static typename add_rvalue_reference<From>::type _m_from;
136
- static bool const value = sizeof( boost::detail::checker<To>::_m_check(_m_from, 0) )
137
+ typedef typename add_lvalue_reference<From>::type lvalue_type;
138
+ typedef typename add_rvalue_reference<From>::type rvalue_type;
139
+ static lvalue_type _m_from;
140
+ #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6)))
141
+ static bool const value =
142
+ sizeof( boost::detail::checker<To>::_m_check(static_cast<rvalue_type>(_m_from), 0) )
143
+ == sizeof(::boost::type_traits::yes_type);
144
+ #else
145
+ static bool const value =
146
+ sizeof( boost::detail::checker<To>::_m_check(_m_from, 0) )
137
147
  == sizeof(::boost::type_traits::yes_type);
148
+ #endif
138
149
  };
139
150
 
140
151
  #elif (defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 245) && !defined(__ICL)) \
@@ -152,6 +163,8 @@ struct is_convertible_basic_impl
152
163
  struct any_conversion
153
164
  {
154
165
  template <typename T> any_conversion(const volatile T&);
166
+ template <typename T> any_conversion(const T&);
167
+ template <typename T> any_conversion(volatile T&);
155
168
  // we need this constructor to catch references to functions
156
169
  // (which can not be cv-qualified):
157
170
  template <typename T> any_conversion(T&);
@@ -162,11 +175,19 @@ struct is_convertible_basic_impl
162
175
  {
163
176
  static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
164
177
  static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
165
- static typename add_rvalue_reference<From>::type _m_from;
178
+ typedef typename add_lvalue_reference<From>::type lvalue_type;
179
+ typedef typename add_rvalue_reference<From>::type rvalue_type;
180
+ static lvalue_type _m_from;
166
181
 
182
+ #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
183
+ BOOST_STATIC_CONSTANT(bool, value =
184
+ sizeof( _m_check(static_cast<rvalue_type>(_m_from), 0) ) == sizeof(::boost::type_traits::yes_type)
185
+ );
186
+ #else
167
187
  BOOST_STATIC_CONSTANT(bool, value =
168
188
  sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
169
189
  );
190
+ #endif
170
191
  };
171
192
 
172
193
  #elif defined(__DMC__)
@@ -174,6 +195,8 @@ struct is_convertible_basic_impl
174
195
  struct any_conversion
175
196
  {
176
197
  template <typename T> any_conversion(const volatile T&);
198
+ template <typename T> any_conversion(const T&);
199
+ template <typename T> any_conversion(volatile T&);
177
200
  // we need this constructor to catch references to functions
178
201
  // (which can not be cv-qualified):
179
202
  template <typename T> any_conversion(T&);
@@ -186,13 +209,21 @@ struct is_convertible_basic_impl
186
209
  template <class T>
187
210
  static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion, float, T);
188
211
  static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int, int);
189
- static typename add_rvalue_reference<From>::type _m_from;
212
+ typedef typename add_lvalue_reference<From>::type lvalue_type;
213
+ typedef typename add_rvalue_reference<From>::type rvalue_type;
214
+ static lvalue_type _m_from;
190
215
 
191
216
  // Static constants sometime cause the conversion of _m_from to To to be
192
217
  // called. This doesn't happen with an enum.
218
+ #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
219
+ enum { value =
220
+ sizeof( _m_check(static_cast<rvalue_type>(_m_from), 0, 0) ) == sizeof(::boost::type_traits::yes_type)
221
+ };
222
+ #else
193
223
  enum { value =
194
224
  sizeof( _m_check(_m_from, 0, 0) ) == sizeof(::boost::type_traits::yes_type)
195
225
  };
226
+ #endif
196
227
  };
197
228
 
198
229
  #elif defined(__MWERKS__)
@@ -209,6 +240,9 @@ struct is_convertible_basic_impl_aux;
209
240
  struct any_conversion
210
241
  {
211
242
  template <typename T> any_conversion(const volatile T&);
243
+ template <typename T> any_conversion(const T&);
244
+ template <typename T> any_conversion(volatile T&);
245
+ template <typename T> any_conversion(T&);
212
246
  };
213
247
 
214
248
  template <typename From, typename To>
@@ -216,11 +250,19 @@ struct is_convertible_basic_impl_aux<From,To,false /*FromIsFunctionRef*/>
216
250
  {
217
251
  static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
218
252
  static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
219
- static typename add_rvalue_reference<From>::type _m_from;
253
+ typedef typename add_lvalue_reference<From>::type lvalue_type;
254
+ typedef typename add_rvalue_reference<From>::type rvalue_type;
255
+ static lvalue_type _m_from;
220
256
 
257
+ #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
258
+ BOOST_STATIC_CONSTANT(bool, value =
259
+ sizeof( _m_check(static_cast<rvalue_type>(_m_from), 0) ) == sizeof(::boost::type_traits::yes_type)
260
+ );
261
+ #else
221
262
  BOOST_STATIC_CONSTANT(bool, value =
222
263
  sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
223
264
  );
265
+ #endif
224
266
  };
225
267
 
226
268
  template <typename From, typename To>
@@ -228,10 +270,18 @@ struct is_convertible_basic_impl_aux<From,To,true /*FromIsFunctionRef*/>
228
270
  {
229
271
  static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
230
272
  static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
231
- static typename add_rvalue_reference<From>::type _m_from;
273
+ typedef typename add_lvalue_reference<From>::type lvalue_type;
274
+ typedef typename add_rvalue_reference<From>::type rvalue_type;
275
+ static lvalue_type _m_from;
276
+ #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
277
+ BOOST_STATIC_CONSTANT(bool, value =
278
+ sizeof( _m_check(static_cast<rvalue_type>(_m_from)) ) == sizeof(::boost::type_traits::yes_type)
279
+ );
280
+ #else
232
281
  BOOST_STATIC_CONSTANT(bool, value =
233
282
  sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
234
283
  );
284
+ #endif
235
285
  };
236
286
 
237
287
  template <typename From, typename To>
@@ -243,7 +293,6 @@ struct is_convertible_basic_impl:
243
293
  {};
244
294
 
245
295
  #else
246
-
247
296
  //
248
297
  // This version seems to work pretty well for a wide spectrum of compilers,
249
298
  // however it does rely on undefined behaviour by passing UDT's through (...).
@@ -253,7 +302,9 @@ struct is_convertible_basic_impl
253
302
  {
254
303
  static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
255
304
  static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
256
- static typename add_rvalue_reference<From>::type _m_from;
305
+ typedef typename add_lvalue_reference<From>::type lvalue_type;
306
+ typedef typename add_rvalue_reference<From>::type rvalue_type;
307
+ static lvalue_type _m_from;
257
308
  #ifdef BOOST_MSVC
258
309
  #pragma warning(push)
259
310
  #pragma warning(disable:4244)
@@ -261,9 +312,15 @@ struct is_convertible_basic_impl
261
312
  #pragma warning(disable:6334)
262
313
  #endif
263
314
  #endif
315
+ #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
316
+ BOOST_STATIC_CONSTANT(bool, value =
317
+ sizeof( _m_check(static_cast<rvalue_type>(_m_from)) ) == sizeof(::boost::type_traits::yes_type)
318
+ );
319
+ #else
264
320
  BOOST_STATIC_CONSTANT(bool, value =
265
321
  sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
266
322
  );
323
+ #endif
267
324
  #ifdef BOOST_MSVC
268
325
  #pragma warning(pop)
269
326
  #endif
@@ -276,15 +333,17 @@ struct is_convertible_basic_impl
276
333
  template <typename From, typename To>
277
334
  struct is_convertible_impl
278
335
  {
279
- typedef typename add_reference<From>::type ref_type;
280
336
  enum { value =
281
337
  (::boost::type_traits::ice_and<
282
338
  ::boost::type_traits::ice_or<
283
- ::boost::detail::is_convertible_basic_impl<ref_type,To>::value,
339
+ ::boost::detail::is_convertible_basic_impl<From,To>::value,
284
340
  ::boost::is_void<To>::value
285
341
  >::value,
286
342
  ::boost::type_traits::ice_not<
287
343
  ::boost::is_array<To>::value
344
+ >::value,
345
+ ::boost::type_traits::ice_not<
346
+ ::boost::is_function<To>::value
288
347
  >::value
289
348
  >::value) };
290
349
  };
@@ -292,15 +351,17 @@ struct is_convertible_impl
292
351
  template <typename From, typename To>
293
352
  struct is_convertible_impl
294
353
  {
295
- typedef typename add_reference<From>::type ref_type;
296
354
  BOOST_STATIC_CONSTANT(bool, value =
297
355
  (::boost::type_traits::ice_and<
298
356
  ::boost::type_traits::ice_or<
299
- ::boost::detail::is_convertible_basic_impl<ref_type,To>::value,
357
+ ::boost::detail::is_convertible_basic_impl<From,To>::value,
300
358
  ::boost::is_void<To>::value
301
359
  >::value,
302
360
  ::boost::type_traits::ice_not<
303
361
  ::boost::is_array<To>::value
362
+ >::value,
363
+ ::boost::type_traits::ice_not<
364
+ ::boost::is_function<To>::value
304
365
  >::value
305
366
  >::value)
306
367
  );