# 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.