# Dev Update (Week 16): - **Key Tasks and Features:** - Added tracers for processing **NGram** stats, including a **transaction tracer**, **block tracer**, and **file tracer**. - Developed a plugin with a highly configurable setup. Some of the key options include: - **Activation**: The ability to enable or disable the plugin. - **File Output**: Configurable file location for dumping the stats. - **Block Write Frequency**: Users can define the frequency (in blocks) for writing stats to disk. - **Opcode Ignore List**: Selective ignoring of certain opcodes via an `Ignore` option, which allows users to exclude opcodes from being tracked. - **Queue Management**: - Set the size of the **instruction queue** to manage the number of instructions gathered per block. - Configure the **processing queue size**, which controls the number of tasks that can be queued when tracing and dumping stats in the background. - **CMSketch Configuration**: Users can fine-tune the **CMSketch** probabilistic data structure with options like: - Number of buckets (`SketchBuckets`) and hash functions (`SketchHashFunctions`). - Error tolerance (`SketchMaxError`) and minimum confidence (`SketchMinConfidence`) settings for better accuracy in data summarization. - **Stats Analysis**: The plugin also includes options to configure: - The number of top **NGrams** to track (`AnalyzerTopN`). - The **minimum support threshold** for initial tracking of NGrams. - **Capacity** and **buffer size** for filters used in tracking. - The **reset or reuse threshold** for CMSketches, ensuring efficient usage of memory and sketches during analysis. This is done by tracking the error each sketch produces and managing new sketch instantiations based on it. - **New Features in Testing:** - All the above-mentioned features, including tracers and the plugin configuration, have been completed and are now in the testing phase. - **Bug Fixes and Improvements:** - Improvements were made to how the **tracer** processes data. Previously, stats were computed and dumped every block while blocking execution, but with the newly added **write frequency** option, the execution data is now gathered and queued for processing in the background. This allows execution to continue without blocking, although it is more memory-intensive. - Fixes were made so that the queue, at the time of processing, is disposed correclty after sending data to the analyzer.