Commit Graph

2498 Commits

Author SHA1 Message Date
microproofs c3b6bc5bff
Implementation of a few more of the new builtins 2024-12-05 11:03:41 +07:00
microproofs 5cf3275793
Detect difference in cost model length to maintain compatability with mainnet and testnet 2024-12-05 11:03:41 +07:00
microproofs 4839273449
Continue working on new builtin cost model updates 2024-12-05 11:03:41 +07:00
microproofs befbb6ec18
Start adding implementation for new builtins 2024-12-05 11:03:41 +07:00
hade 49aa5e01a0
feat: update change#2 costmodels 2024-12-05 11:03:41 +07:00
Kasey 86ec3b2924
Fix: issue crash in code gen with incorrect column length in decision trees (#1069)
* Fix: Deeply nested assignments would offset the new columns count calculation. Now we track relevant columns and their path to ensure each row has wildcards if they don't contain the relevant column

* Add test plus clippy fix

* Clippy fix

* New version clippy fix
2024-12-05 11:02:19 +07:00
KtorZ a9675fedc6
Fix deserialization of SerializedProgram into wrong Plutus version wrappers. 2024-12-03 22:22:11 +01:00
Simon Gellis 6f1477cef7 Allow tildes in identifier names 2024-11-25 16:20:35 -05:00
waalge 5a8ef1aef0 add: template from docs 2024-11-23 17:05:42 +00:00
KtorZ e2fb28b4ce
chore: Release 2024-11-19 15:55:23 +01:00
KtorZ e12d7e807d
Move JSON-schema help for check behind dedicated flag
1. A new option `show_json_schema` which, when enabled, will print the JSON schema of the command output if the target isn't an ANSI-capable terminal.
   2. Some modifications to the help message and error handling for the new option `show_json_schema`.

   This is now done to avoid flooding the help screen with an entire
   JSON schema. Plus, it makes the schema more easily exportable as an
   actual JSON schema.
2024-11-19 15:48:39 +01:00
KtorZ 7a93c55d0b
Minor fixes on the telemetry output for terminal. 2024-11-19 15:00:03 +01:00
KtorZ b5047d623a
Update to pallas=0.31.0 2024-11-19 14:53:36 +01:00
microproofs eec08fcbd9
Fix scoped path for list with tail cases only plus wild card fallback 2024-11-18 12:22:08 -05:00
microproofs 18054eed1a
chore: Release 2024-11-13 15:17:53 -05:00
Kasey 4ea6fdffe8
Aiken UPLC Optimization overhaul (#1052)
* Refactor and structuring optimizations to be less computationally heavy

* Forgot to commit the new file containing the optimization do over

* Point to correct functions in shrinker2

* Split out inline_constr_ops since it adds in builtins that can then be swept up by the builtin force reduction

* Fix: issue where identity reducer was always returning true

* Forward inlining on lambdas produces better results. This is due to a forward pass being able to apply an argument that may have no_inline at the top where as vice-versa would reduce the arg first.

* Clippy and test fixes

* Clear no_inlines when inlining a function

* Convert shrinker2 to replace shrinker and update tests
2024-11-13 15:08:36 -05:00
KtorZ 10c1b46bf7
Bump minimum rust version everywhere to 1.70.0 2024-11-13 19:38:57 +01:00
KtorZ 5960065a03
Fix validator selection for apply, address and policy command
Before this commit, we would require those target a specific handler,
  whereas they are in fact global to the entire validator.

  So now, we recover the behaviour from before where we default to the
  only available validator when there's no ambiguity.

  Note that this also solves the need for repeatedly applying parameters
  to each handler of a parameterized validator. The command now
  rightfully apply parameters to each corresponding handler.
2024-11-13 19:36:30 +01:00
KtorZ a51f7285c1
Make blueprint files configurable in and out
Closes #1055.
2024-11-13 18:15:09 +01:00
KtorZ 51a8ddcc0b
Document test output JSON schema through '--help'
The help manual is getting a bit large, but fortunately, we can resort
  to a simpler/more compact version using `-h`.
2024-11-13 14:59:20 +01:00
KtorZ da982510dc
Rework JSON output for tests
- Ensure consistency between overall summary and individual summaries.
  - Remove 'max_*' properties, since they are only padding numbers used
    for formatting the terminal output.
  - Rename a few fields to be closer to the existing naming (name ->
    title, memory -> mem, etc..)
  - Remove duplicated outputs
  - Re-order fields such that summaries come first
2024-11-13 13:12:42 +01:00
KtorZ fafb89d838
Prevent ANSI colors & styles to appear in JSON output. 2024-11-13 12:52:12 +01:00
KtorZ d24a71ee04
Define new event target for JSON, and revert option passing
For the program to be consistent, the 'EventListener' target that we
  pass to a Project should be responsible for the output format.
  Otherwise, we are contingent on developers to remember passing the
  option at call-site. Plus, it overloads the project code with an extra
  boolean option.

  Instead, since the behaviour is solely driven by the execution
  context, we can instantiate a different event target upfront, and
  simply hold on to it throughout the program.

  As a nice side-effect, we can gently re-organize the code to keep the
  terminal printing logic and the json printing logic separate.
2024-11-13 11:07:25 +01:00
Riley-Kilgore 1a75568027
Added target awareness and fixed property based test json output 2024-11-13 11:07:24 +01:00
Riley-Kilgore d1a1d0ec01
Remove unused args in fmt_test_json 2024-11-13 11:05:13 +01:00
Riley-Kilgore 8ac09025f5
Cherry picked cef3276521ba005fa30af46130dba2836347b1ae 2024-11-13 11:05:13 +01:00
microproofs cd42f51f1a
Finish up tests for decision-tree modification 2024-11-08 14:11:34 -05:00
microproofs 634b2e0f79
Next test 2024-11-02 17:16:03 -04:00
microproofs d350bc1935
Change another test 2024-11-02 14:45:58 -04:00
microproofs 362eb75329
Continue updating tests 2024-11-01 19:34:58 -04:00
microproofs e87d7a1101
Fixing unit tests 2024-11-01 19:34:57 -04:00
microproofs d39d70a5d8
More clippy fix 2024-11-01 19:34:56 -04:00
microproofs 1227a8a7db
Clippy fix 2024-11-01 19:34:55 -04:00
microproofs 6b04a78e78
Removing unneeded Air terms and reduce by about 800 lines 2024-11-01 19:34:54 -04:00
microproofs 1bc15f78ea
Finished up remaining touches to the implementation. Now I need to finish unit tests and add a few more 2024-11-01 19:34:54 -04:00
microproofs a4aaf4d2d7
Last issue from acceptance tests 2024-11-01 19:34:53 -04:00
microproofs 27bf40260e
Fix pairs not being unwrapped when wrapped as fields 2024-11-01 19:34:53 -04:00
microproofs 25e4b42cd0
Fix more tests and issues 2024-11-01 19:34:53 -04:00
microproofs 6e94d502a7
Fix more tests and issues 2024-11-01 19:34:53 -04:00
microproofs 7655a6ecbe
Fix test issues 2024-11-01 19:34:52 -04:00
microproofs b4d142ca9d
Fix assigns sometimes having free uniques 2024-11-01 19:34:52 -04:00
microproofs fa203ba9a2
Done with list pattern translation. Now to fix up tests 2024-11-01 19:34:52 -04:00
microproofs 8591bedc1e
Finish up list pattern translation to air 2024-11-01 19:34:52 -04:00
microproofs 1a15440d24
Checkpoint for today 2024-11-01 19:34:52 -04:00
microproofs 9dbe66bc0c
Producing uplc now. Just need to finish ListSwitch 2024-11-01 19:34:51 -04:00
microproofs 342676f530
Continue work on integrating the decision tree into code gen 2024-11-01 19:34:51 -04:00
microproofs 61184fbb86
Use Stick breaking set to track previously encountered values for each DecisionTree switch case 2024-11-01 19:34:51 -04:00
microproofs 5eac774443
Commit latest changes so far 2024-11-01 19:34:50 -04:00
microproofs 753b41dc99
Done with hoisting. Now to use it in gen_uplc. I hate RcDoc btw :'/ 2024-11-01 19:34:50 -04:00
microproofs 9601c1034b
Leave todo message for tomorrow 2024-11-01 19:34:49 -04:00
microproofs 7966cc0165
Finish up decision tree and rework it a bit to closely follow how the paper handles wild card patterns 2024-11-01 19:34:48 -04:00
microproofs 3b3fcb666f
Finish with adding constrs 2024-11-01 19:34:48 -04:00
microproofs ecf4592be1
Pass in interner and data types map into decision tree builder 2024-11-01 19:34:47 -04:00
microproofs 64f7886b23
Finished up creating the decision tree for lists. Only constr left. 2024-11-01 19:34:47 -04:00
microproofs b340de2cfd
Incremental commit for dealing with list tails 2024-11-01 19:34:47 -04:00
microproofs ca161d8a68
Continue work on handling lists with tails pattern matching 2024-11-01 19:34:46 -04:00
microproofs def268d966
Now working for all kinds of patterns except for constr 2024-11-01 19:34:46 -04:00
microproofs 9369cbc1a3
Remove some warnings 2024-11-01 19:34:46 -04:00
microproofs 43e859f1ba
Rework Decision Trees to use path to find the subject to test 2024-11-01 19:34:46 -04:00
microproofs 20385a7ecd
Handle tuples and pairs properly now 2024-11-01 19:34:45 -04:00
microproofs 97ee1a8ba6
Start working on using a decision tree for when expr. Also fmt fix. Other Stuff 2024-11-01 19:34:45 -04:00
KtorZ 2489e0fdd0
Fix aiken docs constant generation
Fixes #1048.
2024-10-29 14:15:31 +01:00
KtorZ 2b7ca0e4a1
Avoid unsafe unwrap of line_numbers, gracefully handle non-existing matches
Fixes #1044.
2024-10-25 11:37:50 +02:00
KtorZ 93d0191489
Fix latest clippy warnings. 2024-10-25 11:27:28 +02:00
KtorZ e97fe332b1
Rename --filter_traces to --trace_filter
It has somehow always annoyed me that we have --trace_level (with 'trace' first) and --filter_traces (with traces, plural and last). Given that these two options are almost always used together, the inconsistency is frustrating.
2024-10-25 11:08:05 +02:00
KtorZ 8e90a933c6
Add better METAVAR info to some command-line flags. 2024-10-25 11:04:46 +02:00
KtorZ 7c4e044423
Rename --blueprint-input to --in
The context is indeed sufficient as pointed by @nemo83; no need to make the cli needlessly verbose.
2024-10-25 11:04:46 +02:00
Riley-Kilgore 8d8f91b76e Add blueprint file input as option for blueprint apply 2024-10-24 14:01:48 -04:00
microproofs a7741ec286
chore: Release 2024-10-19 13:45:54 -04:00
KtorZ b04bb40532
Merge branch 'integer-to-bytearray-cost-fix' 2024-10-19 11:03:37 +02:00
KtorZ 365b3bf5bf
Remove dead-code and clarify note. 2024-10-19 11:00:46 +02:00
KtorZ 4b95db4f88
Fix data-type reification from Void 2024-10-19 10:50:44 +02:00
KtorZ 523b270a8f
Adjust telemetry output log. 2024-10-19 10:40:30 +02:00
microproofs 53685dd1d5
Update cost model to properly calculate integer_to_bytearray
Also fix conformance tests to match plutus
2024-10-18 13:07:51 -04:00
microproofs 9dd3ead3df
IntegerToByteString takes in the second param itself 2024-10-17 20:01:01 -04:00
microproofs 5fd349f571
Remove an unused opcode 2024-10-08 20:32:56 -04:00
microproofs 5d4b3e69b9
Revert "Start working on using a decision tree for when expr. Also fmt fix"
This reverts commit e8f74985d5.
2024-10-08 13:33:05 -04:00
microproofs e8f74985d5
Start working on using a decision tree for when expr. Also fmt fix 2024-10-08 13:30:29 -04:00
KtorZ 79d0e45099
Don't mark openssl dependencies as optional on musl. 2024-10-02 11:32:17 +02:00
KtorZ f4dbe1624a
Use target_os = linux instead. 2024-10-02 10:59:50 +02:00
KtorZ 19fe1d37e7
Make bundling of ssl conditionned by target environment instead of feature flag. 2024-10-02 10:51:21 +02:00
microproofs 356d845a9a
chore: Release 2024-10-01 16:14:25 -04:00
microproofs c8731c98c7
Remove prints 2024-10-01 16:09:44 -04:00
microproofs 5fe6e3f77b
Finish simplification changes 2024-10-01 15:57:54 -04:00
microproofs c6c5cddead
Fix ordering of params on standard functions 2024-10-01 13:32:27 -04:00
microproofs 2bbc699a25
Refactor some code to make a define_const AirTree function 2024-10-01 13:32:27 -04:00
KtorZ 513ca27717
Generate empty redeemer for `else` handler, to keep full compliance with the blueprint spec 2024-10-01 19:03:34 +02:00
KtorZ e8d97028ad
Prevent constant evaluating to generic/unbound functions
Constants are like tiny programs, so they are bound by the same rules
  as validators and other programs. In fact, functions are slightly more
  flexible in that they allow generic constant expressions like
  `List<a>`.

  Yet, there is no way to contain such generic structure that contain
  inhabitants in a way that satisfies the type-checker. In the example
  of `List<a>`, the only inhabitant of that type that we can construct
  is the empty list. Anything else would require holding onto some
  generic value.

  In addition, we can't force literal values into generic annotation, as
  something like:

  ```
  const foo: List<a> = [1, 2, 3]
  ```

  wouldn't type-check either since the right-side would unify to
  `List<Int>`. And again, the only right-hand side that can type-check
  is the empty list without any inhabitant.

  The added restriction on generic function is necessary because while
  we allow constants to return lambda, we cannot (easily) generate UPLC
  that is generic in its argument. By the time we generate UPLC, the
  underlying types have to be known.
2024-10-01 18:37:40 +02:00
KtorZ 51b6b77db8
Build LSP projects with verbose tracing level
Without that, the language server might trigger awkward warnings about
  unused imports due to trace stripping. So it's better to compile/check
  projects in the language server in the most expanded form.
2024-10-01 16:12:41 +02:00
KtorZ 0060804d1a
Fix redundant warning when destructuring validator params
This is not a "proper" fix as it simply get rid of the warning
  altogether (whether you use or not the destructured values).

  The reason for removing the warning entirely is because (1) it's
  simpler, but more so (2) there's no impact on the final code produced
  _anyway_. Redundant let bindings are already removed by the compiler;
  and while it's an implicit behaviour that requires a proper warning
  when it's coming from a user-defined assignment; here the redundant
  assignment is introduced by the compiler to begin with as another
  implicit behavior!

  So we have an implicit behaviour triggering a warning on another
  implicit behaviour. Truth is, there's no impact in having those
  parameters destructured and unused. So since users are already not
  aware that this results in an implicit let assignment being inserted
  in place for them; there's no need for the warning at all.
2024-10-01 13:17:00 +02:00
KtorZ 5737556efc
Fix compiler crash around dangling expect/let in traces
Fixes #1029.
2024-10-01 12:24:31 +02:00
Kasey d5f8d3ab78
Cost model fixes with tests (#1030)
* Finish V1 corrections and fixes to initialize cost model

* Finish V2 corrections to be inline with mainnet today
2024-09-29 22:55:18 -04:00
Riley-Kilgore 92f5bf529f Generate address on else and spend validators; uses title 2024-09-24 11:55:10 -04:00
Riley-Kilgore 7c6f3278ba Fixed single character patterns using double quotes 2024-09-24 11:54:05 -04:00
KtorZ ac9c71e32a
Try to bundle openssl with the Aiken binary to avoid core dumps on Linux 2024-09-22 18:12:26 +02:00
microproofs 3d77b5c378
chore: Release 2024-09-20 14:05:15 -04:00
microproofs e8cf43d7ec
Format fix 2024-09-20 13:52:09 -04:00
microproofs eb37ed0da5
Clippy fix 2024-09-20 13:47:56 -04:00
microproofs 4f1de2d3b5
Add test for flat error when encoding bls constant 2024-09-20 13:41:58 -04:00
microproofs fa2aa0a3e8
When we find bls constants in UPLC convert them to their a hoisted compressed form with an uncompress call 2024-09-20 12:31:36 -04:00
KtorZ a8b37820e8
Fix incorrect warning about unused variable when softcasting without explicit right-pattern.
See note added in code for a rationale.
2024-09-20 15:09:00 +02:00
Matthias Benkort 7155b4e45d
Merge pull request #1023 from solidsnakedev/main
Add wrap constructor to V1/V2 StakeCredential
2024-09-20 14:47:08 +02:00
microproofs 3fddab4724
Add test for hard cast and soft cast on same type 2024-09-19 23:48:06 -04:00
microproofs 18e79db4b2
Fix edge case with traces off and usage of softcast and hardcast on the same type 2024-09-19 22:29:19 -04:00
KtorZ 83ac723a50
Fix extraneous space added after multiline alternative patterns 2024-09-19 20:24:59 +02:00
KtorZ 3f149ab346
Provide intermediate feedback during property test runs.
Avoid the interface to hang for several seconds without feedback when counterexamples are being simplified. This sends a heads-up to the user to indicate that a research of a counter example is going on.
2024-09-19 20:19:49 +02:00
KtorZ 91843b2c0e
Tweak error output for failed data reification. 2024-09-19 20:18:53 +02:00
microproofs 43182721f5
Update PlutusV1 cost model 2024-09-19 10:36:36 -04:00
microproofs b50fa91d4c Finish updating v2 models 2024-09-18 12:06:36 -04:00
microproofs b26e16e319 Start updating v2 cost models 2024-09-18 12:06:36 -04:00
solidsnakedev 75b5332288 fix: Add wrap constructor to V1/V2 stake_credential when Purpose is Rewarding 2024-09-17 19:45:39 -06:00
KtorZ 47a15cf8b2
Fix formatting of long multiline if/is expressions. 2024-09-15 14:59:47 +02:00
KtorZ 12c0d0bc04
Fix formatter adding extra unnecessary newlines after literal lists clause values or assignments. 2024-09-15 14:40:40 +02:00
KtorZ d6c728c0f6
Fix link_tree generation when re-inserting the same modules. 2024-09-14 16:30:28 +02:00
microproofs 7047c7720e
chore: Release 2024-09-13 16:52:20 -04:00
KtorZ a9a7a4f977
Fix few formatter annoyances. 2024-09-13 18:53:26 +02:00
KtorZ 799546b654
Show strings as UTF-8 text string during type reification
Instead of defaulting to hex-encoded bytearrays.
2024-09-13 18:34:54 +02:00
KtorZ 9cf908d07f
Fix type reification of Data 2024-09-13 18:34:54 +02:00
KtorZ 4fb13af49f
Fix type reification of PRNG. 2024-09-13 18:34:53 +02:00
Matthias Benkort a1045352d7
Merge pull request #1018 from solidsnakedev/main
fix: Plutus V3 NoDatum
2024-09-13 09:29:55 +02:00
microproofs 16e222e997
Clippy fixes 2024-09-12 19:34:40 -04:00
microproofs 3f2de2665d
Clippy fixes 2024-09-12 19:13:31 -04:00
microproofs 362ca2544f
Fixed remaining issue when all parameters passed in to a recursive function were static.
Also fixed issue where modifying the calls in the airtree lead to an out of bounds index.
2024-09-12 17:03:48 -04:00
microproofs 30e66be568
Fix soft casting case 2024-09-12 17:03:48 -04:00
microproofs 49ef3a740c
Cargo tests now pass 2024-09-12 17:03:48 -04:00
microproofs 7c52094b15
Making progress on using interning in gen_uplc
Done interning for uniqueness. Now to fix the static optimization

Remove unused function

Fixing issues. Have a few remaining tests
2024-09-12 17:03:36 -04:00
KtorZ 8a3bbfc89a
Simplify optional datum extraction by removing duplication 2024-09-12 17:19:17 +02:00
solidsnakedev defce9be4e fix: Plutus V3 NoDatum - Error: missing required inline datum or datum hash in script input 2024-09-11 15:25:20 -06:00
KtorZ 0905146140
chore: Release 2024-09-10 13:25:04 +02:00
KtorZ 7741be64f8
Fix validator's fallback handler generation
Fixes #1015.
2024-09-10 10:48:06 +02:00
Riley-Kilgore 5879dcfd4c Fix import completions 2024-09-09 12:52:56 -04:00
KtorZ 616dec8f03
Fix formatter getting rid of curly braces around multi-line constants. 2024-09-08 16:23:41 +02:00
KtorZ 0c0369ad61
Fix needed parentheses under trace-if-false disappearing when formatting. 2024-09-08 16:21:45 +02:00
KtorZ b6d99142f9
Fix formatting of multi-line alternative patterns. 2024-09-08 13:11:53 +02:00
KtorZ 28916c1ef9
Show relative path by default instead of absolute
The absolute path is long and doesn't really provide much information.
  Plus, it's inconsistent with the behavior on a specified path.
2024-09-07 18:24:50 +02:00
KtorZ 943d90a99e
Fix invalid interpolation in error message. 2024-09-07 18:23:35 +02:00
KtorZ b7ea6ea391
Fix list-pattern formatting 2024-09-07 14:50:47 +02:00
KtorZ 5ec147e6c7
Mention config in generated README & generate env folder
Also, get rid of the extra lib/{package_name} directory which is rarely relevant.
2024-09-06 14:15:44 +02:00
KtorZ 04fb11084c
Fix dark colorscheme for dark. 2024-09-06 13:31:19 +02:00
KtorZ 19e30b10f9
Fix #1013 2024-09-06 12:28:12 +02:00
KtorZ 888b7e34c6
Drop debug line that stayed in source code x_x 2024-09-06 12:15:55 +02:00
rvcas be31a7ce38
chore: Release 2024-09-03 17:01:41 -04:00
rvcas 20ac89fc33
chore: reset version 2024-09-03 17:01:24 -04:00
microproofs 140cb02be0 Generic test now passes 2024-09-03 16:21:53 -04:00
KtorZ 6a438bc8cd Fix missing locations from generated handler code. 2024-09-03 16:21:53 -04:00
microproofs 2f33c4a8f4 Push up test failing due to missing messages 2024-09-03 16:21:53 -04:00
microproofs 8933688c68 Rest of the tests to push up 2024-09-03 16:21:53 -04:00
microproofs c370a4aa6a Pushing up tests that test both trace and non-trace uplc 2024-09-03 16:21:53 -04:00
microproofs a6bc0f7157 Fix positioning on unwrap_void 2024-09-03 16:21:53 -04:00
microproofs 2be76d7cda Use Delay error directly when casting from data without traces 2024-09-03 16:21:53 -04:00