Releases: MozillaSecurity/funfuzz
Releases · MozillaSecurity/funfuzz
0.6.0
0.6.x supports Python 3.6+ only.
Features:
- funbind: Experimental integration with binaryen landed (Linux-only) (#219)
- funbind: binaryen version bumped to 68
- jsfunfuzz: Initial support for mark bit and gray root functions,
newGlobal({newCompartment: true}),Object.values,Object.[get|set]PrototypeOfandenableShapeConsistencyChecks() - compare_jit: Ignore
Object.getOwnPropertyNames,dumpScopeChain,addMarkObservers,clearMarkObserversandgetMarks - randorderfuzz: support streams tests
- Use exponential backoff for wasm file execution
- Add a lock using fasteners to prevent
wasm-optfrom tripping over itself - Use exponential backoff for FuzzManager submission (#145)
- ARM64 code improvements (both simulator and native)
- ICU support bumped up to version 63
- Max gczeal value bumped up to 25
- Bump minimum macOS to be 10.13.6
- Shell builds are compiled with
--disable-craneliftonly if on m-c rev 6fcf54117a3b or later, till current m-c tip - Make workaround for compiling further back, on Linux systems with sed >= 4.3 and add tests
- Use GCC for 32-bit builds when bisecting back prior to m-c rev e1cac03485d9
- Support
--more-compartmentsin most places --enable-streamshas been deprecated in favour of--no-streams- (all code relating to Python 2.7 support have been removed)
Bugfixes:
- funbind: Disable on ARM64 Linux due to binaryen GH issue 1615
- Fixed TypeError thrown when
file_contains_stris run after move to Python 3.6+ (#220) - Do not specify function names in
__init__.pysince we are now on Python 3.6+ to fix RuntimeWarning (#208) - Remove weights in build_options for slow devices since we do not deal with those anymore
- Remove
--ion-loop-unrolling=on/offas per bug 1520998 - Remove flags related to
--no-wasmfrom compare_jit testing, replacing with new ones, e.g.--wasm-compiler=[none|baseline|ion|baseline+ion] - Removed some subprocess calls in favour of the more pythonic way, e.g. for gzipping code
- Remove "-backup" file logic as its support was flaky
- Tweak packaging mode to use find_packages from setuptools in setup.py
- Windows Asan binary support fixes
- Library version bumps
- Various other bugfixes
Testing-related:
- code coverage tests added (#202)
- funfuzz now uses
pytestthroughout, oldunittest-related code has been removed - Switch to using
--streamwhen running hg clone, on Travis shellcheckandbashatenow run on Travis for bash scripts- Fast tests run on Travis for macOS and Windows
- AppVeyor integration has been removed from funfuzz
- Support pylint 2.x on Python 3 (#218)
- Add cleanup script to wipe
*.pyc,*.pyofiles and__pycache__dirs, run flake8, fast pytests and pylint - Various other Travis/testing bugfixes
0.5.0
0.5.x is the final version series with stable dual Python 2/3 support, and the branch will then be put on maintenance mode. Going forward, funfuzz will be on Python 3.6+
Features:
- funfuzz: Numerous Python 3 compatibility fixes
- funfuzz: SpiderMonkey code coverage support added
- funfuzz: The
crashesatinterestingness test has been refactored to use argparse, logging and pathlib (#199) - funfuzz:
flake8-commas,flake8-quotesextensions toflake8linting were added - funfuzz: There is now a
get_hg_repo.shscript in the util directory to clonemozilla-centralormozilla-betausing aria2 instead - funfuzz: Remove
shellify(#184) - funfuzz/compare_jit:
--no-streamsand--enable-wasm-gcare now tested - funfuzz/compare_jit: Removed
--ion-shared-stubs=[on|off],--non-writable-jitcode,--ion-aa=flow-sensitiveand--ion-aa=flow-insensitivesince they are no longer part of SpiderMonkey - jsfunfuzz:
objectEmulatingUndefinedbecamecreateIsHTMLDDA, see bug 1410194 - jsfunfuzz: Generates decreasing for-loops
- jsfunfuzz: Tests the
keepFailing:trueoption for oomTest - jsfunfuzz: Support
recomputeWrappers - jsfunfuzz:
evaluateacceptssaveIncrementalBytecodeas a parameter, see bug 1427860 - jsfunfuzz:
newGlobalacceptssameCompartmentAsas a parameter, see bug 1487238 - jsfunfuzz:
newGlobalacceptsinvisibleToDebuggeras a parameter - jsfunfuzz: Object.prototype no longer have the
__count__and__parent__properties - jsfunfuzz: Stop generating generator expressions
Bugfixes:
- compare_jit:
--no-native-regexpand--no-wasmwere removed from basic_flag_sets - compare_jit: Calling
ShellResultinjs_interestingwould fail due to the absence ofoptions.jsengine - funfuzz: Fix #9 - compileShell fails on Fedora due to autoconf 2.13 binary name discrepancy (#189)
- funfuzz: Fix #33 - Dump the error to
.bustedlog files when configuration fails, but append the info to them if they already exist - funfuzz: Off-by-one error in path concatenation in
jsFilesInfunction fixed - funfuzz: Some Clang/ASan build support fixes
- funfuzz: Rename
spstoos_opsin loop.py (#205) - Various other bugfixes
0.1.2
Bugfixes:
- On Windows, carriage returns (CR) would be used on Python 2.7 when compareJIT files were created. The issue was fixed by replacing them with line breaks (LF)
.gitignorewas backported from master- Fixate several python linter/test package versions on Travis/AppVeyor
- Fix
wrong-import-orderpylint error messages - Python 3 was never properly supported on the 0.1 legacy branch, so stop running the linters using it
- Move Travis on from the Trusty image to the Xenial one
This is the last point release on 0.1.x and marks the end-of-life of the 0.1 legacy branch.
0.4.2
Bugfixes:
- Fix #185 -
Commandline argument -t "js" in bot.py is not recognized. But it is mentioned in the readme.md. - Disable tests involving compile_shell on Python 2.7 mode unless Python 3.5+ is installed due to a mozilla-central requirement.
- This temporarily lowers code coverage numbers reported to Codecov via Travis, until Python 3.5+ support is finished.
- Integrated the isort Python checker into flake8 linting process
- More automation / documentation / linting fixes
Notes:
- Windows is still on the 0.1.x legacy branch, until Python 3.5+ support is completed
0.4.1
Bugfixes:
- Fixed crashes in
grabCrashLogby dealing withstr/unicodetypes better - Made
repos_updatenot update funfuzz anymore, since pip 10 no longer comes with amainmethod and we should not rely on the internals of pip - Simplified
botoimport code - Inlined platform detection code instead of relying on
subprocesses - Tweaked Travis / AppVeyor CI configurations
Notes:
- Windows is still on the 0.1.x legacy branch, until Python 3.5+ support is completed
0.4.0
Big release!
Features:
- Hit 40% test coverage! (previously 30%)
- jsfunfuzz updates
async,for-await-of supportthanks to @arai-a- Obsolete functions removed (
E4X for-each,toSource,StopIteration,getPropertyDescriptor,Iterator/__iterator__,validategcetc.)
tooltoolremoved, along with lots of other unused functions now thatDOMFuzzis gone- Removed
download_build- Support for bisection using downloaded builds via
autobisectproject will be added later - In the meantime, the existing support got removed as tinderbox builds are no longer produced by official builds
- Support for bisection using downloaded builds via
- Windows ICU library versions bumped
Fixes
- Entire repository standardised to use double quotes
- Continued work towards Python 3 support, Python 3.5 is now the target
- More fixes for unicode/str confusion when interacting with other libraries, e.g. Lithium
- Standardised name to
autobisectjssince there is now the separate autobisect project - Started using more PyPI libraries
- e.g.
whichcraftinstead of in-house functions without tests
- e.g.
shell_flagsgot rewritten- Added new runtime flags, e.g.
--spectre-mitigations=on - Tests added
- Added new runtime flags, e.g.
- Start moving towards the
subprocess32PyPI library- En route to removing the
captureStdoutfunction
- En route to removing the
Platform support
- Removed support for Mac 32-bit builds as they became obsolete everywhere
- Linux builds now require GCC 6 (official build requirement)
Notes
- Windows is still on the 0.1.x legacy branch, until Python 3.5+ support is completed
0.3.0
Features:
- Basic pytest infrastructure added! - largely tests
compile_shellfor now - Add
codecov.iosupport - Now with code coverage! evalInCooperativeThreadandoomTestare now ignored when running differential testing.
Bugfixes:
- Ripped out the
versionfunction from being used in jsfunfuzz - Obsolete code removal, e.g. some flag combinations in shell_flags
- Tweaked the algorithm for the number of CPU cores used for compilation
- Miscellaneous fixes for Python stuff, linters, CI etc.
Notes:
- Minimum Mac support is now 10.11.x (El Capitan)
- Windows is still on the 0.1.x legacy branch