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,142 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // (C) Copyright Ion Gaztanaga 2009-2012.
4
+ // Distributed under the Boost Software License, Version 1.0.
5
+ // (See accompanying file LICENSE_1_0.txt or copy at
6
+ // http://www.boost.org/LICENSE_1_0.txt)
7
+ //
8
+ // See http://www.boost.org/libs/move for documentation.
9
+ //
10
+ //////////////////////////////////////////////////////////////////////////////
11
+
12
+ //! \file
13
+
14
+ #ifndef BOOST_MOVE_MOVE_TRAITS_HPP
15
+ #define BOOST_MOVE_MOVE_TRAITS_HPP
16
+
17
+ #include <boost/move/detail/config_begin.hpp>
18
+ #include <boost/type_traits/has_trivial_destructor.hpp>
19
+ #include <boost/move/detail/meta_utils.hpp>
20
+
21
+ #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
22
+ #include <boost/move/core.hpp>
23
+ #endif
24
+
25
+ namespace boost {
26
+
27
+ //! If this trait yields to true
28
+ //! (<i>has_trivial_destructor_after_move &lt;T&gt;::value == true</i>)
29
+ //! means that if T is used as argument of a move construction/assignment,
30
+ //! there is no need to call T's destructor.
31
+ //! This optimization tipically is used to improve containers' performance.
32
+ //!
33
+ //! By default this trait is true if the type has trivial destructor,
34
+ //! every class should specialize this trait if it wants to improve performance
35
+ //! when inserted in containers.
36
+ template <class T>
37
+ struct has_trivial_destructor_after_move
38
+ : ::boost::has_trivial_destructor<T>
39
+ {};
40
+
41
+ //! By default this traits returns false. Classes with non-throwing move constructor
42
+ //! and assignment can specialize this trait to obtain some performance improvements.
43
+ template <class T>
44
+ struct has_nothrow_move
45
+ : public ::boost::move_detail::integral_constant<bool, false>
46
+ {};
47
+
48
+ namespace move_detail {
49
+
50
+ // Code from Jeffrey Lee Hellrung, many thanks
51
+
52
+ #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
53
+ template< class T> struct forward_type { typedef T type; };
54
+ #else // #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
55
+ template< class T>
56
+ struct forward_type
57
+ { typedef const T &type; };
58
+
59
+ template< class T>
60
+ struct forward_type< boost::rv<T> >
61
+ { typedef T type; };
62
+ #endif // #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
63
+
64
+ template< class T > struct is_rvalue_reference : ::boost::move_detail::integral_constant<bool, false> { };
65
+ #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
66
+ template< class T > struct is_rvalue_reference< T&& > : ::boost::move_detail::integral_constant<bool, true> { };
67
+ #else // #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
68
+ template< class T > struct is_rvalue_reference< boost::rv<T>& >
69
+ : ::boost::move_detail::integral_constant<bool, true>
70
+ {};
71
+
72
+ template< class T > struct is_rvalue_reference< const boost::rv<T>& >
73
+ : ::boost::move_detail::integral_constant<bool, true>
74
+ {};
75
+ #endif // #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
76
+
77
+ #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
78
+ template< class T > struct add_rvalue_reference { typedef T&& type; };
79
+ #else // #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
80
+ namespace detail_add_rvalue_reference
81
+ {
82
+ template< class T
83
+ , bool emulation = ::boost::has_move_emulation_enabled<T>::value
84
+ , bool rv = ::boost::move_detail::is_rv<T>::value >
85
+ struct add_rvalue_reference_impl { typedef T type; };
86
+
87
+ template< class T, bool emulation>
88
+ struct add_rvalue_reference_impl< T, emulation, true > { typedef T & type; };
89
+
90
+ template< class T, bool rv >
91
+ struct add_rvalue_reference_impl< T, true, rv > { typedef ::boost::rv<T>& type; };
92
+ } // namespace detail_add_rvalue_reference
93
+
94
+ template< class T >
95
+ struct add_rvalue_reference
96
+ : detail_add_rvalue_reference::add_rvalue_reference_impl<T>
97
+ { };
98
+
99
+ template< class T >
100
+ struct add_rvalue_reference<T &>
101
+ { typedef T & type; };
102
+
103
+ #endif // #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
104
+
105
+ template< class T > struct remove_rvalue_reference { typedef T type; };
106
+
107
+ #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
108
+ template< class T > struct remove_rvalue_reference< T&& > { typedef T type; };
109
+ #else // #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
110
+ template< class T > struct remove_rvalue_reference< rv<T> > { typedef T type; };
111
+ template< class T > struct remove_rvalue_reference< const rv<T> > { typedef T type; };
112
+ template< class T > struct remove_rvalue_reference< volatile rv<T> > { typedef T type; };
113
+ template< class T > struct remove_rvalue_reference< const volatile rv<T> > { typedef T type; };
114
+ template< class T > struct remove_rvalue_reference< rv<T>& > { typedef T type; };
115
+ template< class T > struct remove_rvalue_reference< const rv<T>& > { typedef T type; };
116
+ template< class T > struct remove_rvalue_reference< volatile rv<T>& > { typedef T type; };
117
+ template< class T > struct remove_rvalue_reference< const volatile rv<T>& >{ typedef T type; };
118
+ #endif // #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
119
+
120
+ template <typename T>
121
+ typename boost::move_detail::add_rvalue_reference<T>::type declval();
122
+
123
+ } //move_detail {
124
+
125
+ // Ideas from Boost.Move review, Jeffrey Lee Hellrung:
126
+ //
127
+ //- TypeTraits metafunctions is_lvalue_reference, add_lvalue_reference, and remove_lvalue_reference ?
128
+ // Perhaps add_reference and remove_reference can be modified so that they behave wrt emulated rvalue
129
+ // references the same as wrt real rvalue references, i.e., add_reference< rv<T>& > -> T& rather than
130
+ // rv<T>& (since T&& & -> T&).
131
+ //
132
+ //- Add'l TypeTraits has_[trivial_]move_{constructor,assign}...?
133
+ //
134
+ //- An as_lvalue(T& x) function, which amounts to an identity operation in C++0x, but strips emulated
135
+ // rvalue references in C++03. This may be necessary to prevent "accidental moves".
136
+
137
+
138
+ } //namespace boost {
139
+
140
+ #include <boost/move/detail/config_end.hpp>
141
+
142
+ #endif //#ifndef BOOST_MOVE_MOVE_TRAITS_HPP
@@ -0,0 +1,194 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // (C) Copyright Ion Gaztanaga 2012-2012.
4
+ // Distributed under the Boost Software License, Version 1.0.
5
+ // (See accompanying file LICENSE_1_0.txt or copy at
6
+ // http://www.boost.org/LICENSE_1_0.txt)
7
+ //
8
+ // See http://www.boost.org/libs/move for documentation.
9
+ //
10
+ //////////////////////////////////////////////////////////////////////////////
11
+
12
+ //! \file
13
+
14
+ #ifndef BOOST_MOVE_MOVE_UTILITY_HPP
15
+ #define BOOST_MOVE_MOVE_UTILITY_HPP
16
+
17
+ #include <boost/move/detail/config_begin.hpp>
18
+ #include <boost/move/core.hpp>
19
+ #include <boost/move/detail/meta_utils.hpp>
20
+
21
+ #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_MOVE_DOXYGEN_INVOKED)
22
+
23
+ namespace boost {
24
+
25
+ template<class T>
26
+ struct enable_move_utility_emulation
27
+ {
28
+ static const bool value = true;
29
+ };
30
+
31
+ //////////////////////////////////////////////////////////////////////////////
32
+ //
33
+ // move()
34
+ //
35
+ //////////////////////////////////////////////////////////////////////////////
36
+
37
+ template <class T>
38
+ inline typename ::boost::move_detail::enable_if_c
39
+ < enable_move_utility_emulation<T>::value && !has_move_emulation_enabled<T>::value, T&>::type
40
+ move(T& x)
41
+ {
42
+ return x;
43
+ }
44
+
45
+ template <class T>
46
+ inline typename ::boost::move_detail::enable_if_c
47
+ < enable_move_utility_emulation<T>::value && has_move_emulation_enabled<T>::value, rv<T>&>::type
48
+ move(T& x)
49
+ {
50
+ return *static_cast<rv<T>* >(::boost::move_detail::addressof(x));
51
+ }
52
+
53
+ template <class T>
54
+ inline typename ::boost::move_detail::enable_if_c
55
+ < enable_move_utility_emulation<T>::value && has_move_emulation_enabled<T>::value, rv<T>&>::type
56
+ move(rv<T>& x)
57
+ {
58
+ return x;
59
+ }
60
+
61
+ //////////////////////////////////////////////////////////////////////////////
62
+ //
63
+ // forward()
64
+ //
65
+ //////////////////////////////////////////////////////////////////////////////
66
+
67
+ template <class T>
68
+ inline typename ::boost::move_detail::enable_if_c
69
+ < enable_move_utility_emulation<T>::value && ::boost::move_detail::is_rv<T>::value, T &>::type
70
+ forward(const typename ::boost::move_detail::identity<T>::type &x)
71
+ {
72
+ return const_cast<T&>(x);
73
+ }
74
+
75
+ template <class T>
76
+ inline typename ::boost::move_detail::enable_if_c
77
+ < enable_move_utility_emulation<T>::value && !::boost::move_detail::is_rv<T>::value, const T &>::type
78
+ forward(const typename ::boost::move_detail::identity<T>::type &x)
79
+ {
80
+ return x;
81
+ }
82
+
83
+ } //namespace boost
84
+
85
+ #else //#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_MOVE_DOXYGEN_INVOKED)
86
+
87
+ #if defined(BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE)
88
+ #include <utility>
89
+
90
+ namespace boost{
91
+
92
+ using ::std::move;
93
+ using ::std::forward;
94
+
95
+ } //namespace boost
96
+
97
+ #else //!BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
98
+
99
+ #include <boost/type_traits/remove_reference.hpp>
100
+
101
+ namespace boost {
102
+
103
+ //! This trait's internal boolean `value` is false in compilers with rvalue references
104
+ //! and true in compilers without rvalue references.
105
+ //!
106
+ //! A user can specialize this trait for a type T to false to SFINAE out `move` and `forward`
107
+ //! so that the user can define a different move emulation for that type in namespace boost
108
+ //! (e.g. another Boost library for its types) and avoid any overload ambiguity.
109
+ template<class T>
110
+ struct enable_move_utility_emulation
111
+ {
112
+ static const bool value = false;
113
+ };
114
+
115
+ //////////////////////////////////////////////////////////////////////////////
116
+ //
117
+ // move
118
+ //
119
+ //////////////////////////////////////////////////////////////////////////////
120
+
121
+ #if defined(BOOST_MOVE_DOXYGEN_INVOKED)
122
+ //! This function provides a way to convert a reference into a rvalue reference
123
+ //! in compilers with rvalue references. For other compilers converts T & into
124
+ //! <i>::boost::rv<T> &</i> so that move emulation is activated.
125
+ template <class T>
126
+ rvalue_reference move (input_reference);
127
+
128
+ #elif defined(BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES)
129
+
130
+ //Old move approach, lvalues could bind to rvalue references
131
+ template <class T>
132
+ inline typename remove_reference<T>::type && move(T&& t)
133
+ { return t; }
134
+
135
+ #else //BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES
136
+
137
+ template <class T>
138
+ inline typename remove_reference<T>::type && move(T&& t)
139
+ { return static_cast<typename remove_reference<T>::type &&>(t); }
140
+
141
+ #endif //BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES
142
+
143
+ //////////////////////////////////////////////////////////////////////////////
144
+ //
145
+ // forward
146
+ //
147
+ //////////////////////////////////////////////////////////////////////////////
148
+
149
+
150
+ #if defined(BOOST_MOVE_DOXYGEN_INVOKED)
151
+ //! This function provides limited form of forwarding that is usually enough for
152
+ //! in-place construction and avoids the exponential overloading for
153
+ //! achieve the limited forwarding in C++03.
154
+ //!
155
+ //! For compilers with rvalue references this function provides perfect forwarding.
156
+ //!
157
+ //! Otherwise:
158
+ //! * If input_reference binds to const ::boost::rv<T> & then it output_reference is
159
+ //! ::boost::rv<T> &
160
+ //!
161
+ //! * Else, output_reference is equal to input_reference.
162
+ template <class T> output_reference forward(input_reference);
163
+ #elif defined(BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES)
164
+
165
+ //Old move approach, lvalues could bind to rvalue references
166
+
167
+ template <class T>
168
+ inline T&& forward (typename ::boost::move_detail::identity<T>::type&& t)
169
+ { return t; }
170
+
171
+ #else //Old move
172
+
173
+ //Implementation #5 from N2951, thanks to Howard Hinnant
174
+
175
+ template <class T, class U>
176
+ inline T&& forward(U&& t
177
+ , typename ::boost::move_detail::enable_if_c<
178
+ move_detail::is_lvalue_reference<T>::value ? move_detail::is_lvalue_reference<U>::value : true>::type * = 0/*
179
+ , typename ::boost::move_detail::enable_if_c<
180
+ move_detail::is_convertible
181
+ <typename remove_reference<U>::type*, typename remove_reference<T>::type*>::value>::type * = 0*/)
182
+ { return static_cast<T&&>(t); }
183
+
184
+ #endif //BOOST_MOVE_DOXYGEN_INVOKED
185
+
186
+ } //namespace boost {
187
+
188
+ #endif //#if defined(BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE)
189
+
190
+ #endif //BOOST_NO_CXX11_RVALUE_REFERENCES
191
+
192
+ #include <boost/move/detail/config_end.hpp>
193
+
194
+ #endif //#ifndef BOOST_MOVE_MOVE_UTILITY_HPP
@@ -10,9 +10,9 @@
10
10
  //
