Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # platform/wtf | 1 # WTF (Web Template Framework) |
| 2 | 2 |
| 3 This is the location where all the files under Source/wtf will be moved | 3 WTF is a base library for Blink providing a variety of basic functionalities, |
| 4 eventually. See | 4 like containers, string libraries, reference counting mechanisms, functors, |
| 5 [the proposal](https://docs.google.com/document/d/1shS1IZe__auYxjm9FhPbTY2P01FbN TMYRh-nen5gkDo/edit?usp=sharing) | 5 threading primitives etc. |
| 6 and | |
| 7 [the design doc](https://docs.google.com/document/d/1JK26H-1-cD9-s9QLvEfY55H2kgS xRFNPLfjs049Us5w/edit?usp=sharing) | |
| 8 regarding the relocation project. For the project's progress, see | |
| 9 [bug 691465](https://bugs.chromium.org/p/chromium/issues/detail?id=691465). | |
| 10 | 6 |
| 11 During the project, files in wtf/ are moved to platform/wtf incrementally, and | 7 WTF's mission is to power and support all other Blink modules by providing |
| 12 redirection headers will be placed in wtf/. So nothing should break in the | 8 fast, reliable, user-friendly and secure generic primitives. |
| 13 meantime. You can continue including WTF headers like `#include "wtf/Xxx.h"` | 9 |
| 14 till the next announce in blink-dev. | 10 Dependency-wise, WTF cannot depend on any other Blink modules, including |
|
haraken
2017/04/20 13:45:13
"modules" is confusing with modules/.
Yuta Kitamura
2017/04/21 09:26:41
Done.
| |
| 11 other files under platform/, since WTF is a module that can be referred from | |
| 12 anywhere in Blink. WTF basically can only depend on [base], so that we can | |
| 13 bridge functionalities of base to other Blink modules. | |
| 14 | |
|
haraken
2017/04/20 13:45:13
Also let's explain the relationship between base/
Yuta Kitamura
2017/04/21 09:26:41
Done.
| |
| 15 ## Library catalog | |
| 16 | |
| 17 The below is a list of major libraries. For a complete list, look at | |
| 18 [the directory listing]. | |
| 19 | |
| 20 * **Containers** | |
| 21 | |
| 22 [Vector], [HashSet], [HashMap], [Deque] | |
| 23 | |
| 24 * **Strings** | |
| 25 | |
| 26 [String], [AtomicString], [StringBuilder], [CString] | |
| 27 | |
| 28 * **Reference counting** | |
| 29 | |
| 30 [RefCounted], [RefPtr] | |
| 31 | |
| 32 * **Memory** | |
| 33 | |
| 34 [PtrUtil.h] (`std::unique_ptr<>` utilities), | |
| 35 [Allocator.h] (memory placement macros) | |
| 36 | |
| 37 * **Functors, binding** | |
| 38 | |
| 39 [Functional.h] | |
| 40 | |
| 41 * **Threading** | |
| 42 | |
| 43 [Threading.h], [ThreadingPrimitives.h] | |
| 44 | |
| 45 * **Compile-time switch macros** | |
| 46 | |
| 47 [Compiler.h] (e.g. `COMPILER(GCC)`), | |
| 48 [CPU.h] (e.g. `CPU(X86_64)` or `CPU(64BIT)`), | |
| 49 [build_config.h] (e.g. `OS(WIN)`) | |
| 50 | |
| 51 * **Miscellaneous** | |
| 52 | |
| 53 [Noncopyable.h] (`WTF_MAKE_NONCOPYABLE`), | |
| 54 [StdLibExtras.h] (`DEFINE_STATIC_LOCAL` etc.), | |
| 55 [CurrentTime.h], | |
| 56 [CryptographicallyRandomNumber.h], | |
| 57 [AutoReset.h], | |
| 58 [Optional.h] | |
| 59 | |
| 60 ## History | |
| 61 | |
| 62 The name WTF first [appeared in 2006][1], as a replacement of its older name | |
| 63 KXMLCore. At that point, there were already plenty of libraries we see today. | |
| 64 For example, you can see [the initial implementation of `Vector`][2] was landed | |
| 65 in 2006, replacing several manual array allocations and deallocations(!). | |
| 66 | |
| 67 If you dig the repository a bit more, you can find the original version of | |
| 68 Assertions.h was [committed back in 2002][3]. This is probably the oldest | |
| 69 library that we can find from the repository history. | |
| 70 | |
| 71 As you see, pretty much everything that we have today in WTF was created in | |
| 72 the WebKit era. WTF was initially under the directory Source/JavaScriptCore, | |
| 73 but it moved to Source/WTF/wtf in 2011-2012, then to Source/wtf in 2013. | |
| 74 | |
| 75 Blink forked WebKit in 2013. In 2017, the directory finally [moved to the | |
| 76 current location][4] Source/platform/wtf. | |
| 77 | |
| 78 [the directory listing]: https://cs.chromium.org/chromium/src/third_party/WebKit /Source/platform/wtf/ | |
| 79 [base]: https://cs.chromium.org/chromium/src/base/ | |
| 80 [Vector]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platfor m/wtf/Vector.h | |
|
haraken
2017/04/20 13:45:13
I'd prefer dropping these links since it wouldn't
Yuta Kitamura
2017/04/21 09:26:41
I would argue that those links are worth having be
| |
| 81 [HashSet]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platfo rm/wtf/HashSet.h | |
| 82 [HashMap]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platfo rm/wtf/HashMap.h | |
| 83 [Deque]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platform /wtf/Deque.h | |
| 84 [String]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platfor m/wtf/text/WTFString.h | |
| 85 [AtomicString]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/p latform/wtf/text/AtomicString.h | |
| 86 [StringBuilder]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/ platform/wtf/text/StringBuilder.h | |
| 87 [CString]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platfo rm/wtf/text/CString.h | |
| 88 [RefCounted]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/pla tform/wtf/RefCounted.h | |
| 89 [RefPtr]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platfor m/wtf/RefPtr.h | |
| 90 [PtrUtil.h]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/plat form/wtf/PtrUtil.h | |
| 91 [Allocator.h]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/pl atform/wtf/Allocator.h | |
| 92 [Functional.h]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/p latform/wtf/Functional.h | |
| 93 [Threading.h]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/pl atform/wtf/Threading.h | |
| 94 [ThreadingPrimitives.h]: https://cs.chromium.org/chromium/src/third_party/WebKit /Source/platform/wtf/ThreadingPrimitives.h | |
| 95 [Compiler.h]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/pla tform/wtf/Compiler.h | |
| 96 [CPU.h]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platform /wtf/CPU.h | |
| 97 [build_config.h]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source /platform/wtf/build_config.h | |
| 98 [Noncopyable.h]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/ platform/wtf/Noncopyable.h | |
| 99 [StdLibExtras.h]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source /platform/wtf/StdLibExtras.h | |
| 100 [CurrentTime.h]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/ platform/wtf/CurrentTime.h | |
| 101 [CryptographicallyRandomNumber.h]: https://cs.chromium.org/chromium/src/third_pa rty/WebKit/Source/platform/wtf/CryptographicallyRandomNumber.h | |
| 102 [AutoReset.h]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/pl atform/wtf/AutoReset.h | |
| 103 [Optional.h]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/pla tform/wtf/Optional.h | |
| 104 [1]: https://chromium.googlesource.com/chromium/src/+/e372c152fc6e57743ebc508fe1 7f6eb131b4ff8d | |
| 105 [2]: https://chromium.googlesource.com/chromium/src/+/547a6ca360a56fbee3d5ea4a71 ba18f91622455c | |
| 106 [3]: https://chromium.googlesource.com/chromium/src/+/478890427ee03fd88e6f0f58ee 8220512044bed9/third_party/WebKit/WebCore/kwq/KWQAssertions.h | |
| 107 [4]:https://docs.google.com/document/d/1JK26H-1-cD9-s9QLvEfY55H2kgSxRFNPLfjs049U s5w/edit?usp=sharing | |
| OLD | NEW |