FOLLY: Overview

FOLLY: Overview


Folly is a library of C++14 components. It was designed with efficiency due to a practical mindset.

 Folly contains a variety of core library components used extensively at Facebook. It complements offerings such as Boost and std.

Folly is the “acronym” for Facebook open source library.


Why to use FOLLY.

We already have libraries like Std and Boost. So, there is no need to have FOLLY. FOLLY was developed to complement Std and Boost.  Folly was thought for cases where they require higher performance.


Logical Design

Folly is a collection of relatively independent components. These components are as simple as a few symbols. Internal dependencies do not have any restrictions.

All symbols are defined in the top-level namespace folly. Macros is the only exception. Macro names are ALL_UPPERCASE and should be prefixed with FOLLY_. Namespace folly defines other internal namespaces. Symbols in those namespaces are not depended upon by user code.

Physical Design

Folly uses the classic "stuttering" scheme folly/folly used by Boost and others at the top level. The first directory serves as an installation root of the library. The second directory is  used to distinguish the library when including files.

The directory structure is flat as we don't have an elaborate directory hierarchy. It is possible this will change in future versions. The subdirectory experimental contains files that are used inside folly and possibly at Facebook but not considered stable enough for client use.