Abseil का परिचय: यह क्या है और क्यों ज़रूरी है?
Abseil (उच्चारण "एब-सिल") Google द्वारा विकसित C++ भाषा के लिए एक ओपन-सोर्स लाइब्रेरी है। यह C++ की स्टैंडर्ड लाइब्रेरी (STL) को पूरक बनाने के लिए डिज़ाइन की गई है और इसमें उच्च-गुणवत्ता वाले, अच्छी तरह से परीक्षित और कुशल कंपोनेंट्स शामिल हैं, जिनका उपयोग Google अपने लगभग सभी C++ प्रोजेक्ट्स में करता है।
Abseil क्यों ज़रूरी है? मुख्य कारण:
- STL की कमियों को भरना: स्टैंडर्ड C++ लाइब्रेरी धीरे-धीरे विकसित होती है। Abseil उन सामान्य समस्याओं के लिए तैयार समाधान प्रदान करता है जो व्यवहार में अक्सर आती हैं, लेकिन अभी तक स्टैंडर्ड में शामिल नहीं हैं (जैसे स्ट्रिंग्स, कमांड-लाइन फ्लैग्स, हैश टेबल्स)।
- उच्च प्रदर्शन: Abseil का कोड आधुनिक प्रोसेसर और कंपाइलर के लिए ऑप्टिमाइज़ किया गया है। कई एल्गोरिदम कैश-मेमोरी और SIMD निर्देशों को ध्यान में रखकर बनाए गए हैं।
- सुरक्षा और विश्वसनीयता: इस लाइब्रेरी का Google के production वातावरण में सक्रिय रूप से उपयोग होता है, जो इसकी स्थिरता सुनिश्चित करता है। सभी फंक्शन्स में सख्त बाउंड्री और टाइप चेकिंग होती है।
- संगतता: Abseil सभी प्रमुख कंपाइलर (GCC, Clang, MSVC) और ऑपरेटिंग सिस्टम (Linux, macOS, Windows) पर काम करता है।
- मॉड्यूलरिटी: आप पूरी लाइब्रेरी को शामिल किए बिना केवल अपने ज़रूरी कंपोनेंट्स का उपयोग कर सकते हैं।
Abseil में कई मुख्य मॉड्यूल शामिल हैं:
- absl/strings: स्ट्रिंग्स के साथ काम करने के लिए उन्नत फंक्शन्स (विभाजन, जोड़ना, बदलना, फ़ॉर्मेटिंग)।
- absl/container: अतिरिक्त कंटेनर (flat_hash_map, flat_hash_set, InlinedVector, आदि)।
- absl/flags: कमांड-लाइन फ्लैग्स को संभालने के लिए शक्तिशाली सिस्टम।
- absl/time: समय और टाइम ज़ोन के साथ काम करना।
- absl/status: बेहतर एरर हैंडलिंग (StatusOr, Status)।
- absl/algorithm: अतिरिक्त एल्गोरिदम (contains, clamp, आदि)।
Abseil की स्थापना (इंस्टॉलेशन)
Python या JavaScript के विपरीत, C++ लाइब्रेरीज़ pip या npm के माध्यम से इंस्टॉल नहीं होतीं। Abseil सोर्स कोड के रूप में वितरित की जाती है, जिसे CMake या Bazel का उपयोग करके बिल्ड करना होता है। आइए सबसे लोकप्रिय तरीका देखें — CMake के माध्यम से बिल्ड करना।
vcpkg के माध्यम से इंस्टॉलेशन (Windows के लिए अनुशंसित)
vcpkg Microsoft का C++ पैकेज मैनेजर है।
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg install abseil:x64-windows
Conan के माध्यम से इंस्टॉलेशन
Conan एक और लोकप्रिय पैकेज मैनेजर है।
pip install conan
conan install abseil/20230801.0@
CMake के माध्यम से मैन्युअल बिल्ड
git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
cmake --build . --target install
CMakeLists.txt में कनेक्ट करना
find_package(absl REQUIRED)
target_link_libraries(my_project
absl::strings
absl::flat_hash_map
absl::flags
)
त्वरित शुरुआत: कोड उदाहरण
आइए एक सरल प्रोग्राम लिखें जो स्ट्रिंग्स और कमांड-लाइन फ्लैग्स के लिए Abseil का उपयोग करता है।
#include <iostream>
#include "absl/strings/str_join.h"
#include "absl/flags/flag.h"
#include "absl/flags/parse.h"
ABSL_FLAG(std::string, name, "World", "अभिवादन के लिए नाम");
int main(int argc, char* argv[]) {
absl::ParseCommandLine(argc, argv);
std::vector<std::string> words = {"Hello", absl::GetFlag(FLAGS_name), "!"};
std::string greeting = absl::StrJoin(words, " ");
std::cout << greeting << std::endl;
return 0;
}
कंपाइल और रन करना:
g++ -std=c++17 main.cpp -labsl_strings -labsl_flags