4 रिपॉजिटरी
Identifying functions that do not modify state to enable aggressive dead-code and result elimination.
Distinct from Side Effect Handlers: Distinct from reactive side-effect management; this is a static analysis for compiler optimizations.
Explore 4 awesome GitHub repositories matching programming languages & runtimes · Side-Effect Analysis. Refine with filters or upvote what's useful.
Prepack is a build-time code evaluator and JavaScript bundle optimizer. It functions as a static analysis compiler that pre-evaluates static code and precalculates function results and global assignments during the build phase to accelerate startup times and reduce bundle size. The project specifically targets JSX optimization by processing syntax and node serialization to improve user interface rendering efficiency. It utilizes a partial evaluation engine and static execution analysis to replace runtime computations with precalculated constants. The tool covers a range of capabilities inclu
Performs side-effect analysis to determine which functions can be safely precalculated.
Binaryen is a WebAssembly compiler toolchain and optimizer designed to transform, validate, and shrink binary modules. It provides a comprehensive intermediate representation framework that converts binary code into a single-assignment form to enable advanced program analysis and code transformation. The project includes a specialized transformation engine that applies iterative optimization passes to increase execution speed and reduce binary size. Additionally, it functions as a transpiler that translates WebAssembly binary modules into executable JavaScript for environments that lack nativ
Computes side effects for each function to allow the optimizer to move code past non-state-modifying calls.
Carp is a statically typed Lisp compiler that compiles Lisp-like syntax directly to C source code, enabling seamless integration with existing C libraries and low-level system programming. It manages memory deterministically at compile time using ownership tracking and linear types, eliminating garbage collection pauses and runtime overhead while ensuring type safety through an inferred static type system. The language distinguishes itself through compile-time macro expansion and metaprogramming capabilities, allowing code generation and transformation before final binary output. It enforces
Provides a language construct for discarding return values and executing code solely for side effects.
Simplify एक Android वर्चुअल मशीन सैंडबॉक्स, बाइटकोड निष्पादन ट्रेसर और स्टेटिक एनालिसिस फ्रेमवर्क है। इसे बाइनरी से पठनीय कोड को रिकवर करने के लिए डिज़ाइन किया गया है, जो भौतिक डिवाइस के बिना प्रोग्राम व्यवहार का अनुकरण (simulate) करता है। यह प्रोजेक्ट रिफ्लेक्शन कॉल्स को रिज़ॉल्व करने और कॉन्स्टेंट प्रोपेगेशन व डेड कोड रिमूवल के माध्यम से अस्पष्ट (obfuscated) कोड को सरल बनाने के लिए निष्पादन ग्राफ विश्लेषण का उपयोग करता है। यह सभी संभावित सशर्त शाखा परिणामों को ट्रैक करने के लिए मल्टी-पाथ निष्पादन सिमुलेशन का उपयोग करता है और कॉन्स्टेंट वैल्यू की पहचान करने के लिए इंस्ट्रक्शन फ्लो को मैप करता है। यह सिस्टम एक्सेप्शन प्रोपेगेशन ट्रेसिंग, मेथड साइड-इफेक्ट कैटेगराइजेशन और Java API कॉल सिमुलेशन सहित विश्लेषण क्षमताओं की एक विस्तृत श्रृंखला को कवर करता है। यह वर्चुअल मशीन स्टेट्स की निगरानी या ओवरराइड करने के लिए कस्टम हुक के माध्यम से मेथड निष्पादन को इंटरसेप्ट करने के लिए तंत्र भी प्रदान करता है।
Categorizes instructions based on their impact on external state to determine if code can be safely removed or inlined.