diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..3717e3b03 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,78 @@ +name: Upload to PyPI + +on: + release: + types: [published] + +jobs: + tests: + runs-on: ubuntu-18.04 + strategy: + matrix: + type: ["ethereum_truffle", "ethereum_bench", "examples", "ethereum", "ethereum_vm", "native", "wasm", "wasm_sym", "other"] + steps: + - uses: actions/checkout@v1 + - name: Set up Python 3.6 + uses: actions/setup-python@v1 + with: + python-version: 3.6 + - name: Install NPM + uses: actions/setup-node@v1 + with: + node-version: '13.x' + - name: Install dependencies + env: + TEST_TYPE: ${{ matrix.type }} + run: | + #install utils + pip install coveralls + pip install -e ".[dev-noks]" + #install cvc4 + sudo wget -O /usr/bin/cvc4 https://github.com/CVC4/CVC4/releases/download/1.7/cvc4-1.7-x86_64-linux-opt + sudo chmod +x /usr/bin/cvc4 + #install yices + sudo add-apt-repository ppa:sri-csl/formal-methods + sudo apt-get update + sudo apt-get install yices2 + #install boolector + mkdir -p /tmp/build + cd /tmp/build + git clone https://github.com/boolector/boolector.git + cd boolector + # Version 3.2.1 + git checkout "f61c0dcf4a76e2f7766a6358bfb9c16ca8217224" + git log -1 --oneline > ../boolector.commit + ./contrib/setup-lingeling.sh + ./contrib/setup-btor2tools.sh + ./configure.sh + cd build + make -j4 + mkdir -p /tmp/boolector + sudo make DESTDIR=/usr install + # Install solc unconditionally because it only takes a second or two + sudo wget -O /usr/bin/solc https://github.com/ethereum/solidity/releases/download/v0.4.24/solc-static-linux + sudo chmod +x /usr/bin/solc + - name: Run Tests + env: + TEST_TYPE: ${{ matrix.type }} + run: | + cp scripts/run_tests.sh . + ./run_tests.sh + + upload: + runs-on: ubuntu-18.04 + needs: tests + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.6 + uses: actions/setup-python@v1 + with: + python-version: 3.6 + - name: Build Dist + run: | + python3 -m pip install wheel + python3 setup.py sdist bdist_wheel + - name: Upload to PyPI + uses: pypa/gh-action-pypi-publish@v1.2.2 + with: + password: ${{ secrets.PYPI_UPLOAD }} diff --git a/CHANGELOG.md b/CHANGELOG.md index ddcc0caa8..452fcb487 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,30 @@ # Change Log -## [Unreleased](https://github.com/trailofbits/manticore/compare/0.3.5...HEAD) +## [Unreleased](https://github.com/trailofbits/manticore/compare/0.3.6...HEAD) + +## 0.3.6 - 2021-06-09 + +Thanks to our external contributors! + - [timgates42](https://github.com/trailofbits/manticore/commits?author=timgates42) + +### Ethereum +* **[Changed API]** Default to quick mode: disable detectors and gas [#2457](https://github.com/trailofbits/manticore/pull/2457) +* Allow symbolic balances from the beginning of execution [#1818](https://github.com/trailofbits/manticore/pull/1818) +* Disable EVM Events in Testcases [#2417](https://github.com/trailofbits/manticore/pull/2417) + +### Native +* **[Added API]** Syscall-specific hooks [#2389](https://github.com/trailofbits/manticore/pull/2389) +* Fix wildcard behavior in symbolic files [#2454](https://github.com/trailofbits/manticore/pull/2454) +* Bugfixes for control transfer between Manticore & Unicorn [#1796](https://github.com/trailofbits/manticore/pull/1796) + +### Other +* Run multiple SMT solvers in parallel, take the fastest response [#2420](https://github.com/trailofbits/manticore/pull/2420) +* Add socket for TUI [#1620](https://github.com/trailofbits/manticore/pull/1620) +* Memory usage improvements in expression system [#2394](https://github.com/trailofbits/manticore/pull/2394) +* Support for Boolector [#2410](https://github.com/trailofbits/manticore/pull/2410) +* Solver Statistics API [#2415](https://github.com/trailofbits/manticore/pull/2415) +* Allow duplicated config options [#2397](https://github.com/trailofbits/manticore/pull/2397) + ## 0.3.5 - 2020-11-06 diff --git a/README.md b/README.md index b70fa3875..bd33f958f 100644 --- a/README.md +++ b/README.md @@ -46,10 +46,10 @@ Option 2: Installing from PyPI, with extra dependencies needed to execute native pip install "manticore[native]" ``` -Option 3: Installing a nightly development build (fill in the latest version from [the PyPI history](https://pypi.org/project/manticore/#history)): +Option 3: Installing a nightly development build: ```bash -pip install "manticore[native]==0.x.x.devYYMMDD" +pip install --pre "manticore[native]" ``` Option 4: Installing from the `master` branch: diff --git a/docs/conf.py b/docs/conf.py index 0aa17b00a..8c5ab6ebc 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -54,9 +54,9 @@ # built documents. # # The short X.Y version. -version = "0.3.5" +version = "0.3.6" # The full version, including alpha/beta/rc tags. -release = "0.3.5" +release = "0.3.6" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/setup.py b/setup.py index 5900068bc..13b99fe50 100644 --- a/setup.py +++ b/setup.py @@ -45,9 +45,11 @@ def rtd_dependent_deps(): # https://stackoverflow.com/a/4792601 grumble grumble -dev_extension = "" +version = "0.3.6" if "--dev_release" in sys.argv: - dev_extension = ".dev" + date.today().strftime("%y%m%d") + major, minor, point = tuple(int(t) for t in version.split(".")) + dev_extension = f"dev{date.today().strftime('%y%m%d')}" + version = f"{major}.{minor}.{point + 1}.{dev_extension}" sys.argv.remove("--dev_release") setup( @@ -57,7 +59,7 @@ def rtd_dependent_deps(): long_description=long_description, url="https://github.com/trailofbits/manticore", author="Trail of Bits", - version="0.3.5" + dev_extension, + version=version, packages=find_packages(exclude=["tests", "tests.*"]), python_requires=">=3.6", install_requires=[