11
11
  // See http://www.boost.org/libs/mpl for documentation.
12
12
 
13
- // $Id: assert.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
14
- // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
15
- // $Revision: 49267 $
13
+ // $Id: assert.hpp 84442 2013-05-23 14:38:22Z steven_watanabe $
14
+ // $Date: 2013-05-23 07:38:22 -0700 (Thu, 23 May 2013) $
15
+ // $Revision: 84442 $
16
16
 
17
17
  #include <boost/mpl/not.hpp>
18
18
  #include <boost/mpl/aux_/value_wknd.hpp>
@@ -34,6 +34,9 @@
34
34
  #include <boost/config.hpp> // make sure 'size_t' is placed into 'std'
35
35
  #include <cstddef>
36
36
 
37
+ #if BOOST_WORKAROUND(BOOST_MSVC, == 1700)
38
+ #include <boost/mpl/if.hpp>
39
+ #endif
37
40
 
38
41
  #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
39
42
  || (BOOST_MPL_CFG_GCC != 0) \
@@ -131,8 +134,38 @@ template< assert_::relations r, long x, long y > struct assert_relation {};
131
134
 
132
135
  #endif
133
136
 
137
+ #if BOOST_WORKAROUND(BOOST_MSVC, >= 1700)
138
+
139
+ template<class Pred>
140
+ struct extract_assert_pred;
141
+
142
+ template<class Pred>
143
+ struct extract_assert_pred<void(Pred)> { typedef Pred type; };
144
+
145
+ template<class Pred>
146
+ struct eval_assert {
147
+ typedef typename extract_assert_pred<Pred>::type P;
148
+ typedef typename P::type p_type;
149
+ typedef typename ::boost::mpl::if_c<p_type::value,
150
+ AUX778076_ASSERT_ARG(assert<false>),
151
+ failed ************ P::************
152
+ >::type type;
153
+ };
154
+
155
+ template<class Pred>
156
+ struct eval_assert_not {
157
+ typedef typename extract_assert_pred<Pred>::type P;
158
+ typedef typename P::type p_type;
159
+ typedef typename ::boost::mpl::if_c<!p_type::value,
160
+ AUX778076_ASSERT_ARG(assert<false>),
161
+ failed ************ ::boost::mpl::not_<P>::************
162
+ >::type type;
163
+ };
164
+
165
+ template< typename T >
166
+ T make_assert_arg();
134
167
 
