Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
ad2528f
Add files via upload
HugoDowsers May 15, 2026
ce8e825
Create BUILDING.md
HugoDowsers May 15, 2026
cbee574
Adding Regression Tests
HugoDowsers May 21, 2026
47a5877
Add files via upload
HugoDowsers May 21, 2026
38a1923
Update README.md
HugoDowsers Sep 17, 2026
e4fcc97
fix: derive CREATE addresses from keccak256(rlp([sender, nonce]))
Sep 17, 2026
b7ef854
feat: support vm.getNonce / setNonce / setNonceUnsafe / resetNonce
Sep 17, 2026
44334d1
test: regression tests for CREATE3 and the nonce cheatcodes
Sep 17, 2026
4bb7b35
chore(dowsers): expose the CLI as `dolmos`
Sep 17, 2026
21c3f79
chore(dowsers): drop the legacy `halmos` console script
Sep 17, 2026
8d2282e
Readme update
HugoDowsers Sep 17, 2026
3dfa9d5
Update README.md
HugoDowsers Sep 17, 2026
920ad52
Update README.md
HugoDowsers Sep 17, 2026
d5c5407
chore(dowsers): rename the distribution to dolmos
Sep 17, 2026
3690cd8
docs: point the Dowsers link at the right account
Sep 17, 2026
34287b5
Update README.md
HugoDowsers Sep 18, 2026
139c6da
Adding Vyper - Experimental
HugoDowsers Sep 21, 2026
9d6c0b6
Some renamings to prepare for package publication
HugoDowsers Sep 22, 2026
516f3a2
commit correciton fichier docker
HugoDowsers Sep 22, 2026
08fffda
Corrections fichiers workflows
HugoDowsers Sep 22, 2026
4f92871
Update Workflows
HugoDowsers Sep 22, 2026
8290224
Modification du numéro de version
HugoDowsers Sep 22, 2026
4254625
Handling windows- POSIX
HugoDowsers Sep 22, 2026
2f07201
CI : handling last foundry version
HugoDowsers Sep 22, 2026
4301f76
CI: explicit solady remapping for recent forge auto-remapping
HugoDowsers Sep 22, 2026
0c22965
Adding changelog and modyfiing readme
HugoDowsers Sep 22, 2026
9d7bc81
Pre release
HugoDowsers Sep 22, 2026
ab91df8
Workflows
HugoDowsers Sep 22, 2026
5b0e54c
fix: symbolic SHA256/RIPEMD160/MODEXP precompiles (halmos#402)
HugoDowsers Sep 22, 2026
d5e1851
feat: vm.expectRevert and vm.expectEmit cheatcodes (halmos#409)
HugoDowsers Sep 23, 2026
85a9636
feat: run tests from every setUp() path (halmos#186)
HugoDowsers Sep 23, 2026
59bb438
Adding first export to passtel
HugoDowsers Sep 23, 2026
1f9a136
fix: storage slots written as precomputed keccak literals (halmos#579)
Sep 25, 2026
e64cf03
feat: support SELFDESTRUCT with EIP-6780 semantics (halmos#411)
Sep 25, 2026
c186c30
fix: check counterexamples against real keccak256 values (halmos#562)
Sep 25, 2026
9bd6829
feat: EVM version setting, --evm-version (halmos#128)
Sep 25, 2026
929fe49
fix(#562): pin storage layout in KeccakRefinement test, keep countere…
HugoDowsers Sep 25, 2026
e331db6
Create specification.md
HugoDowsers Sep 26, 2026
53580ae
Issue 215
HugoDowsers Oct 12, 2026
26974be
feat: --pretty-counterexamples (-pcex) for exploitable counterexample…
Oct 14, 2026
2ae31fa
ci: fix pre-commit, pcex end-to-end test under generic (using claude)…
Oct 14, 2026
2a1a656
ci: fix Windows test_fs paths and move actions to node24
HugoDowsers Oct 14, 2026
ce0a4c3
fix(windows): --solver-command paths with backslashes, utf-8 forge co…
HugoDowsers Oct 14, 2026
2d46629
ci: make geas install robust to proxy.golang.org stream errors
HugoDowsers Oct 15, 2026
363d8c3
ci: run pytest in the project venv, annotate failures via the dev extras
desaperh Oct 15, 2026
e085a95
chore: release 0.2.0
HugoDowsers Oct 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/postCreate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ curl -L https://foundry.paradigm.xyz | bash
echo 'source .venv/bin/activate' >> ~/.bashrc

# just a test
# pytest -v -k "not long and not ffi" --ignore=tests/lib --halmos-options="-v -st --storage-layout solidity --solver-timeout-assertion 0"
# pytest -v -k "not long and not ffi" --ignore=tests/lib --dolmos-options="-v -st --storage-layout solidity --solver-timeout-assertion 0"
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# the file cheatcode tests (tests/regression/test/File.t.sol) hash these fixtures byte for byte:
# never convert their line endings (core.autocrlf is on by default on the Windows runners)
tests/regression/test/data/** -text
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Please provide a reproducible example.
**Environment:**
- OS: [e.g., Linux / Windows / macOS]
- Python version: [e.g., `python --version`]
- Halmos and other dependency versions: [e.g., `pip list`]
- dolmos and other dependency versions: [e.g., `pip list`]

**Additional context**
Add any other context about the problem here.
8 changes: 4 additions & 4 deletions .github/workflows/copilot-setup-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v6
with:
# let's use the oldest version of python that is supported by the project
python-version: "3.11"
Expand All @@ -27,9 +27,9 @@ jobs:
uses: foundry-rs/foundry-toolchain@v1

- name: Install uv
uses: astral-sh/setup-uv@v4
uses: astral-sh/setup-uv@v7
with:
version: "0.5.21"

- name: Install halmos and its dependencies
- name: Install dolmos and its dependencies
run: uv sync --extra dev
15 changes: 12 additions & 3 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,15 @@ jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: pre-commit/action@v3.0.1
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.12"
# pre-commit/action@v3.0.1 still uses actions/cache@v4 (node20) internally:
# run pre-commit directly, with a node24 cache
- uses: actions/cache@v5
with:
path: ~/.cache/pre-commit
key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- run: pip install pre-commit
- run: pre-commit run --show-diff-on-failure --color=always --all-files
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
# based on https://docs.github.com/en/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions#upgrading-a-workflow-that-accesses-a-registry-using-a-personal-access-token
name: Push halmos-builder package
name: Push dolmos-builder package

on:
# only trigger manually, this is independent from halmos releases
# only trigger manually, this is independent from dolmos releases
workflow_dispatch:
workflow_run:
workflows: ["Push solvers package"]
types:
- completed
push:
paths:
- packages/halmos-builder/**/*
- .github/workflows/publish-halmos-builder-package.yml
- packages/dolmos-builder/**/*
- .github/workflows/publish-dolmos-builder-package.yml

env:
IMAGE_NAME: halmos-builder
IMAGE_NAME: dolmos-builder

jobs:
# This pushes the image to GitHub Packages.
Expand All @@ -28,18 +28,18 @@ jobs:

steps:
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: false

- name: Build image
run: docker build . --file packages/halmos-builder/Dockerfile --tag $IMAGE_NAME --label "runnumber=${GITHUB_RUN_ID}"
run: docker build . --file packages/dolmos-builder/Dockerfile --tag $IMAGE_NAME --label "runnumber=${GITHUB_RUN_ID}"

- name: Push image
run: |
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
# based on https://docs.github.com/en/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions#upgrading-a-workflow-that-accesses-a-registry-using-a-personal-access-token
name: Push halmos package
name: Push dolmos package

on:
workflow_dispatch:
workflow_run:
workflows: ["Push halmos-builder package"]
workflows: ["Push dolmos-builder package"]
types:
- completed
push:
paths:
- packages/halmos/**/*
- .github/workflows/publish-halmos-package.yml
- packages/dolmos/**/*
- .github/workflows/publish-dolmos-package.yml
tags:
# push when we release a new tagged version
- 'v*'

env:
IMAGE_NAME: halmos
IMAGE_NAME: dolmos

jobs:
# This pushes the image to GitHub Packages.
Expand All @@ -30,22 +30,22 @@ jobs:

steps:
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
# we may need tests/lib for the workflows using this image
submodules: recursive

- name: Build image
run: docker build . --file packages/halmos/Dockerfile --tag $IMAGE_NAME --label "runnumber=${GITHUB_RUN_ID}"
run: docker build . --file packages/dolmos/Dockerfile --tag $IMAGE_NAME --label "runnumber=${GITHUB_RUN_ID}"

- name: Print halmos version
run: docker run $IMAGE_NAME halmos --version
- name: Print dolmos version
run: docker run $IMAGE_NAME dolmos --version

- name: Push image
run: |
Expand All @@ -54,15 +54,17 @@ jobs:
# This changes all uppercase characters to lowercase.
IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')

# This strips the git ref prefix from the version.
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,')
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
# release: X.Y.Z, X.Y and latest
VERSION="${GITHUB_REF_NAME#v}"
TAGS="$VERSION ${VERSION%.*} latest"
else
# anything else (main, builder rebuilds): a moving `main` tag
TAGS="main"
fi

# This strips the "v" prefix from the tag name.
[[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//')

# This uses the Docker `latest` tag convention.
[ "$VERSION" == "main" ] && VERSION=latest
echo IMAGE_ID=$IMAGE_ID
echo VERSION=$VERSION
docker tag $IMAGE_NAME $IMAGE_ID:$VERSION
docker push $IMAGE_ID:$VERSION
for TAG in $TAGS; do
echo "pushing $IMAGE_ID:$TAG"
docker tag $IMAGE_NAME $IMAGE_ID:$TAG
docker push $IMAGE_ID:$TAG
done
79 changes: 72 additions & 7 deletions .github/workflows/publish-pypi.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,87 @@
name: Publish to PyPI

# Triggered by publishing a GitHub Release whose tag is vX.Y.Z.
# The package version comes from that tag (setuptools-scm).

on:
release:
types: [published]
# manual dry run: builds and checks the distributions, publishes nothing
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
# setuptools-scm needs the tags and the history
fetch-depth: 0

- uses: actions/setup-python@v6
with:
python-version: "3.12"

- name: Build
run: |
python -m pip install --upgrade build twine
python -m build
twine check --strict dist/*

- name: Check that the version matches the tag
if: github.event_name == 'release'
run: |
expected="${GITHUB_REF_NAME#v}"
wheel=$(ls dist/*.whl)
case "$wheel" in
dist/dolmos-${expected}-*) echo "version $expected OK" ;;
*) echo "::error::wheel $wheel does not match tag $GITHUB_REF_NAME"; exit 1 ;;
esac

- name: Smoke test the wheel
run: |
python -m venv /tmp/smoke
/tmp/smoke/bin/pip install dist/*.whl
/tmp/smoke/bin/dolmos --version
/tmp/smoke/bin/python -Ic 'import dolmos'

- uses: actions/upload-artifact@v6
with:
name: dist
path: dist/

pypi:
needs: build
if: github.event_name == 'release'
runs-on: ubuntu-latest
environment: release
environment:
name: release
url: https://pypi.org/project/dolmos/
permissions:
# IMPORTANT: this permission is mandatory for Trusted Publishing
# mandatory for Trusted Publishing
# https://docs.pypi.org/trusted-publishers/using-a-publisher/
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: actions/download-artifact@v7
with:
fetch-depth: 0
- name: Build
run: python3 -m pip install --upgrade build && python3 -m build
name: dist
path: dist/
- name: Publish
uses: pypa/gh-action-pypi-publish@release/v1

github-release-assets:
needs: build
if: github.event_name == 'release'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/download-artifact@v7
with:
name: dist
path: dist/
- name: Attach the distributions to the GitHub Release
env:
GH_TOKEN: ${{ github.token }}
run: gh release upload "$GITHUB_REF_NAME" dist/* --repo "$GITHUB_REPOSITORY" --clobber
6 changes: 3 additions & 3 deletions .github/workflows/publish-solvers-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: Push solvers package

on:
# only trigger manually, this is independent from halmos releases
# only trigger manually, this is independent from dolmos releases
workflow_dispatch:
push:
paths:
Expand All @@ -21,13 +21,13 @@ jobs:

steps:
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: false

Expand Down
Loading