9 dépôts
Utilities that allow programs to inspect and manipulate data structures or types at runtime.
Distinguishing note: Focuses on runtime inspection of binary data without compile-time schema knowledge.
Explore 9 awesome GitHub repositories matching software engineering & architecture · Reflection Frameworks. Refine with filters or upvote what's useful.
FlatBuffers is a cross-platform serialization library designed for performance-critical applications that require efficient, zero-copy data access. By organizing data in a structured binary format, it allows applications to read and write complex data structures directly from memory-mapped buffers without the need for intermediate parsing or temporary object allocation. The project distinguishes itself through a schema-driven approach that balances high-performance access with long-term data evolution. It utilizes a unique memory layout featuring relative offsets and inline fixed-size structu
FlatBuffers allows C++ developers to navigate and modify binary data at runtime without prior schema knowledge by loading binary definitions and using reflection functions.
LibGDX is a Java-based framework designed for cross-platform game development, enabling the creation and deployment of 2D and 3D games across desktop, mobile, and web environments from a single codebase. It functions as a comprehensive library that abstracts hardware-accelerated graphics, audio, input, and file system access, providing a unified interface for developers to manage game logic and application lifecycles. The framework distinguishes itself through a high-performance architecture that prioritizes efficiency and native interoperability. It utilizes a batch-oriented graphics pipelin
Supports dynamic inspection in restricted environments by generating static class information caches during compilation.
Cheat Engine is a software reverse engineering suite and memory editor designed for the Windows environment. It functions as a comprehensive platform for inspecting, analyzing, and modifying the internal logic and data structures of running applications. The tool provides capabilities for real-time memory scanning and manipulation, allowing users to locate and alter specific values within a process's address space. It distinguishes itself through advanced debugging features, including hardware-assisted debugging, kernel-mode driver injection for bypassing memory protections, and dynamic binar
Parses internal framework structures to reconstruct object hierarchies and method signatures for managed applications.
This project is a high-performance JSON library for Go, serving as a replacement for the standard encoding/json package. It provides a serialization engine for encoding and decoding data structures, alongside a schemaless parser for extracting specific values from JSON blobs using paths. The library distinguishes itself through a focus on reducing CPU and memory overhead. It implements a high-performance encoder that utilizes buffer reuse and reduced float precision to increase data throughput. Broad capability areas include data serialization, high-performance JSON processing, and schema-le
Analyzes Go struct types at runtime to build cached metadata for faster serialization and deserialization.
Mockery is a PHP framework designed for creating test doubles, stubs, and spies to facilitate isolated unit testing. It serves as a utility for simulating class behavior, intercepting method calls, and validating arguments, allowing developers to replace real dependencies with mock objects to verify that code components interact as intended. The framework distinguishes itself through advanced capabilities for handling complex testing scenarios, such as bypassing constructors, mocking protected methods, and intercepting static calls or internal object instantiations. It provides a fluent inter
Allows toggling internal metadata storage to resolve compatibility issues with static analysis or backup tools.
btrace est un outil de traçage dynamique et un profileur de performance JVM utilisé pour injecter des scripts d'instrumentation sécurisés dans une machine virtuelle Java en cours d'exécution sans nécessiter de redémarrage du processus. Il fonctionne comme un framework d'agent Java et un serveur de protocole de contexte de modèle (Model Context Protocol), exposant les opérations de diagnostic JVM et les outils de traçage aux grands modèles de langage et aux assistants IA. Le projet se distingue en permettant l'injection de code en temps réel et l'instrumentation au niveau du bytecode via un protocole binaire sécurisé. Il garantit la stabilité en production grâce à un moteur d'analyse de sécurité statique qui bloque les modèles de code instables, tels que les boucles et les allocations, pendant la phase de compilation du script. Le système couvre un large éventail de capacités d'observabilité, notamment le traçage de l'exécution des méthodes, le suivi de l'allocation d'objets et la surveillance de l'accès aux champs. Il fournit un profilage des performances via des métriques de latence et l'échantillonnage des données d'exécution, et peut émettre des événements Java Flight Recorder personnalisés pour une analyse native. L'agent prend en charge des stratégies de déploiement flexibles, notamment le démarrage au lancement ou l'attachement à des processus en direct dans des environnements conteneurisés à l'aide de bundles fat JAR.
Generates cached reflective dispatchers to minimize overhead when interacting with application classes.
Otto est un système de communication piloté par événements conçu comme un bus d'événements pour les applications Android. Il fournit un mécanisme pour découpler les composants d'application en routant les événements entre eux sans nécessiter de dépendances directes. Le système est conscient de l'état, ce qui signifie qu'il peut fournir la valeur connue la plus récente aux nouveaux abonnés immédiatement après l'enregistrement. Il fonctionne comme un répartiteur d'événements synchrone, garantissant que tous les auditeurs enregistrés répondent à un objet avant que l'exécution ne continue. La bibliothèque inclut des capacités pour la gestion des abonnements aux événements et l'application de l'exécution des threads pour restreindre les rappels à des threads spécifiques. Elle utilise un mapping d'abonné basé sur le type pour organiser les auditeurs selon la classe des événements qu'ils reçoivent.
Uses Java reflection to identify and execute methods annotated as subscribers when events are published.
Fury est un framework de sérialisation binaire multi-langage conçu pour encoder des objets de domaine et des graphes complexes afin de faciliter l'échange de données entre langages. Il inclut un compilateur de langage de définition d'interface (IDL) qui traduit les définitions de schéma en types natifs idiomatiques et en code de sérialisation répétitif à travers plusieurs langages. Le projet se distingue par un lecteur binaire zero-copy qui permet d'accéder à des champs spécifiques sans désérialiser l'objet entier, ainsi qu'un sérialiseur de graphe d'objets qui préserve les références circulaires et l'intégrité référentielle. Il dispose également d'un convertisseur de données qui transforme les données binaires basées sur des lignes en formats Apache Arrow colonnaires pour les charges de travail analytiques. Le framework couvre de vastes domaines de capacités, incluant l'évolution de schéma pilotée par métadonnées pour la compatibilité ascendante et descendante, un processus de compilation AOT au moment du build pour éliminer la réflexion à l'exécution, et une désérialisation sécurisée via une validation de type basée sur liste blanche. Il fournit en outre une intégration pour des appels de procédure à distance haute performance via gRPC.
Reduces redundant type information by writing class metadata once per stream and using local index references.
Ce projet est un guide complet de programmation de performance et une référence pour le langage Go, se concentrant sur l'efficacité du runtime et l'optimisation de la mémoire. Il fournit une collection de modèles et de techniques conçus pour augmenter la vitesse d'exécution en réduisant la surcharge du garbage collector et en optimisant l'utilisation de la mémoire. La ressource se distingue par des implémentations de référence détaillées pour l'optimisation mémoire, telles que l'analyse d'échappement (escape analysis), le pooling d'objets et l'alignement mémoire des structures. Elle propose des stratégies spécifiques pour réduire la taille des binaires et améliorer l'efficacité du cache CPU grâce à l'optimisation de la disposition mémoire des structures et à l'utilisation de placeholders sans allocation. Le projet couvre un large éventail de capacités d'ingénierie backend, incluant la gestion de la concurrence avec des pools de workers et des primitives de synchronisation, le routage RPC et HTTP haute performance, et des stratégies de mise en cache distribuée. Il inclut également des conseils sur l'observabilité via le profilage CPU et mémoire, ainsi que des modèles d'assurance qualité pour les tests unitaires fonctionnels et la génération d'objets mock. Le contenu est structuré comme une série de tutoriels, d'exemples architecturaux et de guides de benchmarking pour aider les développeurs à analyser et corriger les goulots d'étranglement de performance.
Optimizes reflection performance by caching field name to index mappings to avoid repeated linear searches.