Yedidya Feldblum [Fri, 21 Jul 2017 08:44:43 +0000 (01:44 -0700)]
Apply clang-format to folly/experimental/io/
Summary: [Folly] Apply `clang-format` to `folly/experimental/io/`.
Reviewed By: Orvid
Differential Revision:
D5460571
fbshipit-source-id:
d19aff829316dd277e65620196e12db8cad46787
Yedidya Feldblum [Fri, 21 Jul 2017 07:20:14 +0000 (00:20 -0700)]
Style tweaks to max_align_v calculation
Summary:
[Folly] Style tweaks to `max_align_v` calculation.
* Change ns from `folly::detail` since that can be crowded and many other folly libraries may include this header.
* Extract a 2-param `max` alias.
* Fix an incorrectly hardcoded `size_t`.
Reviewed By: WillerZ
Differential Revision:
D5468758
fbshipit-source-id:
14a3f67323020a3cfce2b3b46f5f64f3e6125027
Yedidya Feldblum [Fri, 21 Jul 2017 02:29:51 +0000 (19:29 -0700)]
Apply clang-format to folly/tracing/
Summary: [Folly] Apply `clang-format` to `folly/tracing/`.
Reviewed By: Orvid
Differential Revision:
D5460511
fbshipit-source-id:
c7a7d34211044a1b76934f184a8552a96d0bad91
Yedidya Feldblum [Fri, 21 Jul 2017 02:29:14 +0000 (19:29 -0700)]
Parse suffixes without switch-fallthrough in huge-pages
Summary: [Folly] Parse suffixes without switch-fallthrough in huge-pages. It is clever, but weird. We can use an immediately-executed lambda expression to make it convenient.
Reviewed By: Orvid
Differential Revision:
D5467585
fbshipit-source-id:
02ddb97641db97e38e3f40388ecc522eccd436cb
Yedidya Feldblum [Thu, 20 Jul 2017 23:52:28 +0000 (16:52 -0700)]
Apply clang-format to folly/experimental/bser/
Summary: [Folly] Apply `clang-format` to `folly/experimental/bser/`.
Reviewed By: Orvid
Differential Revision:
D5460552
fbshipit-source-id:
e103f8920eb29b7c14688f5bbb3e28129ef35e96
Yedidya Feldblum [Thu, 20 Jul 2017 22:10:41 +0000 (15:10 -0700)]
Drop a remnant of gcc48 support in futures
Summary: [Folly] Drop a remnant of gcc48 support in futures. Because gcc48 is no longer supported.
Reviewed By: Orvid, meyering
Differential Revision:
D5460788
fbshipit-source-id:
86e2985a0980357641d18f59fd25b9667ec30ab0
Jeff Cai [Thu, 20 Jul 2017 20:09:10 +0000 (13:09 -0700)]
fix ExceptionWrapper comment
Summary:
Fix comment for exception_wrapper's `operator bool()`.
It reads "return `true` if `*this` is not holding an exception"
but the actual behavior is to return `true` if `*this` *is* holding
an exception.
Reviewed By: yfeldblum
Differential Revision:
D5456386
fbshipit-source-id:
ec3a472ea441476d835881e94036a3957bb2ab32
Phil Willoughby [Thu, 20 Jul 2017 12:28:49 +0000 (05:28 -0700)]
Introduce folly::max_align_t and folly::max_align_v
Summary:
`folly::max_align_t` is a portable replacement for `std::max_align_t`.
`folly::max_align_v` is a `constexpr size_t` with the same value as `alignof(folly::max_align_t)`
32-bit iOS environments have `alignof(std::max_align_t) == 4`, which is not correct. This is more
correct in that I have not yet found a more-aligned basic type.
Reviewed By: yfeldblum
Differential Revision:
D5442333
fbshipit-source-id:
0a93e48a730d65ef76e04f132b5976c93587b14c
Subodh Iyengar [Thu, 20 Jul 2017 11:51:25 +0000 (04:51 -0700)]
Add folly non null
Summary:
Add non null annotation to
folly to help with linters
complaining when a pointer could
be null, however it never is.
Reviewed By: yfeldblum
Differential Revision:
D5453255
fbshipit-source-id:
cf7ccbcc86d171ef4f6d373b6f751f709e4587b1
Yedidya Feldblum [Thu, 20 Jul 2017 08:59:24 +0000 (01:59 -0700)]
Move futures helper types into folly::futures::detail
Summary:
[Folly] Move futures helper types into `folly::futures::detail`.
From `folly::detail`, where it would be easier to collide. Especially for names like `Core`.
Reviewed By: WillerZ
Differential Revision:
D5460766
fbshipit-source-id:
3f7bff784bbb89c7c86d2f1824323d71321c7ad6
Benjamin Reesman [Thu, 20 Jul 2017 07:08:50 +0000 (00:08 -0700)]
do not crash process by default when ExceptionTracer fails to reflect over cxxabi
Summary: It is possible in certain cirucmstances for the cxxabi reflection code in `ExceptionTracer` to fail to cope with exceptions that we've seen in production and it currently aborts the process in that case. This diff switches this to `DFATAL`/`DCHECK`.
Reviewed By: yfeldblum
Differential Revision:
D5431445
fbshipit-source-id:
c3d68372c2fadbb518f78fe99e817db611953d22
Tom Jackson [Thu, 20 Jul 2017 00:22:27 +0000 (17:22 -0700)]
Visit, for monitoring or mutating pipelines
Summary: The pattern `mapped([](auto&& i) { ...; return std::move(i); }` is quite common. Evidently people need some good mechanism to just observe or possibly mutate items in pipelines. Note that this is still lazy, it is only called when the pipeline is run.
Reviewed By: yfeldblum
Differential Revision:
D5457196
fbshipit-source-id:
3a892b8895e02dd8fcd6a7fd4d3b27063d1b071f
Victor Gao [Wed, 19 Jul 2017 23:24:54 +0000 (16:24 -0700)]
change the definition of FOLLY_MAYBE_UNUSED
Summary:
Currently gcc does not support attributes declared using square brackets well and some builds might break because of this.
Since `__attribute__((...))` works for both clang and gcc, we should switch to it for now.
Reviewed By: yfeldblum
Differential Revision:
D5456734
fbshipit-source-id:
d7a8bf1389afc5d60604f22d37c93611dc46259c
Dave Watson [Wed, 19 Jul 2017 20:47:15 +0000 (13:47 -0700)]
3-way crc32c
Summary: Current folly version uses a single crc32c. crc32c has a latency of 3, so pipelining three in a row makes it nearly 3x faster (for data all in cache).
Reviewed By: yfeldblum
Differential Revision:
D5418228
fbshipit-source-id:
d3a250e1b4fe1f0bc99b44c660df94cf233aebd6
Xiangyu Bu [Wed, 19 Jul 2017 19:24:46 +0000 (12:24 -0700)]
Add SSLOptions to Makefile.am.
Summary: Add paths of SSLOptions.{cpp, h} to folly/Makefile.am.
Reviewed By: Orvid
Differential Revision:
D5453343
fbshipit-source-id:
ba0b8b065ed964dfff1757533db17e31aa672e83
Eli Lindsey [Wed, 19 Jul 2017 15:51:26 +0000 (08:51 -0700)]
append the interface index instead of throwing an exception when the scope id lookup fails
Summary: As written, this str() method depends on the current state of the host - if an interface disappears (as is commong with eg. mobile, ipsec, etc.) then attempting to generate a string representation of this v6 address will currently throw an exception. Instead, we're going toignore the lookup failure and append the index i; this form is interchangeable, though slightly less legible.
Reviewed By: yfeldblum
Differential Revision:
D5443618
fbshipit-source-id:
bbd3b4edaee8098671140af7400377d5e2b1937b
Dave Watson [Wed, 19 Jul 2017 13:24:33 +0000 (06:24 -0700)]
AtomicCoreCachedSharedPtr
Summary: A folly::atomic_shared_ptr version of CoreCachedSharedPtr.
Reviewed By: yfeldblum
Differential Revision:
D5389603
fbshipit-source-id:
942700cd66f5f5219418f4c6112146dc40351aa0
Christopher Dykes [Tue, 18 Jul 2017 22:52:33 +0000 (15:52 -0700)]
Support if_indextoname in the socket portability header
Summary: Windows doesn't have `net/if.h` and instead needs `iphlpapi.h` included, and `ntddndis.h` is ultimately needed to get the definition of `IF_NAMESIZE`.
Reviewed By: yfeldblum
Differential Revision:
D5438188
fbshipit-source-id:
48a786f7d10ca4b8479bb20b257ed1e857431654
Victor Gao [Tue, 18 Jul 2017 20:19:24 +0000 (13:19 -0700)]
add FOLLY_MAYBE_UNUSED
Summary: This adds a macro `FOLLY_MAYBE_UNUSED` in `folly/CppAttributes.h` that can be used to suppress `-Wunused` warnings.
Reviewed By: yfeldblum
Differential Revision:
D5444742
fbshipit-source-id:
b16e8efefd76282498ad6114bac9548064cf38d5
Xiangyu Bu [Tue, 18 Jul 2017 19:27:32 +0000 (12:27 -0700)]
Functions to set common ciphers and sig algs for SSLContext.
Summary:
This diff contains some helper functions that set a `SSLContext` object with recommended
lists of ciphers and signature algorithms for given scenarios. In addition, DES and CHACHA are removed from the cipher list.
Reviewed By: yfeldblum
Differential Revision:
D5373599
fbshipit-source-id:
04de11fe90cac734caa12a80e56f70532803f94e
Christopher Dykes [Tue, 18 Jul 2017 17:01:30 +0000 (10:01 -0700)]
Ensure the allocator types in the string keyed tests have value_types matching the value type of the collection
Summary:
Because MSVC's standard library implementation is now checking that this is actually the case:
```
error C2338: set<T, Compare, Allocator> requires that Allocator's value_type match T (See N4659 26.2.1 [container.requirements.general]/16 allocator_type) Either fix the allocator value_type or define _ENFORCE_MATCHING_ALLOCATORS=0 to suppress this diagnostic.
```
I've gone with the "Fix the `value_type`" approach.
Reviewed By: yfeldblum
Differential Revision:
D5441017
fbshipit-source-id:
b30403d2e48f815177cac29c4e6eec4e79583660
Phil Willoughby [Tue, 18 Jul 2017 10:14:07 +0000 (03:14 -0700)]
Relax alignment restriction in CachelinePadded
Summary: 32-bit iOS environments were triggering the previous condition with LifoSem.
Reviewed By: yfeldblum
Differential Revision:
D5442057
fbshipit-source-id:
64ee32b4ad35150c7f295a2a30bbede8fa13e79e
Christopher Dykes [Tue, 18 Jul 2017 01:59:11 +0000 (18:59 -0700)]
Add support for tagging a test as BROKEN in the CMake build
Summary: Also use it to disable function_test and indexed_mem_pool_test for now while the source of their breakage is being investigated.
Reviewed By: yfeldblum
Differential Revision:
D5440415
fbshipit-source-id:
630c884ccd2db660bfc3e4529a2d35941d3bd0d3
Dan Melnic [Tue, 18 Jul 2017 01:50:41 +0000 (18:50 -0700)]
Lua exception handling test
Summary: Lua exception handling test - start with the failing test first - code from
D5431445
Reviewed By: yfeldblum
Differential Revision:
D5432254
fbshipit-source-id:
87f5934f28ac6ef7b55314acb3c150b9ccf6c799
Christopher Dykes [Mon, 17 Jul 2017 22:47:32 +0000 (15:47 -0700)]
Don't build the async signal handler test on Windows
Summary: `AsyncSignalHandler` is not currently supported on Windows, so we shouldn't be attempting to build it.
Reviewed By: yfeldblum
Differential Revision:
D5437276
fbshipit-source-id:
b3f281bfc501444bb22056860ee785a2beb9b671
Tommy Nguyen [Mon, 17 Jul 2017 20:03:48 +0000 (13:03 -0700)]
Use more libstdc++ specific macro
Summary:
- The __GNUC__ macro is used by other compilers like Clang and
ICC, but ext/stdio_filebuf.h is a libstdc++ only extension.
fixes #636
Closes https://github.com/facebook/folly/pull/637
Reviewed By: yfeldblum
Differential Revision:
D5434532
Pulled By: Orvid
fbshipit-source-id:
ce4f966a74aa9f82ae907c67807ac87ec1588173
Christopher Dykes [Mon, 17 Jul 2017 19:57:29 +0000 (12:57 -0700)]
Enable a couple of AsyncFileWriter tests on Windows
Summary:
There is no longer anything keeping them from working on Windows.
Except for that `signal(SIGPIPE, SIG_IGN)` call; that has to stay disabled.
Reviewed By: simpkins
Differential Revision:
D5308007
fbshipit-source-id:
74a392cf484404f41a6c51e50b5a9e6fbd05b4a9
Yedidya Feldblum [Mon, 17 Jul 2017 05:07:08 +0000 (22:07 -0700)]
Let exception_wrapper::handle, when empty, show the right error message
Summary:
[Folly] Let `exception_wrapper::handle`, when empty, show the right error message.
The error message currently says that `throw_exception` cannot be called on an empty `exception_wrapper`, but should say that `handle` cannot be called on an empty `exception_wrapper`.
Reviewed By: Orvid
Differential Revision:
D5432380
fbshipit-source-id:
ffa69c7675ee332e596e861e59ea273c39fc4717
Yedidya Feldblum [Mon, 17 Jul 2017 04:23:33 +0000 (21:23 -0700)]
CodeMod: Prefer ADD_FAILURE() over EXPECT_TRUE(false), et cetera
Summary:
CodeMod: Prefer `ADD_FAILURE()` over `EXPECT_TRUE(false)`, et cetera.
The tautologically-conditioned and tautologically-contradicted boolean expectations/assertions have better alternatives: unconditional passes and failures.
Reviewed By: Orvid
Differential Revision:
D5432398
Tags: codemod, codemod-opensource
fbshipit-source-id:
d16b447e8696a6feaa94b41199f5052226ef6914
Christopher Dykes [Sat, 15 Jul 2017 07:48:16 +0000 (00:48 -0700)]
Use long long for the 64-bit fingerprint table
Summary: Because these are always 64-bit values. This hasn't actually been an issue but is the correct thing to do.
Reviewed By: yfeldblum
Differential Revision:
D5425658
fbshipit-source-id:
5bc204b3d1af2c710bd8b1665211d2971ccf7be7
Christopher Dykes [Fri, 14 Jul 2017 22:59:17 +0000 (15:59 -0700)]
Replace all includes of pthread.h with the portability header
Summary: It is a non-portable include as it is include-order sensitive.
Reviewed By: yfeldblum
Differential Revision:
D5427885
fbshipit-source-id:
50850064fc8fa3ed6f8fc235f31edbda4144663c
Christopher Dykes [Fri, 14 Jul 2017 22:17:31 +0000 (15:17 -0700)]
Switch future's Core<T> to std::is_nothrow_constructible
Summary:
MSVC has issues with the way it was written, so just use the standard version instead.
Upstream bug report: https://developercommunity.visualstudio.com/content/problem/80433/incorrect-error-c2462-cannot-define-a-type-in-a-ne.html
Reviewed By: yfeldblum
Differential Revision:
D5427029
fbshipit-source-id:
ae3737175d5b8e9738ed6b9573412d1d566b0e1c
Christopher Dykes [Fri, 14 Jul 2017 18:07:28 +0000 (11:07 -0700)]
Add an sfmt19937 benchmark (again)
Summary: `__gnu_cxx::sfmt19937` is 3.5x faster than `std::mt19937` according to the benchmark.
Reviewed By: yfeldblum
Differential Revision:
D5410705
fbshipit-source-id:
d503544a0b9b1b0c614a27466a297a4e6902fc15
Phil Willoughby [Fri, 14 Jul 2017 17:44:50 +0000 (10:44 -0700)]
Re-align LifoSem
Summary:
Previously it generated a warning if compiled with -Wover-align because its alignment exceeded alignof(std::max_align_t).
This also meant that heap-allocated LifoSem objects were not guaranteed to be on their own cache-line, potentially degrading performance.
This change adds padding before the important part of the LifoSem (to match the existing after-padding) and reduces its alignment requirement.
Reviewed By: yfeldblum
Differential Revision:
D5380700
fbshipit-source-id:
7fdd593a58a2e0c7b03df11152ee4bb66f57e717
Christopher Dykes [Fri, 14 Jul 2017 17:29:54 +0000 (10:29 -0700)]
Fix building the stl_vector tests with -Wshadow-compatible-local
Summary: It was shadowing locals.
Reviewed By: yfeldblum
Differential Revision:
D5422356
fbshipit-source-id:
91da6fcf0b2ea3821394068e9847976e04f43ca9
Eli Lindsey [Fri, 14 Jul 2017 13:07:12 +0000 (06:07 -0700)]
replace getnameinfo with inet_ntop in v6 string formatting
Summary: Some implementations of getnameinfo are triggering reverse DNS lookups despite us specifying NI_NUMERICHOST. Avoid all that by instead producing our string representations of v6 addresses manually via inet_ntop and if_indextoname.
Reviewed By: yangchi
Differential Revision:
D5415477
fbshipit-source-id:
67853a85db6517d374d94c8261e56400f4c00fc5
Phil Willoughby [Fri, 14 Jul 2017 09:56:14 +0000 (02:56 -0700)]
Update CachelinePadded
Summary:
The C++ standard doesn't guarantee alignment of things bigger than std::max_align_t which is typically 16 bytes. This means that to ensure something is the only thing on a cache-line we need padding on each side of it to exclude anything else.
CachelinePadded<T> will now be larger than it was before, and reinterpret_cast to/from T is no longer valid.
Reviewed By: yfeldblum
Differential Revision:
D5380849
fbshipit-source-id:
20f275c875eb4bede4aef19ac7224913ce9b6d51
Xiangyu Bu [Fri, 14 Jul 2017 00:58:22 +0000 (17:58 -0700)]
Break long lines in SSLContext.
Summary: Break a few long lines in folly::SSLContext.
Reviewed By: yfeldblum
Differential Revision:
D5418517
fbshipit-source-id:
fc2ac310d1f931a1f8a4af077aa5cde347b1042d
Christopher Dykes [Thu, 13 Jul 2017 18:53:11 +0000 (11:53 -0700)]
Fix the build of the socket tests on Windows
Summary: There were references to things that don't exist or have an equivalent on Windows.
Reviewed By: yfeldblum
Differential Revision:
D5099802
fbshipit-source-id:
9a5a2d0e5cb3a33ecad00bf8a2e1c13315a015cc
Christopher Dykes [Thu, 13 Jul 2017 18:50:36 +0000 (11:50 -0700)]
Add support for closing a TemporaryFile early
Summary:
The file itself will still get removed when `TemporaryFile` is destroyed, but closing it before then allows it to be read when on Windows, because `TemporaryFile` opens the temporary file with `O_EXCL`, so Windows denies read access of the file to everything else.
This is needed to fix one of the AsyncFileWriter tests on Windows.
Reviewed By: simpkins
Differential Revision:
D5307719
fbshipit-source-id:
bd65962cc3d34f382cc7b0b55dbf2659ed5ebfce
Christopher Dykes [Thu, 13 Jul 2017 17:57:07 +0000 (10:57 -0700)]
Force string pooling to workaround a codegen bug
Summary:
There are bugs in MSVC's codegen that causes `StringPiece`'s evaluated in a `constexpr` context to have the start pointer point to one copy of the string and the end pointer point to another. Using the `StringPiece` at compile-time is perfectly fine, it just has the wrong values at runtime.
We can work around this issue by enabling string pooling in all modes.
Original bug report:
https://developercommunity.visualstudio.com/content/problem/3216/c-incorrect-data-duplication-in-constexpr-context.html
Reviewed By: yfeldblum
Differential Revision:
D5409753
fbshipit-source-id:
24e2b343209ba7c86d0dd39a1358d0abe9ee6d4d
Ankit Shah [Thu, 13 Jul 2017 17:06:49 +0000 (10:06 -0700)]
Getters and setters for ECDSA_SIG
Summary:
Added getters and setters for ECDSA_SIG to allow for compatibility
between OpenSSL 1.1.0 and 1.0.2
Reviewed By: knekritz
Differential Revision:
D5408934
fbshipit-source-id:
7a3d9df774728c81270cc4da34c75202018e430d
Yedidya Feldblum [Thu, 13 Jul 2017 02:53:53 +0000 (19:53 -0700)]
Sort #include lines
Summary: [Folly] Sort `#include` lines, as required by `clang-format`.
Reviewed By: igorsugak, Orvid
Differential Revision:
D5405153
fbshipit-source-id:
3bb1c2b84271bcf7a195e07680777dbfdd499823
Eli Lindsey [Thu, 13 Jul 2017 00:47:29 +0000 (17:47 -0700)]
Revert
D5408572: replace getnameinfo with inet_ntop in v6 string formatting
Summary: This reverts commit
69b0171a9a54738045f9041381aea5512b17eb13
Differential Revision:
D5408572
fbshipit-source-id:
3ec8ce96575b632fb134be99cc0d2538a01a7d85
Eli Lindsey [Wed, 12 Jul 2017 23:36:57 +0000 (16:36 -0700)]
replace getnameinfo with inet_ntop in v6 string formatting
Summary: Some implementations of getnameinfo are triggering reverse DNS lookups despite us specifying NI_NUMERICHOST. Avoid all that by instead producing our string representations of v6 addresses manually via inet_ntop and if_indextoname.
Differential Revision:
D5408572
fbshipit-source-id:
69b0171a9a54738045f9041381aea5512b17eb13
Mickey Phoenix [Wed, 12 Jul 2017 20:49:10 +0000 (13:49 -0700)]
Fix documentation for folly's to<double>() method's handling of 'NaN' and unparseable inputs
Summary:
The documentation for folly::to<double>()'s handling of unparseable inputs (including "") is incorrect. Additionally, the documentation does not document to<double>()'s handling of the inputs "NaN", "-NaN", "inf", "infinity", "-inf", and "-infinity".
This corrects the documentation.
See https://github.com/facebook/folly/blob/
3272dfdbe243e0ac02acca1dd82bc391d1da079a/folly/docs/Conv.md under the heading "Parsing floating-point types" for the incorrect documentation as rendered.
Reviewed By: yfeldblum
Differential Revision:
D5367656
fbshipit-source-id:
22b38e2bb85d2e647975798360ead39eed6caae8
Tom Jackson [Wed, 12 Jul 2017 18:32:18 +0000 (11:32 -0700)]
Don't use range construction for associative containers in convertTo()
Summary: This avoids having exceptions occur while constructing hashtables.
Reviewed By: ot, yfeldblum
Differential Revision:
D5384419
fbshipit-source-id:
ba2de8cffa46df550bdc62abbe529801249e45cd
Phil Willoughby [Wed, 12 Jul 2017 07:36:17 +0000 (00:36 -0700)]
Improve launder
Summary:
Should now work on GCC-compatible compilers, and all other compilers which don't attempt any inter-TU optimizations.
Moved out of Utility.h because it now requires a supporting .cpp file and some clients presume that Utility.h can be used header-only.
Reviewed By: ot
Differential Revision:
D5381042
fbshipit-source-id:
7e954fed47de4386c85d46a61d56a8fe7fc516f4
Christopher Dykes [Tue, 11 Jul 2017 23:46:22 +0000 (16:46 -0700)]
Revert
D5393697: [Folly] Add an sfmt19937 benchmark
Summary: This reverts commit
bc725838dc7f62d030c7e68bc6d229042df2b46c
Differential Revision:
D5393697
fbshipit-source-id:
4b9ef1e733b0ad73e6deea7ac8a52dfe785b4f2b
Benjamin Renard [Tue, 11 Jul 2017 22:54:24 +0000 (15:54 -0700)]
add helper method to generate same crc32 results as php and boost::crc_32_type
Summary:
This revision adds a helper method in folly/Checksum.h, that returns the same crc32 value as php's built-in implementationa and boost::crc_32_type.
folly's default implementation only differs from the final xor (with 0xFFFFFFFF for boost and php, 0 for folly), which is added here.
Reviewed By: djwatson
Differential Revision:
D5396671
fbshipit-source-id:
14874af2d5a80408c772875142de6e340ce01038
Christopher Dykes [Tue, 11 Jul 2017 20:45:18 +0000 (13:45 -0700)]
Add an sfmt19937 benchmark
Summary: `__gnu_cxx::sfmt19937` is 3.5x faster than `std::mt19937` according to the benchmark.
Reviewed By: yfeldblum
Differential Revision:
D5393697
fbshipit-source-id:
bc725838dc7f62d030c7e68bc6d229042df2b46c
Peter DeLong [Tue, 11 Jul 2017 20:42:46 +0000 (13:42 -0700)]
Allow fiber to be called on both type Fiber and Fiber*
Summary: The fiber command can now be run on a value of type folly::fibers::Fiber or a value of type folly::fibers::Fiber*
Reviewed By: andriigrynenko
Differential Revision:
D5393491
fbshipit-source-id:
1f48e08288f75c59852c939062db616eb06cea73
Giuseppe Ottaviano [Tue, 11 Jul 2017 17:21:38 +0000 (10:21 -0700)]
Use Baton (again) in EventBase::runInEventBaseThreadAndWait
Summary:
`Baton` is more lightweight than a mutex+condition variable, and the code is much simpler. This was actually the original implementation, but the dependency had to be dropped because `Baton` was unsupported on some architectures. That is not a problem anymore.
Also reorganize the includes to follow the conventions.
Reviewed By: andriigrynenko, yfeldblum
Differential Revision:
D5396631
fbshipit-source-id:
d782cf271eb35723aaeb3c372e1c1dafeaaf0f0a
Xiangyu Bu [Tue, 11 Jul 2017 17:00:51 +0000 (10:00 -0700)]
Update providedCiphersStr_ in one place.
Summary:
The function `setCipherList` seems to forget to update the data member
`providedCipherString_`. This diff updates `providedCiphersString_` at
a single place `setCiphersOrThrow()`, and adds two test cases to make
sure the derived `SSL*` uses the desired set of ciphers.
Reviewed By: yfeldblum
Differential Revision:
D5372758
fbshipit-source-id:
8144ab3bc518b2b9fa8090af62f3bd6475bbbece
Yedidya Feldblum [Tue, 11 Jul 2017 08:20:38 +0000 (01:20 -0700)]
Compute masks in IPAddressV6
Summary:
[Folly] Compute masks in `IPAddressV6`.
At runtime, instead of storing a 2Kb masks array in the binary.
Reviewed By: WillerZ, ot
Differential Revision:
D5369901
fbshipit-source-id:
031a4eeda1670021236d8ab97f6e85e753675ae5
Peter DeLong [Tue, 11 Jul 2017 01:22:14 +0000 (18:22 -0700)]
Add function to folly_fibers.py to get the address of a specific fiber from a fiberManager
Summary: Add a fiber_address(fiberManager, index) function so that you can programatically get the address of a given fiber in a fiberManager
Reviewed By: andriigrynenko
Differential Revision:
D5377605
fbshipit-source-id:
b9504f7d253e8f702e9329c6f08ff406d4296a6e
Fred Emmott [Mon, 10 Jul 2017 20:43:13 +0000 (13:43 -0700)]
Add some more OpenSSL 1.1 APIs for folly/portability/
Summary: refs hhvm/packaging#128
Reviewed By: anirudhvr
Differential Revision:
D5380271
fbshipit-source-id:
1cc206d9970b843c3582556096f3ceabeb8d01f6
Eli Lindsey [Mon, 10 Jul 2017 15:54:21 +0000 (08:54 -0700)]
add the getnameinfo error code and v6 scope id to exception text
Summary: Making the exception text more useful by adding getnameinfo's error code and the v6 scope id
Reviewed By: yangchi
Differential Revision:
D5389137
fbshipit-source-id:
e6b9b4edd7dd1859e0ed4d784b2f89a60a701955
Yedidya Feldblum [Sun, 9 Jul 2017 03:59:42 +0000 (20:59 -0700)]
In-place construction for Future
Summary:
[Folly] In-place construction for `Future`.
Using `in_place` as the first argument. Avoid constructing a contained object and then moving it into the `Future`, which may be more expensive, by providing an unambiguous way to specify perfect forwarding.
And a matching overload of `makeFuture` for no particularly good reason.
Differential Revision:
D5362324
fbshipit-source-id:
e612965f34ed0fae5fac17db631f7eab9984c696
Alan Frindell [Sat, 8 Jul 2017 04:06:02 +0000 (21:06 -0700)]
Option to set thread name for EventBaseThread
Summary: as in title
Reviewed By: yfeldblum
Differential Revision:
D5382995
fbshipit-source-id:
87534e6092f167399943287182ec61ae21e608c6
Eric Niebler [Fri, 7 Jul 2017 23:31:31 +0000 (16:31 -0700)]
make FunctionRef constexpr on compilers that support it
Summary:
`constexpr` All The Things! Although only very recent versions of modern compilers support this, FunctionRef can and should be `constexpr` (demonstration here: https://godbolt.org/g/NJ72RG).
This change also changes the `FunctionRef` constructor such that it no longer participates in overload resolution if the argument is not callable with the specified arguments. In addition, it perfectly forwards the callable object such that if it was an rvalue when it was passed to the constructor, it will be invoked as an rvalue in `operator()`.
Reviewed By: yfeldblum
Differential Revision:
D5366720
fbshipit-source-id:
bc64053213478aab5a5bd5950c7b2d6f364d86bd
Jiahao Li [Fri, 7 Jul 2017 19:22:51 +0000 (12:22 -0700)]
Adds `make_mock` to `folly::LeakySingleton`.
Summary:
Provides a `make_mock` interface to `folly::LeakySingleton` for unit test
mocking.
Reviewed By: andriigrynenko
Differential Revision:
D5382003
fbshipit-source-id:
9ab81dd64703f4f02772bfb8c85e020680abcc85
Christopher Dykes [Fri, 7 Jul 2017 09:59:14 +0000 (02:59 -0700)]
Determine noexcept'ness of folly::Optional with std::is_nothrow_constructible
Summary: Because MSVC is not happy about how it's written now.
Reviewed By: yfeldblum
Differential Revision:
D5378740
fbshipit-source-id:
8b77d1a05da75b331e0cb72bd0ad859b89e54b36
Christopher Dykes [Thu, 6 Jul 2017 19:33:46 +0000 (12:33 -0700)]
Define OPENSSL_NO_SSL2 under OpenSSL 1.1.0
Summary: OpenSSL 1.1.0 drops support for SSLv2, and in doing so also removes the define that user-code used to guard on whether SSLv2 was supported. This adds the define to the portability header to indicate SSLv2 is not supported.
Reviewed By: anirudhvr
Differential Revision:
D5376869
fbshipit-source-id:
04708db138dc13e7747cfff582f4cfed291648b3
Phil Willoughby [Thu, 6 Jul 2017 07:09:18 +0000 (00:09 -0700)]
launder
Summary: Backport C++17's `std::launder`.
Reviewed By: yfeldblum, ot
Differential Revision:
D5370531
fbshipit-source-id:
b7cc6701d082b6c4855fa77bb644e151ce882deb
Adam Simpkins [Wed, 5 Jul 2017 19:56:00 +0000 (12:56 -0700)]
fix double comparison in histogram test
Summary:
The TestDoubleWidthTooBig test was performing an exact equality check on
two double values. This equality check fails when run on 32-bit
platforms.
Replace the EXPECT_EQ() check with EXPECT_NEAR(), and simply check that
the two values do not differ by more than 1e-14.
Reviewed By: Orvid
Differential Revision:
D652767
fbshipit-source-id:
7bf7ed560a4180a2e2d07a6050d1df18e18d1eea
Adam Simpkins [Wed, 5 Jul 2017 17:48:49 +0000 (10:48 -0700)]
logging: fix compiler compatibility for one more constexpr function
Summary:
Update LogLevel's operator+() to consist only of a single return statement.
This is required for pre-C++14 compiler support.
Reviewed By: yfeldblum
Differential Revision:
D5368256
fbshipit-source-id:
9ecbcde5edd1d0b3e7580d6263ad926e44908219
Yedidya Feldblum [Wed, 5 Jul 2017 16:38:08 +0000 (09:38 -0700)]
Promise<T>::makeEmpty() and Future<T>::makeEmpty()
Summary:
[Folly] `Promise<T>::makeEmpty()` and `Future<T>::makeEmpty()`.
These can currently be done by creating, and then moving away from, regular promises and futures. But that allocates; this is semantically equivalent but more efficient.
Differential Revision:
D5368339
fbshipit-source-id:
de054cfc75c701c5d39aac64d9a2949cd34b1896
Jim Meyering [Wed, 5 Jul 2017 06:56:54 +0000 (23:56 -0700)]
folly/futures/detail/Core.h: avoid FP from clang's -Wconditional-uninitialized
Summary:
Avoid this false positive from clang:
folly/futures/detail/Core.h:369:15: error: variable 'priority' may be uninitialized when used here [-Werror,-Wconditional-uninitialized]
Reviewed By: yfeldblum
Differential Revision:
D5369916
fbshipit-source-id:
49649417d1b799cc3945cba456b42ab438ad2ddc
Yedidya Feldblum [Tue, 4 Jul 2017 05:28:37 +0000 (22:28 -0700)]
Apply clang-format to folly/stats/
Summary: [Folly] Apply clang-format to `folly/stats/`.
Reviewed By: Orvid
Differential Revision:
D5366745
fbshipit-source-id:
3b7419d4ab4c6203693603722cd8e707741d3953
Yedidya Feldblum [Tue, 4 Jul 2017 03:01:32 +0000 (20:01 -0700)]
Apply clang-format to folly/ssl/
Summary: [Folly] Apply `clang-format` to `folly/ssl/`.
Reviewed By: Orvid
Differential Revision:
D5366760
fbshipit-source-id:
ad4ec0570050f80d69c78626906e18b5892a999f
Yedidya Feldblum [Tue, 4 Jul 2017 02:41:36 +0000 (19:41 -0700)]
Apply clang-format to folly/concurrency/
Summary: [Folly] Apply `clang-format` to `folly/concurrency/`.
Reviewed By: Orvid
Differential Revision:
D5366946
fbshipit-source-id:
2c9de7c4d8534e02c367fd235fb1ea943ba0539e
Yedidya Feldblum [Tue, 4 Jul 2017 01:57:07 +0000 (18:57 -0700)]
Extract the namespace choice in FBString.h
Summary:
[Folly] Extract the namespace choice in `FBString.h`.
The funny `namespace` bits confuse `clang-format`, so let us remove the confusion.
Reviewed By: ot, Orvid
Differential Revision:
D5367299
fbshipit-source-id:
efca65fecc70076829c14e31a835bc91f3efb4a4
Yedidya Feldblum [Tue, 4 Jul 2017 00:52:24 +0000 (17:52 -0700)]
Apply clang-format to folly/io/ (namespace)
Summary: [Folly] Apply `clang-format` to `folly/io/` (namespace).
Reviewed By: Orvid, terrelln
Differential Revision:
D5366477
fbshipit-source-id:
b4efcdc66c62885f5574b2940e5138590710deae
Christopher Dykes [Tue, 4 Jul 2017 00:32:55 +0000 (17:32 -0700)]
Fix tests in CMake build
Summary: The fix for this didn't get made before the commit landed.
Reviewed By: yfeldblum
Differential Revision:
D5367593
fbshipit-source-id:
4ed9c781121d1b23db11d75d0f8d017d1d8663d9
Christopher Dykes [Mon, 3 Jul 2017 22:15:31 +0000 (15:15 -0700)]
Fix build of SysUio portability header
Summary: When I moved the change internally, I failed to add the `#include` that was required :(
Reviewed By: yfeldblum
Differential Revision:
D5366037
fbshipit-source-id:
7ddf8fc0b7a0468d0831e886d8025c1893f7f8ae
Eric Niebler [Mon, 3 Jul 2017 21:13:27 +0000 (14:13 -0700)]
constexpr the Unit comparison ops
Summary: `constexpr` All The Things!
Reviewed By: Orvid
Differential Revision:
D5364910
fbshipit-source-id:
11abeb8adc38aef3ac4f2596ecf0f533b9e74203
Yedidya Feldblum [Mon, 3 Jul 2017 20:20:29 +0000 (13:20 -0700)]
For futures::retrying, detect policy type using std::result_of
Summary:
[Folly] For `futures::retrying`, detect policy type using `std::result_of`.
`FOLLY_CREATE_HAS_MEMBER_FN_TRAITS` does not work in all cases. For example, it does not work with inherited members.
And it is not really what we want, anyway, which is to dispatch based on the result type of invoking the policy with a particular set of arguments. We can do that more directly using `std::result_of`. And if we did not have `std::result_of`, then we could do that with SFINAE directly.
Reviewed By: WillerZ
Differential Revision:
D5361808
fbshipit-source-id:
23f969dfd6dbaaa944dc2288e70c3ea11d3398f0
Phil Willoughby [Mon, 3 Jul 2017 12:55:21 +0000 (05:55 -0700)]
Content-conversion constructors for Future
Summary:
Allows you to construct a `Future<A>` from a `Future<B>` if A can be constructed from `B&&`.
The constructor is `implicit` if and only if `B&&` is convertible to `A`.
This is the same philosophy as Optional, and has the same use-cases.
Reviewed By: yfeldblum
Differential Revision:
D5264185
fbshipit-source-id:
e2fae373ab549c186a69dc5f4e32481ef7b11bba
Christopher Dykes [Mon, 3 Jul 2017 04:20:10 +0000 (21:20 -0700)]
Replace folly::asm_pause with folly::asm_volatile_pause
Summary: There is no difference, as the statements are already implicitly volatile.
Reviewed By: yfeldblum
Differential Revision:
D5363491
fbshipit-source-id:
ab5bb878f5ca72aa0de96f82e345213729c071e2
Yedidya Feldblum [Sun, 2 Jul 2017 17:22:35 +0000 (10:22 -0700)]
In-place construction for Try
Summary:
[Folly] In-place construction for `Try`.
Using `in_place` as the first argumenbt. Avoid move operations.
Reviewed By: Orvid
Differential Revision:
D5362568
fbshipit-source-id:
5c2aaf5dba1253c59e384940add411f0f2b570b2
Yedidya Feldblum [Sun, 2 Jul 2017 17:22:33 +0000 (10:22 -0700)]
In-place construction for Optional
Summary:
[Folly] In-place construction for `Optional`.
Using `in_place` as the first argument. Avoid move operations.
Reviewed By: Orvid, ot
Differential Revision:
D5362563
fbshipit-source-id:
771db2556842d5dec35d1bf2ad6c23358a417d54
Yedidya Feldblum [Sun, 2 Jul 2017 17:22:31 +0000 (10:22 -0700)]
Move in_place and friends to Utility.h
Summary:
[Folly] Move `in_place` and friends to `Utility.h`.
Document that they are backports from C++17.
Reviewed By: Orvid
Differential Revision:
D5362364
fbshipit-source-id:
495cb7f339fc558f20d89100c141fc7a243239d5
Yedidya Feldblum [Sun, 2 Jul 2017 17:22:29 +0000 (10:22 -0700)]
Remove construct_in_place
Summary:
[Folly] Remove `construct_in_place`.
It is an alias for `in_place`, and unnecessary.
Reviewed By: Orvid
Differential Revision:
D5362354
fbshipit-source-id:
39ce07bad87185e506fe7d780789b78060008182
Yedidya Feldblum [Sun, 2 Jul 2017 17:22:27 +0000 (10:22 -0700)]
Disambiguate the various in_place overloads, following C++17
Summary:
[Folly] Disambiguate the various `in_place` overloads, following C++17.
Forwarding `folly::in_place` is ambiguous because there are multiple overloads and we depend on deduction to choose the correct overload. For example:
```lang=c++
enum struct Err {};
Expected<Expected<int, Err>, Err> val(in_place, in_place, 3); // fails to compile
```
So we must disambiguate the three overloads: the default, the typed, and the indexed.
C++17 defines `std::in_place`, `std::in_place_type<typename>`, and `std::in_place_index<std::size_t>`. Let us mimic that exactly, so that it becomes trivial to swap out our implementations for the standard implementations once we jump to C++17.
Reviewed By: Orvid
Differential Revision:
D5362339
fbshipit-source-id:
d4012b01796390e74d8c14cdf68af70102608039
Christopher Dykes [Sun, 2 Jul 2017 06:50:37 +0000 (23:50 -0700)]
Don't attempt to lock the file descriptor in readv/writev if it's a socket
Summary:
There is no way to lock a socket on Windows, so these calls will always fail. Just don't do the lock on Windows.
To do it properly with sockets, this should probably be forwarding to `sendmsg`/`recvmsg`, but this is good enough for now.
Reviewed By: simpkins
Differential Revision:
D5307901
fbshipit-source-id:
9855274e932a3e2ec3cacae10363200187e0c01b
Christopher Dykes [Sat, 1 Jul 2017 03:17:55 +0000 (20:17 -0700)]
Enable a missing test in the CMake build
Summary: This also silences a few warnings in the stl vector tests.
Reviewed By: yfeldblum
Differential Revision:
D5350383
fbshipit-source-id:
84df2a7dbfbb23ebb3f15a09f0cb58080b3e06d6
Nate Stedman [Sat, 1 Jul 2017 01:01:42 +0000 (18:01 -0700)]
Fix undefined warning errors
Summary: Xcode 9 is throwing errors because `-Wshadow-local` and `-Wshadow-compatible-local` are undefined in Clang.
Reviewed By: Orvid
Differential Revision:
D5356476
fbshipit-source-id:
4cc9f48f796f66decb4beaa66d3e66f486449c19
Christopher Dykes [Fri, 30 Jun 2017 23:20:37 +0000 (16:20 -0700)]
Drop std::max_align_t hack present for GCC 4.8
Summary: Folly no longer supports GCC 4.8, so this is no longer needed.
Reviewed By: yfeldblum
Differential Revision:
D5354542
fbshipit-source-id:
bd9a2732f22f2176f64f92f0af6f7d59dd59a8d9
Christopher Dykes [Fri, 30 Jun 2017 22:18:55 +0000 (15:18 -0700)]
auto-dep the rest of Folly
Summary: This is so we can do some magic internally.
Reviewed By: yfeldblum
Differential Revision:
D5354341
fbshipit-source-id:
96abf92f4765f5ae21aa3c0dc4bcadcc22560ab5
Adam Simpkins [Fri, 30 Jun 2017 19:36:56 +0000 (12:36 -0700)]
Don't try to access XlogFileScopeInfo->category if not supported
Summary: This was breaking Windows builds.
Reviewed By: Orvid
Differential Revision:
D5351468
fbshipit-source-id:
3385931b82b11d71d98861fb45efc71a632d470b
Christopher Dykes [Fri, 30 Jun 2017 18:19:54 +0000 (11:19 -0700)]
Use #warning rather than #warn
Summary: Because `#warn` isn't actually a thing.
Reviewed By: ot
Differential Revision:
D5356878
fbshipit-source-id:
57751ca57e7f6aaf9f4d8be70958b9cacc4f7335
Christopher Dykes [Fri, 30 Jun 2017 17:52:18 +0000 (10:52 -0700)]
Remove the now dead StringBase.cpp
Summary: The empty file was left to stop the bleeding without breaking things. Time to remove it.
Reviewed By: mzlee
Differential Revision:
D5354310
fbshipit-source-id:
cd3039811cf9d7371578e4078cd7d32e3bc6d8a1
Maged Michael [Fri, 30 Jun 2017 12:27:49 +0000 (05:27 -0700)]
Flat combining: Fix typos in comments
Summary: reserved
Reviewed By: djwatson
Differential Revision:
D5352232
fbshipit-source-id:
e3c27e22320e12bd635acb8a1b394a9de02cecfc
Maged Michael [Fri, 30 Jun 2017 04:21:32 +0000 (21:21 -0700)]
Hazard pointers: Fix leak in hazptr_priv destruction
Summary:
- Fixed leak in hazptr_priv destruction
- Updated tests to detect leak
Reviewed By: djwatson
Differential Revision:
D5351280
fbshipit-source-id:
724810cbbe0565f0cbd41f9d2121abefd98487bd
Christopher Dykes [Fri, 30 Jun 2017 03:13:49 +0000 (20:13 -0700)]
Merge StringBase.cpp into String.cpp
Summary: It doesn't need to exist anymore
Reviewed By: yfeldblum
Differential Revision:
D5318746
fbshipit-source-id:
c70b184f4b3fc12ede4632d6b3d43de16ed758c7
Adam Simpkins [Thu, 29 Jun 2017 21:45:09 +0000 (14:45 -0700)]
logging: support building with gcc-4.9
Summary:
Versions of gcc prior to 5.x only support C++11 constexpr functions, and
require that they consist of only a single return statement.
This updates isLogLevelFatal() to meet those requirements so that it can still
be compiled with gcc 4.9.
Reviewed By: ikobzar
Differential Revision:
D5350304
fbshipit-source-id:
2a9c256236c484f8c3d5f83690fde8b7333aa4fc
Ankit Shah [Thu, 29 Jun 2017 20:24:19 +0000 (13:24 -0700)]
Removing memory leaks in rsa setter test
Summary:
Using RSA free and removing unnecessary Bignum allocations to prevent
test failures due to memory leaks
Reviewed By: anirudhvr
Differential Revision:
D5348232
fbshipit-source-id:
7c76f3dced26a3080fc82b4bacc06bc0768d6fda
Maged Michael [Thu, 29 Jun 2017 14:16:37 +0000 (07:16 -0700)]
Hazard pointers: Add support for thread local lists of retired objects and other optimizations
Summary:
- Add support for private lists of retired objects
- Add an option for one domain
- More scalable thread cache managemnt
- hazptr_rec alignment
- FOLLY_ALWAYS_INLINE
- Refactor management of retired objects in hazptr_domain
- Refactor benchmarks
Reviewed By: davidtgoldblatt
Differential Revision:
D5322646
fbshipit-source-id:
9d31582b9a8216861e7e78e2e1cd08dc11cf7f88
Andrew Krieger [Thu, 29 Jun 2017 00:12:01 +0000 (17:12 -0700)]
Remove dependency on Conv.h from FileUtil.h
Summary: So we can use writeFile in projects which compile with -fno-rtti
Reviewed By: mzlee
Differential Revision:
D5341469
fbshipit-source-id:
bb77baf9576604ff862d54d59bf382862bd0dd58