135
- #if !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
168
+ #elif !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
136
169
 
137
170
  template< bool > struct assert_arg_pred_impl { typedef int type; };
138
171
  template<> struct assert_arg_pred_impl<true> { typedef void* type; };
@@ -211,6 +244,39 @@ assert_rel_arg( assert_relation<r,x,y> );
211
244
 
212
245
  BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
213
246
 
247
+ #if BOOST_WORKAROUND(BOOST_MSVC, == 1700)
248
+
249
+ // BOOST_MPL_ASSERT((pred<x,...>))
250
+
251
+ #define BOOST_MPL_ASSERT(pred) \
252
+ BOOST_MPL_AUX_ASSERT_CONSTANT( \
253
+ std::size_t \
254
+ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
255
+ boost::mpl::assertion_failed<false>( \
256
+ boost::mpl::make_assert_arg< \
257
+ typename boost::mpl::eval_assert<void pred>::type \
258
+ >() \
259
+ ) \
260
+ ) \
261
+ ) \
262
+ /**/
263
+
264
+ // BOOST_MPL_ASSERT_NOT((pred<x,...>))
265
+
266
+ #define BOOST_MPL_ASSERT_NOT(pred) \
267
+ BOOST_MPL_AUX_ASSERT_CONSTANT( \
268
+ std::size_t \
269
+ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
270
+ boost::mpl::assertion_failed<false>( \
271
+ boost::mpl::make_assert_arg< \
272
+ typename boost::mpl::eval_assert_not<void pred>::type \
273
+ >() \
274
+ ) \
275
+ ) \
276
+ ) \
277
+ /**/
278
+
279
+ #else
214
280
 
