- 02 Aug, 2018 4 commits
-
-
Xiao Shi authored
Summary: This diff allows `folly::dynamic` to lookup and mutate using any type that is convertible to `StringPiece` (i.e., `const char*`, `std::string`, `fbstring`) without having to construct a `dynamic` object (which requires copying the string). Currently dynamic string types uses fnv32 hash, which is OK since F14 is going to do a mixing step anyway; we are changing this in D8304491. Reviewed By: yfeldblum Differential Revision: D8299863 fbshipit-source-id: a154bfe8f17e1d83968cdc1755ec54b6eed4299e
-
Xiao Shi authored
Summary: F14NodeMap is a safe drop-in replacement for std::unordered_map. It is smaller than std::unordered_map (32 bytes instead of 56 bytes) and has been shown to be faster in many production use cases. This diff replaces the hash table inside folly::dynamic. The effect is that sizeof(folly::dynamic) will drop from 64 bytes to 40 bytes, and use cases that use folly::dynamic as an object may also get a CPU win. Reviewed By: nbronson Differential Revision: D8299800 fbshipit-source-id: abd0b034537c95f2ccbdf78fe5ae8fe9157f32ac
-
Matthieu Martin authored
Summary: In my use case, at least, it's very likely that most Fibers are sharing the same RequestContext. This could save a lot of onSet/onUnset calls. Unsafe? Reviewed By: andriigrynenko Differential Revision: D9115679 fbshipit-source-id: 216208dff509c61b9f20f324c3e648ec79ebbaf7
-
Qingpeng Niu authored
Summary: Public method to get `maxSize` for `TDigest`. Reviewed By: yfeldblum Differential Revision: D9124932 fbshipit-source-id: 1effab8900c3007f6a92d9d6c1d83189746f4ac6
-
- 01 Aug, 2018 4 commits
-
-
Matthieu Martin authored
Summary: There is no reason for setContext to call set/unset when both request context holds identical data. So merge unsetShallowCopyContext implementation there. Reviewed By: djwatson Differential Revision: D9119718 fbshipit-source-id: 7b9c6badbfb29416b6b0032467984720b697a1e8
-
Matthieu Martin authored
Summary: This is to be consistent with setContext, which doesn't call set/unset of the default context. Main goal is to merge code in next diff. I think the default context is never relevant, and should only be the current context in the internal of the async framework, in between executing coroutines. We should probably enforce that request data is never set in the default context to guarantee correctness. Reviewed By: djwatson Differential Revision: D9119717 fbshipit-source-id: 8fa07520d506c02663f58f7616f1f390645997bc
-
Matthieu Martin authored
Summary: Mishandling of parent end boundary. Reviewed By: djwatson Differential Revision: D9119716 fbshipit-source-id: c186e5acffdedc77577e1ab3a7b5876a6423e0f4
-
Joe Loser authored
Summary: - Replace uses of `boost::next` with `std::next`. - Replace uses of `boost::prior` with `std::prev`. Pull Request resolved: https://github.com/facebook/folly/pull/896 Reviewed By: ot Differential Revision: D9114372 Pulled By: yfeldblum fbshipit-source-id: 4b15b81ffb43dee00b64c4abc171747a95ceb6b7
-
- 31 Jul, 2018 5 commits
-
-
Marshall Cline authored
Summary: We have seen some caller-confusion after removing the lvalue-qualified Future::get(). Goal of this is to improve/clarify the compile-time error-msg for `future.get()`. The resulting error-messages are compiler-dependent, but generally they are more explicit, indicating an explicit deletion of the lvalue-qualified method, and in some cases also displaying the deprecation-message: * Clang: * old: 'this' argument to member function 'get' is an lvalue, but function has rvalue ref-qualifier * new: call to deleted member function 'get': must be rvalue-qualified, e.g., std::move(future).get() * gcc: * old: error: passing 'Future<int>' as 'this' argument discards qualifiers [-fpermissive] * new: use of deleted function 'T Future<T>::get() & [with T = int]' * MS VC: * old: 'int Future<int>::get(void) &&': cannot convert 'this' pointer from 'Future<int>' to 'Future<int> &&' * new: 'int Future<int>::get(void) &': attempting to reference a deleted function * icc: * old: function "Future<T>::get [with T=int]" (declared at line 6) cannot be called on an lvalue * new: function "Future<T>::get() & [with T=int]" (declared at line 9) was declared deprecated ("must be rvalue-qualified, e.g., std::move(future).get()") Reviewed By: yfeldblum Differential Revision: D9071064 fbshipit-source-id: a40712ce94fd10bc153cb74a7d6d6a0539e07a15
-
Yedidya Feldblum authored
Summary: [Folly] Use C++ v.s. PP to handle libcpp in `dynamic` ctor taking `std::vector<bool>::const_reference`. Reviewed By: shixiao Differential Revision: D9027115 fbshipit-source-id: 94de4260d1d40ac450c37d3803994d436adcf06e
-
Yedidya Feldblum authored
Summary: [Folly] Mark `std::list` as not relocatable. From the github issue (facebook/folly#889), `std::list` allocated storage may hold back-pointers to the owning `std::list` object in both libstdc++ and libc++. The relocatability marking dates to 2011 or earlier; perhaps it applied then. Closes #889. Reviewed By: nbronson Differential Revision: D9043357 fbshipit-source-id: bf954e74f36f554bfbb2e5bb5ac40b933a749003
-
Marshall Cline authored
Summary: Fix a few nits in the contracts/specification Reviewed By: yfeldblum Differential Revision: D8962060 fbshipit-source-id: 8344403d3e26a01bef02deee3bb964fbaf6a1591
-
Tingzhe Zhou authored
Summary: This is the implementation of the unbounded concurrent priority queue based on Mound. - The data structure supports push, pop, size and empty operations. [TODO: timed pop] - User can select whether it is the strict priority queue (PopBatch = 0), or relaxed implementation (PopBatch > 0). - Supports blocking. Reviewed By: magedm Differential Revision: D9028417 fbshipit-source-id: e12dc43aef4fb5b1195d9e27807cbd9f0ad1a401
-
- 30 Jul, 2018 2 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Use brace-initialization for `folly::none`. Will help with future work. Reviewed By: shixiao Differential Revision: D9039671 fbshipit-source-id: fc34041bc040332540ed3e9dfd7ab452e82ca47f
-
Dan Melnic authored
Summary: Adding UDP generic segmentation offload support Reviewed By: siyengar Differential Revision: D8825396 fbshipit-source-id: 5974307c2a901f4967e6f1c678b604ec1c21b3d0
-
- 29 Jul, 2018 2 commits
-
-
Lee Howes authored
Summary: Removes support for thenTry to accept a lambda with no parameter list and fail to compile with no arguments. Reviewed By: yfeldblum Differential Revision: D9011934 fbshipit-source-id: ec29b0c3d9475e7d2c566469b0ee333f0dc05738
-
Adin Rosenberg authored
Differential Revision: D8875766 Original commit changeset: d88a323e6c14 fbshipit-source-id: 0f250135c084780895c99e47509e9d41cec0b88f
-
- 28 Jul, 2018 1 commit
-
-
Phil Willoughby authored
Summary: `strerror` isn't thread safe, `folly::errnoStr` is. Reviewed By: yfeldblum Differential Revision: D9036249 fbshipit-source-id: da4ad1089f4319e62b0273ec12b4950624105a77
-
- 27 Jul, 2018 3 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Fix `fbvector::swap` impl to do proper ADL. Instead of passing template parameters, cast the arguments. That way non-template `swap` overloads can also be found. Reviewed By: Gownta Differential Revision: D9026136 fbshipit-source-id: 29240fed1c90d3556c2476917a21cbe1949c9a3c
-
Mahesh Maddikayala authored
Summary: Added option to send parameters to 'configure' script from fbcode builder Reviewed By: jstrizich Differential Revision: D9004547 fbshipit-source-id: da54fa2dd453aab29051f37106423807a260535a
-
Yedidya Feldblum authored
Summary: [Folly] Tweaks to Futures after {D9015012}. * Publish base-class methods with `using`. * Use trailing-comma in list initializers. Reviewed By: shixiao Differential Revision: D9024885 fbshipit-source-id: d1e548630152a7d7ce892084daef24a4e62dd0df
-
- 26 Jul, 2018 7 commits
-
-
Pedro Eugenio Rocha Pedreira authored
Summary: The futures created by FutureSplitter don't carry the orginal future's executor priority, what makes it hard to guarantee that certain operations based on a future chain run on a determined executor priority. Reviewed By: WillerZ Differential Revision: D9015012 fbshipit-source-id: 96b7e7ccb33583105f96d2170eeb159493b93ed0
-
Dave Watson authored
Summary: Radix sort (as implemented by boost's spreadsort) is 2x faster than std::sort. Reviewed By: nbronson Differential Revision: D8875766 fbshipit-source-id: d88a323e6c14d58f0820c2d6d8c3d578c1305482
-
Alexander Kindyakov authored
Summary: - Fix up wrong order of template arguments in Expected generic - Create tests to check up all 3 forms of swap for Expected Reviewed By: ericniebler Differential Revision: D9013316 fbshipit-source-id: d4cebd83b268a4c5c551ac970f67b598f117fa73
-
Xiao Shi authored
Summary: Despite the standard, `std::vector<bool>::const_reference` is not `bool` in libcpp: http://howardhinnant.github.io/onvectorbool.html Add the implicit ctor so that `f(dynamic)` can be invoked with `f(v[idx])` where `v` is a `const vector<bool>` under libc++. Reviewed By: ot Differential Revision: D8992805 fbshipit-source-id: 0675174c2a247257238bb11b2c7b319653fe92a3
-
Matthieu Martin authored
Summary: Per title I found that it was easier to bypass setContext (and not extend RequestContextScopeGuard) to achieve this result. setShallowCopyContext now directly set the copy as current the new unsetShallowCopyContext exclusively calls set/onset for the context data that was overriden. This assumes that cost will be fine because the callbackData_ sets are small or empty. Similar reason they were split from requestData_ in the first place, for RequestContextScopeGuard efficiency. (Note: this ignores all push blocking failures!) Reviewed By: andriigrynenko Differential Revision: D8943668 fbshipit-source-id: ad99177429de6b7b65bf95fa0e94334d73c3750d
-
Matthieu Martin authored
Summary: This guard maintains all the RequestData pointers of the parent (through shallow copy). This allows to overwrite a specific RequestData pointer for the scope's duration, without breaking others. We decided to keep the raw ptr interface, which required to implement a pseudo shared ptr to achieve the shallow copy behaviour. Rest of the code is pretty straight forward. A few more lines than expected, due to introducing overrideContextData to avoid unecessary memory management (clearData) or warnings (setData). The performance should be neutral for code not using the guard (std::atomic incr/decr). The guard itself is pretty efficient at copying the values, though there is a slight worry about the keys (std::string). This might be a generic concern about current implementation, some form of cheap static would be better. It also calls unecessarily onSet/onUnset. I will fix on top as it makes the change more complex. Reviewed By: djwatson Differential Revision: D8911351 fbshipit-source-id: 1692428382ace1d0b79bbc84a1db50efb4c7b489
-
Matthieu Martin authored
Summary: This added significant cost, it will take effort to deploy, reverting for now Differential Revision: D9007024 fbshipit-source-id: 04074b09a1a2b7f9b57e3d755a2754657dda21c2
-
- 25 Jul, 2018 2 commits
-
-
Lee Howes authored
Summary: Allow map to take a SemiFuture vector by changing the way the return type is deduced. Add overloads that take executor to apply.via and run the mapped tasks on a specified executor, and additionally return a Future that completes on that executor. Reviewed By: andriigrynenko Differential Revision: D7559540 fbshipit-source-id: f9480ea89fcfaa25a050ee7428dc69de300ccfde
-
Andrii Grynenko authored
Summary: Non-template functions in header files have to be marked as inline to avoid linker errors. Reviewed By: yfeldblum Differential Revision: D8983661 fbshipit-source-id: 8f003e9f4e2d40cb6122da8e9e0adacab00ed0fa
-
- 24 Jul, 2018 7 commits
-
-
Xiao Shi authored
Summary: When the param type is larger than `unsigned int`, the wider type `size{}` was implicitly converted to the return type `unsigned int` in `findLastSet`. This diff makes the conversion explicit. Reviewed By: yfeldblum Differential Revision: D8971589 fbshipit-source-id: 8828504c462e9296b84a746bcb7f701bc4a7d20e
-
Dan Melnic authored
Summary: Make ThreadEntry::elementsCapacity atomic Reviewed By: yfeldblum Differential Revision: D8963304 fbshipit-source-id: 0b37bbe97475a400e9b574b8285bde8f38a479f5
-
Hugo Cuvillier authored
Summary: Xcode wasn't impressed when I tried to import `folly::FixedString` from a Objective-C++ context. This seem to satisfy Xcode's toolchain. Reviewed By: lambdapioneer Differential Revision: D8855137 fbshipit-source-id: 7bb3b1039b30241797ec7f3df7c0bbdeffca87bf
-
Xiao Shi authored
Summary: There should be no expectations on what hash is internally used in dynamic, so we don't need to maintain compatibility with `fbstring`, which hasn't been used as string storage in `dynamic` for quite a while. Reviewed By: yfeldblum, ot Differential Revision: D8824634 fbshipit-source-id: 6765472aeeacb55c68b058f5dcc128f6b400bc95
-
Harsh Poddar authored
Summary: GLOG has `-logbuflevel` option that allows a user to specify the level above which none of the logs should be buffered. This is helpful as we can configure it such that `INFO` and all verbose logs are buffered before being output, but all logs above `INFO` should be flushed synchronously. This will ensure that all logs above a certain level are printed before any sort of crash. This diff allows a user to specify a config `sync_level`. The value for this can be any `LogLevel`. Example config: .=WARN,akkio.cli=INFO; default:async=true,sync_level=WARN The default value for GLOG's -logbuflevel is `0` (`INFO`). To match GLOG's behavior, this diff sets the following as defaults: async=true,sync_level=WARN Reviewed By: simpkins Differential Revision: D8867555 fbshipit-source-id: 7ec30dfb41b2f3cd3568d70304db7a9fcf668779
-
Harsh Poddar authored
Summary: Update default log level for Folly's logging to match that of Google's logging. This will make it easier to migrate between the two. Reviewed By: simpkins Differential Revision: D8941725 fbshipit-source-id: 14ed352d9a012f2604ff4329cc7cd038b2c0ee26
-
Louis Brandy authored
Summary: These headers don't include everything they use so things build now because of rando include orders and transitive inclusion. Breaks when attempting to build with clang modules. Reviewed By: shixiao Differential Revision: D8954753 fbshipit-source-id: d222370f17594f5c6aeccd21cbfd61bd8102245a
-
- 23 Jul, 2018 2 commits
-
-
Mahesh Maddikayala authored
Summary: Add resource monitor object to fbzmq library to monitor CPU and memory. User can use the object to query RSS memory, cpu usage, and optionally call API to monitor memory periodicially and crash when reaches beyond a specified threshold limit. Reviewed By: cenzhao Differential Revision: D8873504 fbshipit-source-id: a445fdd580da82c55fba09c43f46f60bb9f1149a
-
Maged Michael authored
Summary: Destructor unlinks and reclaims nodes immediately without checking hazard pointers. Reviewed By: djwatson Differential Revision: D8864161 fbshipit-source-id: 270df5e6b3ef8bc33934b6d55df465309f1068bd
-
- 21 Jul, 2018 1 commit
-
-
Yedidya Feldblum authored
Summary: [Folly] Generic conversion from `Range` in cases like `std::string_view` which are constructible with `Iter, size_type` instead of `Iter, Iter`. Reviewed By: vitaut Differential Revision: D8907212 fbshipit-source-id: 6f93581b7185d4d10925aa57175f130dff2576e3
-