Skip to content

Commit

Permalink
Merges branch 'master' into 'meilers_silicon_test_903'
Browse files Browse the repository at this point in the history
  • Loading branch information
ArquintL committed Mar 4, 2025
2 parents 3612071 + a297ae0 commit 4e58c8a
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 6 deletions.
12 changes: 12 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
version: 2

updates:
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: monthly
day: monday
groups:
all:
patterns:
- "*"
4 changes: 2 additions & 2 deletions .github/workflows/carbon_silicon_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:

steps:
- name: Checkout backend
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
repository: ${{ env.fork }}/${{ matrix.repo }}
token: ${{ secrets.PAT }}
Expand Down Expand Up @@ -61,7 +61,7 @@ jobs:
git push origin ci-test-${{ env.sha }}
- name: Run CI
uses: convictional/trigger-workflow-and-wait@v1.6.0
uses: convictional/trigger-workflow-and-wait@v1.6.5
with:
owner: ${{ env.fork }}
repo: ${{ matrix.repo }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/scala.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ jobs:
shell: bash
run: "git config --global core.autocrlf false"
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Set up Scala and JDK 1.${{ matrix.java }}
uses: olafurpg/setup-scala@v11
uses: olafurpg/setup-scala@v14
with:
# Should probably be changed to `temurin` once supported by `olafurpg/setup-scala`
# See https://github.com/actions/setup-java#supported-distributions
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update_submodules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
steps:
# Checkout the repository to the GitHub Actions runner
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
repository: viperproject/${{ matrix.repo }}
token: ${{ secrets.PAT }}
Expand Down
2 changes: 1 addition & 1 deletion ReleaseNotes.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

### Changes in Viper Language

- The semantics of permission amounts in functions has changed. When checking function preconditions, concrete permission amounts are ignored; instead, we only distinguish between zero and any positive amounts. Thus, the following assertions all have the same meaning in a function precondition: ``acc(x.f, write)`` or ``acc(x.f, wildcard)`` or ``acc(x.f, 1/2)`` or ``acc(x.f, b ? write : 1/2)`` or ``acc(x.f) && acc(x.f)`` or ``acc(x.f, 2/1)`` all just require checking that a caller has some positive permission amount to ``x.f``. The same is true for predicate permissions. As a result, inside a function, one can no longer assume non-aliasing based on permission amounts. Additionally, when verifying well-definedness of a function, again all permission amounts are ignored (with the exception of distinguishing between zero and something positive as stated before), so one can for example unfold a whole predicate inside a function whose precondition only asks for half that predicate. Programs may still use concrete permission amounts in functions to preserve backward-compatibility, but such amounts will be meaningless and will result in a warning. https://github.com/viperproject/silicon/pull/877
- The semantics of permission amounts in functions has changed. When checking function preconditions, concrete permission amounts are ignored; instead, we only distinguish between zero and any positive amounts. Thus, the following assertions all have the same meaning in a function precondition: ``acc(x.f, write)`` or ``acc(x.f, wildcard)`` or ``acc(x.f, 1/2)`` or ``acc(x.f, b ? write : 1/2)`` or ``acc(x.f) && acc(x.f)`` or ``acc(x.f, 2/1)`` all just require checking that a caller has some positive permission amount to ``x.f``. The same is true for predicate permissions. As a result, inside a function, one can no longer assume non-aliasing based on permission amounts. Additionally, when verifying well-definedness of a function, again all permission amounts are ignored (with the exception of distinguishing between zero and something positive as stated before), so one can for example unfold a whole predicate inside a function whose precondition only asks for half that predicate. Programs may still use concrete permission amounts in functions to preserve backward-compatibility, but such amounts will be meaningless and will result in a warning. The old permission semantics is still available and can be enabled using the new command line flag ``--respectFunctionPrePermAmounts``. https://github.com/viperproject/silicon/pull/877
- Added a new expression ``asserting (a) in e``, which checks that ``a`` holds and subsequently evaluates to ``e``. https://github.com/viperproject/silver/pull/814

### API Changes
Expand Down

0 comments on commit 4e58c8a

Please sign in to comment.