- 15 May, 2017 4 commits
-
-
Nathan Bronson authored
Summary: This diff adds StampedPtr, which packs a pointer and a uint16_t into a uint64_t with maximum portability and without adding any additional functionality. Reviewed By: yfeldblum, davidtgoldblatt Differential Revision: D4804614 fbshipit-source-id: 25fe7aff47d1e126ac8edfff4eb0bbb1d34071aa
-
Maxim Georgiev authored
Summary: AsyncSocket::handleErrMessages() should check if the error message callback is still installing before calling it, since the callback could be uninstaled on the previous loop iteration. Reviewed By: yfeldblum Differential Revision: D5051001 fbshipit-source-id: fc01932c0d36bd8f72bf1905f12211fb83d28674
-
Yedidya Feldblum authored
Summary: [Folly] List the new GCC 4.9 and C++14 minimum requirement. We no longer support GCC 4.8 or C++11. Closes #590. Reviewed By: Orvid, mzlee Differential Revision: D5058942 fbshipit-source-id: 0545d1bb294494e5ef5f17a40c9cf3ac688bd8d0
-
Arkady Shapkin authored
Summary: MSVC doesn't support `^` and `&` operator for __m128i type Closes https://github.com/facebook/folly/pull/594 Reviewed By: yfeldblum, Orvid Differential Revision: D5053356 Pulled By: djwatson fbshipit-source-id: f789824052e0c679c265c83ad704109805c21402
-
- 13 May, 2017 1 commit
-
-
Koen De Keyser authored
Summary: Problems: - The vDSO check code in configure.ac is broken, and will always fail (uses AC_LANG_PROGRAM but with arguments in the AC_LANG_SOURCE style) - On Linux, using dlopen/dlsym requires -ldl (libdl) during the link phase. This check was missing and this argument was not added to the linker arguments. - On a Linux system without vDSO support, libfolly.so still uses vDSO in ClockGettimeWrappers.cpp Solution: - Switched to AC_LANG_SOURCE - Required libdl to exist when build target is Linux. This also adds this dependency to libfolly.la, resulting in fixing a dependency issue for Proxygen (recent Proxygen build would have issues in building examples due to failing linking step due to missing dlopen / dlsym / dlclose symbols) - In ClockGettimeWrappers.cpp, checking if `__linux__` is set is not sufficient to determine that the system has vDSO support. The autoconf script already exposes a correct check: FOLLY_HAVE_LINUX_VDSO (this is already used in folly/detail/CacheLocality.cpp), so switched to that one. Closes https://github.com/facebook/folly/pull/592 Reviewed By: yfeldblum Differential Revision: D5049816 Pulled By: Orvid fbshipit-source-id: 58b2ed4c4101274505c61b4825accf262c0d56ef
-
- 12 May, 2017 7 commits
-
-
Philip Pronin authored
Summary: Return not just number of cancelled ops, but all of them as well. Test was incorrectly assuming `wait(1)` will return exactly one operation, fix that as well. Reviewed By: ot Differential Revision: D5054684 fbshipit-source-id: 1c53c3f7ba855d1fcfeac8b1b27f90f0872d2c21
-
Yedidya Feldblum authored
Summary: [Folly] `exception_wrapper::get_object<>`. Returns a pointer to the stored object, if the template type parameter is of the right sort. Reviewed By: jsedgwick Differential Revision: D5000720 fbshipit-source-id: 2869439085e8dfb56e6cb439794b03876b7d715c
-
Yinghai Lu authored
Summary: This diff shows an issue in `folly::retrying`. When the future generation function throws an exception and `folly::retrying` is nested in another functor that returns Future, it will throw `broken promise` instead of the actual exception message, which can be very generic and confusing. Fix is to capture the exception so that exact error message can be propagated up. Reviewed By: yfeldblum Differential Revision: D5050690 fbshipit-source-id: 5b9b24977788f60aa778bb8e9cdf4281ea9a0023
-
James Sedgwick authored
Summary: To satisfy internal linter Reviewed By: yfeldblum Differential Revision: D4957870 fbshipit-source-id: 191ac768790fbd8cc8a4d24036c016644ff1d125
-
James Sedgwick authored
Summary: changes as suggested by FB-internal linter Reviewed By: yfeldblum Differential Revision: D4957742 fbshipit-source-id: c9d94c477d24f153cab0d25edccfd39ff31fdfdf
-
James Sedgwick authored
Summary: suggested by internal linter Reviewed By: Orvid Differential Revision: D4958232 fbshipit-source-id: 69c67d80be092db17703d672524124ca5ef7ba32
-
Eric Niebler authored
Summary: Before this change, when a non-const FunctionRef lvalue is copied, it is treated as any other callable: it is wrapped with an indirection. That's semantically incorrect and potentially creates lifetime problems. Instead, use the compiler generated copy constructor, which only copies the object and function pointers. Reviewed By: yfeldblum Differential Revision: D5040843 fbshipit-source-id: f691060bdced2e287ba22d22b961c02c2b924147
-
- 11 May, 2017 7 commits
-
-
Nick Terrell authored
Summary: Instead of using `UNKNWON_UNCOMPRESSED_LENGTH` use an `Optional`. Reviewed By: yfeldblum Differential Revision: D5038919 fbshipit-source-id: 7fb60542277019996be3ff50509df5a5060cb1a0
-
Ashwin Bharambe authored
Summary: We would like to use `folly/Optional` in settings where exceptions are disabled. An example is ObjC++ codebases where supporting exceptions doesn't quite help (since objc_msgSend() can throw) and yet we need to pay the additional binary size cost for the unwind tables. This patch makes a small change to outline the "assert" utility included inside Optional.h Reviewed By: yfeldblum, mzlee Differential Revision: D5030172 fbshipit-source-id: 7def3c6eda22c41c8cab2037444978e0a4c50abf
-
Philip Pronin authored
Summary: It should be implemented with `io_cancel`, but it is not supported (D682836), so still have to drain events, ignoring only op callbacks. Reviewed By: luciang, ot Differential Revision: D5044020 fbshipit-source-id: 0bcd04c91a437fccaf2189ccf771a1cb61c68942
-
Victor Zverovich authored
Summary: This diff fixes a race that happens on destruction of `ScopedEventBaseThread`. ``` Thread1: ~ScopedEventBaseThread() Thread1: eb_.terminateLoopSoon() <- preempted just after stop_ = true Thread2: eb->loopForever() in run(...) exits because stop_ is true Thread2: ... Thread2: eb->~EventBase() Thread1: queue_->putMessage(nullptr) <- accesses destroyed EventBase ``` Reviewed By: yfeldblum Differential Revision: D5042654 fbshipit-source-id: 95515ed7cde09ff5f125ef121bea86ab3907f98a
-
Yedidya Feldblum authored
Summary: [Folly] `hasher` instances for 8-bit and 16-bit integral types. Allowing the use of `Hash` with such types. They are not necessarily the ideal algorithms for those widths, essentially forwarding to the 32-bit instances. Reviewed By: luciang Differential Revision: D5043094 fbshipit-source-id: 6ef96dfc8d1baf0a15b9bdd585b7c7672099e4f0
-
Kevin Chen authored
Summary: This is useful for checking if it's possible to still write to a transport, even if its read side is closed (for transports that support half shutdown, like AsyncSocket). Default implementation just returns true for now (up to implementers to override). Reviewed By: yfeldblum Differential Revision: D4982649 fbshipit-source-id: 0a9a2e2b745ea3db57e9f151f3a8634e1bda2465
-
Mathieu Baudet authored
Summary: [folly] add missing const to fix `folly::toDynamic` on `std::vector<bool>` Reviewed By: ender-wieczorek, yfeldblum Differential Revision: D5039403 fbshipit-source-id: edd052c7d1d832d424166cba15fcd9f4f8bd219c
-
- 10 May, 2017 2 commits
-
-
Victor Loh authored
Summary: I was looking for a way to get rusage of a particular pid because getrusage isn't good enough since it records the rusage of all the children that has been terminated (and waited for). Even though wait4 is marked as deprecated, wait3 (the cousin of wait4) is still being used in places like time. Furthermore, there is no suitable replacement to get rusage with wait*. Reviewed By: yfeldblum Differential Revision: D5008084 fbshipit-source-id: 6e511ebec7464d21309e5112aca95083e9307ea1
-
Anton Lunov authored
Summary: This reverts commit 71134c1657bdd4c38c12d8ca17f8335ef4c27352 Differential Revision: D4982969 fbshipit-source-id: fc1e766a5fd03fbd02c345904c3c6587013f38d5
-
- 09 May, 2017 6 commits
-
-
Arkadiy Shapkin authored
Summary: Closes https://github.com/facebook/folly/pull/588 Reviewed By: ericniebler Differential Revision: D5029876 Pulled By: yfeldblum fbshipit-source-id: 6a8f16373dcfb1c7b2741eb808da0f6dbc4207b6
-
Eric Niebler authored
Add folly::Identity function object to Utility.h; replace AtomicHashArray's AHAIdentity and folly/gen's Identity with it Summary: Code duplication is bad. Reviewed By: yfeldblum Differential Revision: D5011806 fbshipit-source-id: cab7bb3af1c934a5a63cd3fb98aa33f2578aebfb
-
Arkady Shapkin authored
Summary: Closes https://github.com/facebook/folly/pull/587 Reviewed By: yfeldblum Differential Revision: D5022071 Pulled By: Orvid fbshipit-source-id: 2506087de76ba4544bf68a330bc2a18977c65f28
-
Yedidya Feldblum authored
Summary: Code may pass a callback which captures an object with a destructor which mutates through a stored reference, triggering heap-use-after-free or stack-use-after-scope. ```lang=c++ void performDataRace() { auto number = std::make_unique<int>(0); auto guard = folly::makeGuard([&number] { *number = 1; }); folly::via(getSomeExecutor(), [guard = std::move(guard)]() mutable {}).wait(); // data race - we may wake and destruct number before guard is destructed on the // executor thread, which is both stack-use-after-scope and heap-use-after-free! } ``` We can avoid this condition by always destructing the provided functor before setting any result on the promise. Reviewed By: spacedentist Differential Revision: D4982969 fbshipit-source-id: 71134c1657bdd4c38c12d8ca17f8335ef4c27352
-
Philipp Unterbrunner authored
Summary: C++ up to and including C++17 lacks an alternative to std::back_inserter() that uses emplace_back() instead of push_back(). This causes unnecessary temporary objects in some cases, when using std::back_inserter() together with STL functions such as std::copy() or std::transform(). The same holds for std::front_inserter() and std::inserter(). This diff introduces folly::back_emplacer(), folly::front_emplacer(), folly::emplacer(), and related iterator classes, which call emplace_back(), emplace_front(), and emplace() respectively, with perfect forwarding of any arguments to the output iterator's operator=. Includes support for variadic emplacement / multi-argument constructors through a utility function folly::make_emplace_args() which packs its arguments into a special tuple for use with operator=. Reviewed By: ericniebler Differential Revision: D4897174 fbshipit-source-id: c85c30c457e0c946938051819baa662d1a0b8ca1
-
Christopher Dykes authored
Summary: There are still some upstream references to `folly::make_unique` that need to be removed before it can be full killed, but this gets it most of the way there. Reviewed By: yfeldblum Differential Revision: D5024310 fbshipit-source-id: 6cfe8ea93662be18bb55588c8200dec72946e205
-
- 08 May, 2017 3 commits
-
-
Jim Meyering authored
Summary: Change every instance of EXPECT_EQ(false, ... to the simpler/shorter EXPECT_FALSE(... Likewise, convert each EXPECT_EQ(true, ... to EXPECT_TRUE(... Differential Revision: D5019004 fbshipit-source-id: 0203f10fa47237f869a75a057ac4456ef03e1f53
-
Anirudh Ramachandran authored
Summary: There's nothing io/async/ssl-specific in this file. Moving to the top-level directory will help this be more discoverable. Part of general cleanup for io/async/ssl Reviewed By: yfeldblum Differential Revision: D5005566 fbshipit-source-id: 66a05a2139ee80a6d63791d1851da3f1858e8abf
-
Dave Watson authored
Summary: A faster crc32 impl for folly. Similar to crc32c, except intel doesn't provide crc32 directly in hardware - instead, pclmul can be used, which is ~2x slower than crc32c, but still ~5-10x faster than software implementation. Reviewed By: Orvid, yfeldblum Differential Revision: D4994761 fbshipit-source-id: ad8ba856649eea6dc7b541d561329ff7d7fe2d60
-
- 06 May, 2017 3 commits
-
-
Andrii Grynenko authored
Summary: std::call_once implementation is broken if function throws. This fixes folly::call_once to not depend on std::call_once. Reviewed By: yfeldblum Differential Revision: D5015897 fbshipit-source-id: bcbda68becf0930cdbf0b09125cbee61d75c2015
-
Yedidya Feldblum authored
Summary: [Folly] Mark future-core get-state members as `const noexcept`. Reviewed By: andrewjcg Differential Revision: D5014358 fbshipit-source-id: e39b0b63c59267a4ecfab5aac02e6d96ce2e7e00
-
Yedidya Feldblum authored
Summary: [Folly] Stop trying to `setrlimit(RLIMIT_AS)` in ASAN builds. ASAN needs to reserve plenty of memory outside of the limited address space imposed by the call to `setrlimit`. Reviewed By: andriigrynenko Differential Revision: D5014679 fbshipit-source-id: 2ab71b1cca9297d3a276cf72154fac30a2057f86
-
- 05 May, 2017 6 commits
-
-
Eric Niebler authored
Summary: It should be possible to perform simple comparison operations between a FixedString and a std::string. By adding asymmetric comparison operators with FixedString and Range, we make FixedString comparable with anything convertible to Range, including std::string. Reviewed By: yfeldblum Differential Revision: D5007704 fbshipit-source-id: fee89d8807ac2d5378eec0d0a51eb8684976a271
-
Christopher Dykes authored
Summary: OSX was sad. Now it should be happy. Reviewed By: mzlee Differential Revision: D5011751 fbshipit-source-id: 77f22ff461036d8530d8f650396d8e12503448e7
-
Yedidya Feldblum authored
Summary: [Folly] Control the number of threads in `TestExecutor`. Let the caller control the number of threads to use in each given case. Reviewed By: spacedentist Differential Revision: D4999699 fbshipit-source-id: 4acf68cf17fbca14f0779daf0268d54c5606e4a8
-
Sven Over authored
Summary: We have tests that check that the Future implementation deals cleanly with executors discarding tasks. The existing tests destroy the tasks immediately when they are passed to Executor::add. This diff adds corresponding tests for the scenario where the task is not destroyed right away, but after the call to Future::then has completed. This diff also adds a mechanism to detect that the passed callback function is actually destroyed. We have tested already that the promise returned by folly::then will be set to a BrokenPromise exception when the executor discards the task. However, the task passed to the executor is not only the callback we pass to folly::then, as the Future implementation wraps it with some code that stores the return value in a Promise. Existing tests check that this Promise is destroyed. The added mechanism in this diff checks that the orignal callback function itself gets destroyed. Reviewed By: Krigpl Differential Revision: D5002100 fbshipit-source-id: 4155f61b075d9fe8d1869ad229f4d350571ff4c6
-
Yedidya Feldblum authored
Summary: [Folly] Add full `noexcept` annotations to `Indestructible`. And do it without requiring `<type_traits>`. Reviewed By: Orvid Differential Revision: D4999243 fbshipit-source-id: f3521237ef4d03d2b187e9ebd6d0c90887872c42
-
Christopher Dykes authored
Summary: This can only ever be used unsafely, so delete it. Reviewed By: yfeldblum Differential Revision: D4951294 fbshipit-source-id: bbc266d1550fceb48946c7c48e76af07292b4a53
-
- 04 May, 2017 1 commit
-
-
Christopher Dykes authored
Summary: The setThreadName API is in the process of being changed to not accept a thread id, which means the thread itself needs to set the name. There are times where a `ScopedEventBaseThread` needs to be named, and this makes that possible. Reviewed By: yfeldblum Differential Revision: D4916781 fbshipit-source-id: dab05b520a715183ce069151ed16864fa1331abc
-