Folly C++ : guide complet avec exemples pratiques

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Folly C++ : guide complet avec exemples pratiques

1. Qu'est-ce que Folly et pourquoi l'utiliser ?

Folly (Facebook Open-source LibrarY) est une bibliothèque de composants C++ développée et utilisée par Facebook (aujourd'hui Meta). Elle propose un ensemble d'utilitaires modernes, hautes performances et rigoureusement testés, qui comblent les lacunes de la bibliothèque standard C++ (std) et de Boost. Folly ne remplace pas la STL, mais l'enrichit en offrant des solutions aux problèmes courants rencontrés lors du développement de systèmes distribués à grande échelle et de serveurs à forte charge.

Pourquoi utiliser Folly ? Le développement C++ moderne nécessite souvent des outils absents de la bibliothèque standard : des conteneurs efficaces aux propriétés spécifiques (comme F14HashMap), des outils de programmation asynchrone (Futures), des opérations atomiques avec des barrières mémoire optimisées (AtomicHashMap), une gestion mémoire sans verrou (ConcurrentSkipList), et de nombreuses autres optimisations bas niveau. Folly fournit tout cela sous forme de composants prêts à l'emploi et éprouvés en production. Elle est particulièrement utile aux développeurs qui écrivent du code serveur performant, travaillent avec des protocoles réseau, de gros volumes de données, ou nécessitent un comportement déterministe dans des scénarios multithreads.

L'avantage clé de Folly est son orientation vers la performance et la correction. De nombreux algorithmes de Folly sont implémentés en utilisant les dernières fonctionnalités de C++ (C++14/17/20) et tiennent compte des spécificités des processeurs modernes (caches, prédiction de branchement, instructions SIMD). Ce n'est pas simplement "une bibliothèque de plus", mais un ensemble d'outils qui permet d'écrire un code plus rapide et plus efficace que les solutions équivalentes basées sur la STL ou Boost, en particulier dans des conditions de forte concurrence.

2. Installation

Folly étant une bibliothèque C++, elle ne s'installe pas via pip ou npm. Pour l'utiliser, vous devez compiler la bibliothèque à partir des sources et l'intégrer à votre projet. La méthode recommandée est d'utiliser le système de build CMake.

Installation via vcpkg (recommandé pour Windows et Linux)

# Installez vcpkg s'il n'est pas déjà installé
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh  # ou bootstrap-vcpkg.bat pour Windows
./vcpkg integrate install

# Installez Folly
./vcpkg install folly:x64-windows  # pour Windows
./vcpkg install folly:x64-linux    # pour Linux

Installation via Conan

pip install conan
conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan
conan install folly/2023.01.30@ -r bincrafters

Compilation depuis les sources (Linux/macOS)

git clone https://github.com/facebook/folly
cd folly
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install

Intégration à un projet (CMake)

find_package(folly REQUIRED)
target_link_libraries(mon_projet PRIVATE Folly::folly)

3. Démarrage rapide — exemple minimal fonctionnel

L'exemple suivant illustre l'utilisation de folly::Future pour exécuter une tâche de manière asynchrone et de folly::format pour le formatage de chaînes.

#include <iostream>
#include <folly/futures/Future.h>
#include <folly/Format.h>

using namespace folly;

int main() {
    // Tâche asynchrone : retourner le nombre 42
    auto future = makeFuture(42);

    // Chaîne de traitement : multiplier par 2 et convertir en chaîne
    auto result = future
        .thenValue([](int x) { return x * 2; })
        .thenValue([](int x) { return format("Résultat : {}", x); })
        .get(); // On bloque le thread jusqu'à l'obtention du résultat

    std::cout << result << std::endl; // Affiche : Résultat :                    

Recommendations