215
281
  // BOOST_MPL_ASSERT((pred<x,...>))
216
282
 
@@ -250,6 +316,8 @@ BOOST_MPL_AUX_ASSERT_CONSTANT( \
250
316
  /**/
251
317
  #endif
252
318
 
319
+ #endif
320
+
253
321
  // BOOST_MPL_ASSERT_RELATION(x, ==|!=|<=|<|>=|>, y)
254
322
 
255
323
  #if defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
@@ -9,6 +9,8 @@
9
9
  #ifndef BOOST_NONCOPYABLE_HPP_INCLUDED
10
10
  #define BOOST_NONCOPYABLE_HPP_INCLUDED
11
11
 
12
+ #include <boost/config.hpp>
13
+
12
14
  namespace boost {
13
15
 
14
16
  // Private copy constructor and copy assignment ensure classes derived from
@@ -21,11 +23,21 @@ namespace noncopyable_ // protection from unintended ADL
21
23
  class noncopyable
22
24
  {
23
25
  protected:
24
- noncopyable() {}
26
+ #ifndef BOOST_NO_DEFAULTED_FUNCTIONS
27
+ BOOST_CONSTEXPR noncopyable() = default;
28
+ ~noncopyable() = default;
29
+ #else
30
+ noncopyable() {}
25
31
  ~noncopyable() {}
26
- private: // emphasize the following members are private
32
+ #endif
33
+ #ifndef BOOST_NO_DELETED_FUNCTIONS
34
+ noncopyable( const noncopyable& ) = delete;
35
+ noncopyable& operator=( const noncopyable& ) = delete;
36
+ #else
37
+ private: // emphasize the following members are private
27
38
  noncopyable( const noncopyable& );
28
- const noncopyable& operator=( const noncopyable& );
39
+ noncopyable& operator=( const noncopyable& );
40
+ #endif
29
41
  };
30
42
  }
31
43