Channels ▼
RSS

C/C++

Facebook Open-Sources Internal C++ Libraries


Clearly it takes more than Queen Elizabeth's 60th-anniversary diamond jubilee to keep Mark Zuckerberg's Facebook out of the headlines; the social networking company has this weekend released to open source a collection of C++ library artifacts known as Folly.

Developed in house and used extensively on an internal basis, Folly's components are said to be extremely fast and extremely reusable (internally, they will have been used by many hundreds of Facebook software engineers) and will now be available on GitHub.

Facebook's Jordan DeLong has explained that his company is open-sourcing parts of its stack now based upon a track record that has seen the service use open technologies from top to bottom. Because Folly's components are said to typically perform faster than equivalents available elsewhere, DeLong suggests C++ developers might find parts of this library interesting in their own right.

"The utilities contained in Folly are things we use heavily in production — this is code that runs on thousands of servers doing work on behalf of 900-million users every day. These utilities are loosely connected, but the over-arching theme for all of the components is high performance at scale. Some of them will show a fairly specialized focus, like reducing contention or packing things into small amounts of memory. Others, such as our in-memory JSON manipulation library or our string-formatting library, have a larger scope. But in either case, our motivation was to build components that were faster and more efficient than what we previously used," he said.

DeLong has hinted that Facebook will now continue to update the open source tree as new Folly components are added, so you we expect to see more of this on GitHub in the future. He says that Facebook makes heavy use of so-called "modern C++," which allows the firm to retain a lot of programming convenience without spending too much of its hardware resources on it.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video