-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[major] Merging features for 4.0 #284
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Rough SMT backend prototype. Not ready for "prime time" yet, but this branch also contains a few general fixes and improvements. E.g., `is forge_error` can now take a substring to match on.
* Add new testing constructs for "is consistent with" and "is inconsistent with". * Allow LHS of assertions to be arbitrary constraint blocks.
* send wrong generator data to enable testing * working brittle end-to-end run selection * pass only the pertinent generator name on a single-test failure * working on evaluator * add Sterling menu for temporal forge * update sterling * serve sterling static files * add: rough error of last resort * add comment: found ref for windows delaying output * windows polling prototype, unifying reader code between languages * fix: flush output in windows kludge * deprecate forge/bst for forge/froglet * change * working * working * more * re-add NS crypto example, updated to 2025 forge * fix: passing is-sat tests show up on menu, but no longer next/eval
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Draft Forge 4.0.0 Release Notes
Forge 4.0.0 contains a number of new features and fixes from the previous version (3.7). There are breaking changes; please read the first 2 paragraphs carefully.
Anyone using the Forge VSCode extension should make sure to update that extension alongside updating Forge. We recommend enabling automatic updates for the extension.
Major Change: Sterling Run Menu
Sterling will now show a menu of available commands to execute, rather than commands being executed in sequence at the command prompt. Run Forge as normal (either via the Play button in the VSCode extension or via `racket in the command prompt) and Sterling will immediately load. Select a command from the drop-down and click "Run" to start the solver process and view instances for that command.
Breaking Change:
#lang forge/froglet
For consistency, the Froglet language can now only be accessed via
#lang forge/froglet
. Forge had previously supported#lang froglet
and#lang froglet/bsl
(for "Beginner Student Language"). The new language name both avoids ambiguity and the need to install a separate Racket package.Attempting to use
#lang forge/bsl
in Forge 4.0.0 will produce an error message.Breaking Change:
is checked
vs.is theorem
The syntax of a
test expect
test that expects the predicate body to be valid has changed. Previously, one would write{<property>} is theorem
, but this was inaccurate: Forge performs bounded verification of<property>
, and so will now enforce the use ofis checked
so as not to connote completeness.Sterling Fixes
Giving a filename to the
run_sterling
option will now properly pre-load the contents of that file into the script view window.Theming will now persist between instances for the same command. Previously, theming was cleared for every new instance.
New Syntax
This release adds new assertion forms for consistency checking:
assert <constraint> is consistent with <pred name> for <bounds>
; andassert <constraint> is inconsistent with <pred name> for <bounds>
.Moreover, the
assert ... is necessary for ...
andassert ... is sufficient for ...
commands now support an arbitrary constraint block on the left hand side. Previously only a predicate name was allowed.We strongly encourage the use of these new constructs rather than the old-style
test expect {... is sat }
and... is unsat
forms where possible.For internal use,
test expect
now supports theis forge_error <?substr>
expectation, which passes only if the run generates an error in Forge. Optionally, a substring may be provided that is matched against any error thrown.Domain-Specific Model Fixes
The
#lang forge/domains/crypto
visualizer now properly displays the plaintext and key for encrypted terms if those terms have unexpected atom names.The
#lang forge/domains/crypto
examples now include the missing Needham-Schroeder protocol as well as the fixed version of the protocol.