🔎 Meta Open Source 101 🔎 Infer is a powerful static analysis tool developed by Meta to identify bugs in your code before it hits production. It helps catch issues like null pointer exceptions, resource leaks, and more, ensuring higher code quality - https://fbinfer.com/ Let's take a deep dive into how to use Infer! 1️⃣ Getting Started: First, install Infer on your machine. For macOS, use Homebrew: `brew install infer` For other platforms, follow the installation instructions on the GitHub page - https://lnkd.in/enyGXXwb 2️⃣ Running Infer: To analyze a project, navigate to the project directory and run Infer with your build command. For example, to analyze an Android project: `infer run -- ./gradlew build` Infer will analyze the code and report potential issues - https://lnkd.in/eqwKEDWJ 3️⃣ Reviewing Results: After running Infer, review the generated report to see the list of detected issues: `infer explore` This tool allows you to see error traces leading to each bug reported by Infer, which can be helpful in tracking down the precise cause of each bug - https://lnkd.in/eCJKNYbe Infer helps you catch critical bugs early in the development cycle, improving code reliability and maintainability. Learn more about Infer in one of our ELI5 videos here: https://lnkd.in/gYS7Q4fe
Meta Open Source
Software Development
Menlo Park, California 8,086 followers
Empowering diverse communities through open source technology.
About us
Meta is committed to the notion that open source not only provides great technology for developers, but also brings the best out in people. Follow us for updates on Meta's open source.
- Website
-
https://opensource.facebook.com/
External link for Meta Open Source
- Industry
- Software Development
- Company size
- 10,001+ employees
- Headquarters
- Menlo Park, California
Updates
-
⚡️ OSS Project Spotlight ⚡️ Sapling is a scalable, user-friendly source control management system developed by Meta. It’s designed to handle large codebases with ease, offering high performance and a smooth developer experience. Visit their site to learn more: https://sapling-scm.com/
Sapling from Meta | Sapling
sapling-scm.com
-
🔎 Meta Open Source 101 🔎 Buck2 is a fast and efficient build system designed to handle large-scale codebases with ease. Developed by Meta, Buck2 focuses on parallel execution, caching, and extensibility to boost developer productivity - https://buck2.build/ Let's explore how to use Buck2 below: 1️⃣ Getting Started: Install Buck2 by following the instructions on the Buck2 site - https://lnkd.in/gcR6VRAe Once installed, initialize a new project: `buck2 init --git` This sets up the basic structure for your project. Learn more: https://lnkd.in/gRYQRy4K 2️⃣ Defining Build Rules: Create a BUCK file to define build rules. For example, to build a simple C++ application: ``` cxx_library( name = "example", srcs = glob(["src/**/*.cpp"]), headers = glob(["include/**/*.h"]), deps = [], ) ``` This rule tells Buck2 how to compile your C++ source files and manage headers - https://lnkd.in/gpA3YHne 3️⃣ Building the Project: Use Buck2 to build your project. Run the following command in your project directory: ``` buck2 build //:example ``` Buck2 will analyze dependencies and build the specified target efficiently. Buck2 streamlines the build process for large projects, improving performance and scalability. Explore the full documentation to leverage its powerful features and optimize your development workflow: https://buck2.build/
Buck2 build system website | Buck2
buck2.build
-
⚡️ OSS Project Spotlight ⚡️ Hydra is a flexible and powerful framework for managing complex configurations in Python applications. Developed by Meta, it simplifies the process of configuring, running, and scaling large projects. Learn more: https://lnkd.in/gznvdjF6
GitHub - facebookresearch/hydra: Hydra is a framework for elegantly configuring complex applications
github.com
-
🔎 Meta Open Source 101 🔎 Watchman is a an OSS tool developed by Meta to watch files and record when they change. It’s designed to improve development workflows by triggering actions based on file system events, making it a perfect fit for build systems and IDEs - https://lnkd.in/eYjuNKf 1️⃣ Getting Started: Install Watchman on your machine. For macOS, use Homebrew: `brew install watchman` For other platforms, follow the installation instructions on the GitHub page - https://lnkd.in/gnrMGmv7 2️⃣ Setting Up: Configure Watchman to watch a directory. Create a `.watchmanconfig` file in your project root with no content besides `{}`.Then run: `watchman watch .` This command tells Watchman to start watching your project directory - https://lnkd.in/gGC2cnMk 3️⃣ Using Watchman: One of the great uses of Watchman is setting up a trigger to run a script when files change. For example, this operation will run build.sh whenever a JavaScript file in the directory changes: `watchman -- trigger . build '*.js' -- ./build.sh` Learn more about triggers here: https://lnkd.in/gRugVuks Watchman enhances your development workflow by automating tasks based on file changes, boosting efficiency and productivity. To learn more about the project, watch our ELI5 video about Watchman: https://lnkd.in/gnrV6UM5
Watchman - A file watching service | Watchman
facebook.github.io
-
⚡️ OSS Project Spotlight ⚡️ Proxygen is an advanced C++ HTTP framework developed by Meta. It offers a suite of libraries for building high-performance, scalable web servers and proxies, supporting HTTP/1.1, HTTP/2, and HTTP/3. Visit their repo to learn more: https://lnkd.in/gWQQNciR
GitHub - facebook/proxygen: A collection of C++ HTTP libraries including an easy to use HTTP server.
github.com
-
🔎 Meta Open Source 101 🔎 Hermes is a JavaScript engine optimized for React Native, designed to improve app performance by reducing startup times and memory usage. Perfect for mobile applications, Hermes boosts efficiency and speed - https://lnkd.in/gDWJ_fHc Today, we will explore how to use it: 1️⃣ Getting Started: First, ensure you have React Native set up. Since React Native is now shipped with Hermes, you can initialize a new RN project with Hermes already enabled: `npx react-native init MyApp --version 0.71.0` 2️⃣ Enable Hermes: On apps using older version of RN (pre v0.7), you can enable Hermes support directly. For example for Android, you would need to open `android/app/build.gradle` and add the following configuration: ``` project.ext.react = [ enableHermes: true // <- here, enable Hermes. ] ``` And then rebuild your project: `cd android && ./gradlew clean && ./gradlew assembleRelease` 3️⃣ Testing Performance: Measure the performance benefits Hermes brings by comparing your app’s startup time and memory usage with and without Hermes enabled. You can use tools like systrace and Android Profiler to collect data to showcase how improving performance can better user experiences. Hermes optimizes your React Native app, providing faster execution and reduced memory footprint. Watch our ELI5 video about Hermes: https://lnkd.in/gdF5PT72, or dive into the documentation and start enhancing your mobile apps today: https://lnkd.in/gDWJ_fHc.
GitHub - facebook/hermes: A JavaScript engine optimized for running React Native.
github.com
-
⚡️ OSS Project Spotlight ⚡️ Infer is a powerful static analysis tool developed by Meta to identify bugs in your code before it hits production. It helps catch issues like null pointer exceptions and resource leaks early in the development cycle. Learn more on their website: https://fbinfer.com/ or by watching a short video on our channel: https://lnkd.in/gYS7Q4fe
Infer Static Analyzer | Infer | Infer
fbinfer.com
-
🔎 Meta Open Source 101🔎 RocksDB is a high-performance embedded database for key-value data for fast storage and retrieval. It’s optimized for SSDs and memory-rich environments, making it ideal for large-scale applications. Let's dive into how to use RocksDB (https://rocksdb.org/)! 1️⃣ Getting Started: To setup RocksDB on your local machine, first, clone the RocksDB repository and build it: ``` git clone https://lnkd.in/geaEq4qb cd rocksdb gmake static_lib ``` 2️⃣ Using RocksDB: Include RocksDB in your project and start a simple database. Here is an example of a basic operation in RocksDB with C++ ``` #include <rocksdb/db.h> int main() { rocksdb::DB* db; rocksdb::Options options; options.create_if_missing = true; rocksdb::Status status = rocksdb::DB::Open(options, "/tmp/testdb", &db); assert(status.ok()); std::string value; db->Put(rocksdb::WriteOptions(), "key", "value"); db->Get(rocksdb::ReadOptions(), "key", &value); std::cout << value << std::endl; delete db; return 0; } ``` 3️⃣ Advanced Features: Utilize RocksDB’s advanced features like column families for better data organization. Column families help in managing different categories of data efficiently. Here is an example: ``` rocksdb::ColumnFamilyHandle* cf; db->CreateColumnFamily(rocksdb::ColumnFamilyOptions(), "new_cf", &cf); db->Put(rocksdb::WriteOptions(), cf, "key", "value"); db->Get(rocksdb::ReadOptions(), cf, "key", &value); std::cout << value << std::endl; db->DestroyColumnFamilyHandle(cf); ``` RocksDB offers robust performance and flexibility for handling large-scale data operations. Explore the comprehensive documentation and start optimizing your data storage solutions today! We also have an ELI5 video about RocksDB shows the project in action - check it out: https://lnkd.in/gtJArny4
RocksDB | A persistent key-value store
rocksdb.org
-
⚡️OSS Project Spotlight ⚡️ Detectron2 is a powerful open source library for object detection and segmentation. Developed by Meta, it provides cutting-edge tools and models to build high-performance vision applications. Perfect for research and production! Learn more: https://lnkd.in/d38MS9s
GitHub - facebookresearch/detectron2: Detectron2 is a platform for object detection, segmentation and other visual recognition tasks.
github.com