Folly para C++: guia completo com exemplos
1. O que é e para que serve
Folly (Facebook Open-source LibrarY) é uma biblioteca de componentes C++ desenvolvida e usada pelo Facebook (atual Meta). Ela oferece um conjunto de utilitários modernos, de alto desempenho e bem testados, que preenchem lacunas da biblioteca padrão do C++ (std) e do Boost. A Folly não substitui a STL, mas a expande, fornecendo soluções para problemas comuns no desenvolvimento de sistemas distribuídos de grande escala e servidores de alta carga.
Para que serve a Folly? No desenvolvimento C++ moderno, muitas vezes precisamos de ferramentas que não estão na biblioteca padrão: contêineres eficientes com propriedades específicas (como F14HashMap), ferramentas para programação assíncrona (Futures), operações atômicas com barreiras de memória otimizadas (AtomicHashMap), gerenciamento de memória sem locks (ConcurrentSkipList) e muitas outras otimizações de baixo nível. A Folly oferece tudo isso em componentes prontos e testados em produção. Ela é especialmente útil para desenvolvedores que escrevem código de servidor de alto desempenho, trabalham com protocolos de rede, grandes volumes de dados ou precisam de comportamento determinístico em cenários multithread.
A principal vantagem da Folly é seu foco em desempenho e correção. Muitos algoritmos na Folly são implementados usando os recursos mais recentes do C++ (C++14/17/20) e levam em conta as características dos processadores modernos (caches, previsão de desvios, instruções SIMD). Não é apenas "mais uma biblioteca", mas um conjunto de ferramentas que permite escrever código mais rápido e eficiente do que soluções equivalentes com STL puro ou Boost, especialmente em cenários de alta concorrência.
2. Instalação
A Folly é uma biblioteca C++, portanto não é instalada via pip ou npm. Para usá-la, é necessário compilar a biblioteca a partir do código-fonte e vinculá-la ao seu projeto. O método recomendado é usar o sistema de build CMake.
Instalação via vcpkg (recomendado para Windows e Linux)
# Instale o vcpkg, se ainda não estiver instalado
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh # ou bootstrap-vcpkg.bat no Windows
./vcpkg integrate install
# Instale a Folly
./vcpkg install folly:x64-windows # para Windows
./vcpkg install folly:x64-linux # para Linux
Instalação 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
Compilação a partir do código-fonte (Linux/macOS)
git clone https://github.com/facebook/folly
cd folly
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
Vinculação ao projeto (CMake)
find_package(folly REQUIRED)
target_link_libraries(my_project PRIVATE Folly::folly)
3. Início rápido — exemplo mínimo funcional
O exemplo a seguir demonstra o uso de folly::Future para execução assíncrona de tarefas e folly::format para formatação de strings.
#include <iostream>
#include <folly/futures/Future.h>
#include <folly/Format.h>
using namespace folly;
int main() {
// Tarefa assíncrona: retornar o número 42
auto future = makeFuture(42);
// Cadeia de processamento: multiplicar por 2 e converter para string
auto result = future
.thenValue([](int x) { return x * 2; })
.thenValue([](int x) { return format("Resultado: {}", x); })
.get(); // Bloqueia a thread até obter o resultado
std::cout << result << std::endl; // Exibirá: Resultado: 84
return 0;
} Também na biblioteca
Ktor Client Kotlin: guia completo com exemplos práticos
NLog para C# (.NET): guia completo com exemplos práticos
parking_lot Rust: guia completo com exemplos práticos