11
22# Change Log
33All notable changes to this project will be documented in this file.
4-
4+
55The format is based on [ Keep a Changelog] ( http://keepachangelog.com/ )
66and this project adheres to [ Semantic Versioning] ( http://semver.org/ ) .
77
8+ ## [ 3.0.1] - 2025
9+
10+ ### Major Refactoring
11+ - Extracted ` BaseGenerator ` ABC from 5 duplicated generator classes (12,924 → 4,767 lines)
12+ - Created ` GeneratorState ` dataclass replacing 13 mutable instance variables
13+ - Extracted ` BaseFuzzer ` from duplicated Fuzzer/NatchFuzzer (1,602 → 891 lines)
14+ - Moved ` ContextGenerator ` and ` NatchGenerator ` to separate modules
15+ - ` FuzzDataProviderGenerator ` reduced from 2,715 to 222 lines
16+ - ` BlobStamperGenerator ` reduced from 2,693 to 37 lines
17+
18+ ### New Features
19+ - Custom exception hierarchy (` futag.exceptions ` : FutagError, InvalidPathError, etc.)
20+ - Python ` logging ` module integration (replaces print statements)
21+ - ` GeneratorState.save() ` /` restore_from() ` for clean recursive backtracking
22+ - GitHub Actions CI (python-tests.yml, syntax-check.yml)
23+
24+ ### Bug Fixes
25+ - Fixed null-pointer dereference in FutagConsumerAnalyzer (cfg->size() before null check)
26+ - Fixed memory leak in FutagConsumerAnalyzer (new int() instead of new int[ ] )
27+ - Fixed ` param_list ` duplication bug in ` __save_old_values `
28+ - Fixed 14+ file handle leaks (bare open() → with statements)
29+ - Fixed ` _build_ovearall_coverage ` typo → ` _build_overall_coverage `
30+ - Replaced bubble sort in ` sort_callexprs ` with ` sorted() `
31+
32+ ### Documentation
33+ - Created docs/architecture.md, docs/generators.md, docs/checkers.md, docs/python-api.md
34+ - Created CONTRIBUTING.md
35+ - Added comprehensive docstrings and return type hints to all methods
36+ - Added GPL v3 license headers to all Python source files
37+ - Translated template-script.py comments from Russian to English
38+
39+ ### C++ Checker Improvements
40+ - Added ` MAX_CFG_BLOCKS ` and ` REPORT_FILENAME_RAND_LEN ` constants
41+ - Changed ` SmallString<0> ` to ` SmallString<256> `
42+ - Added Doxygen comments to all checker methods
43+ - Synchronized base files with LLVM 18 variants
44+
845## 20250824
946- Add support for Fuzzed Data Provider
1047
11- ## 20220716
12- - Add modules preprocessor to Futag python-package
13- - Fix README of Futag python-package
48+ ## 20230807
49+ - Optimize ConsumerBuilder
50+ - Add example for context-generation https://github.com/thientc/Futag-tests/tree/main/json-c-contexts
1451
15- ## 20220727
16- - Add custom-llvm: download and build llvm, clang, compiler-rt
17- - Fix document
52+ ## 20230711
53+ - Support generation fuzz driver for Natch data: https://github.com/thientc/Futag-tests/tree/main/Natch
1854
19- ## 20220801
20- - Add multi-processing support for compiling
21- - TODO: Check analysis result befor generating fuzz-driver
55+ ## 20230522
56+ - Fix error in generator
57+ - Add generation for pugi::char_t * &
2258
23- ## 20220808
24- - Fix bug in generator
25- - Fix for svace analysing
26- - add first version of fuzzer and result of Fuzzing for Svace
59+ ## 20230417
60+ - Add generation for anonymous function
61+ - Fix error in Builder
2762
28- ## 20220811
29- - Fix bug in generator
30- - Add pre release package
31- - Fix document
63+ ## 20230320
64+ - Support for context generation
3265
33- ## 20220821
34- - Fix bug in generator
35- - Add release package
36- - Fix document
66+ ## 20230305
67+ - Fix error python in Builder
68+ - Fix error python in Generator for wchar_t string
3769
38- ## 20220911
39- - Add support for fuzz-introspector
40- - Migrate to llvm-14.0.6
70+ ## 20230214
71+ - Add is_simple for 4consummer_analysis_db
72+ - Add CFG and DFC analysis
73+ - Add Fuzzer extra params support
4174
42- ## 20220921
43- - Add support for Makefile
44- - Generation for global function of C++ libraries
45- - Add testing repository: https://github.com/thientc/Futag-tests
75+ ## 20221220
76+ - Fix errors while compiling AFL++, return coverage parameters
77+ - Fix Readme
78+ - change LLVM_ENABLE_ZLIB to ON
79+
80+ ## 20221107
81+ - And generation for anonymous functions
82+ - Reformat Python classes
83+ - Fix included paths of compiling command
84+
85+ ## 20221018
86+ - Add support for C++, generate for constructors and for method of class, which has default constructors
87+ - Tested on FreeImage and Pugixml
4688
4789## 20221012
4890- Add support for AFLplusplus
@@ -51,43 +93,38 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
5193- Add compilition database of building
5294- Add analysis of headers
5395
54- ## 20221018
55- - Add support for C++, generate for constructors and for method of class, which has default constructors
56- - Tested on FreeImage and Pugixml
57-
58- ## 20221107
59- - And generation for anonymous functions
60- - Reformat Python classes
61- - Fix included paths of compiling command
62-
63- ## 20221220
64- - Fix errors while compiling AFL++, return coverage parameters
65- - Fix Readme
66- - change LLVM_ENABLE_ZLIB to ON
96+ ## 20220921
97+ - Add support for Makefile
98+ - Generation for global function of C++ libraries
99+ - Add testing repository: https://github.com/thientc/Futag-tests
67100
68- ## 20230214
69- - Add is_simple for 4consummer_analysis_db
70- - Add CFG and DFC analysis
71- - Add Fuzzer extra params support
101+ ## 20220911
102+ - Add support for fuzz-introspector
103+ - Migrate to llvm-14.0.6
72104
73- ## 20230320
74- - Support for context generation
105+ ## 20220821
106+ - Fix bug in generator
107+ - Add release package
108+ - Fix document
75109
76- ## 20230305
77- - Fix error python in Builder
78- - Fix error python in Generator for wchar_t string
110+ ## 20220811
111+ - Fix bug in generator
112+ - Add pre release package
113+ - Fix document
79114
80- ## 20230417
81- - Add generation for anonymous function
82- - Fix error in Builder
115+ ## 20220808
116+ - Fix bug in generator
117+ - Fix for svace analysing
118+ - add first version of fuzzer and result of Fuzzing for Svace
83119
84- ## 20230522
85- - Fix error in generator
86- - Add generation for pugi::char_t * &
120+ ## 20220801
121+ - Add multi-processing support for compiling
122+ - TODO: Check analysis result befor generating fuzz-driver
87123
88- ## 20230711
89- - Support generation fuzz driver for Natch data: https://github.com/thientc/Futag-tests/tree/main/Natch
124+ ## 20220727
125+ - Add custom-llvm: download and build llvm, clang, compiler-rt
126+ - Fix document
90127
91- ## 20230807
92- - Optimize ConsumerBuilder
93- - Add example for context-generation https://github.com/thientc/ Futag-tests/tree/main/json-c-contexts
128+ ## 20220716
129+ - Add modules preprocessor to Futag python-package
130+ - Fix README of Futag python-package
0 commit comments