Commit Graph

2784 Commits

Author SHA1 Message Date
microproofs
2bc433f61e fix: need to use temp_term for counting var occurrences in identity reducer
chore: Adding more shrinker tests and fixed some of the existing ones
2024-03-05 12:08:18 -05:00
microproofs
b146db8c95 update package dependency 2024-03-05 10:23:29 -05:00
dependabot[bot]
52795692d6 Bump mio from 0.8.10 to 0.8.11
Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.10 to 0.8.11.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v0.8.10...v0.8.11)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-05 10:18:01 -05:00
KtorZ
966a20f691 Fix run_n_times for properties expected to fail. 2024-03-04 23:41:37 +01:00
KtorZ
4d432513e0 Fix interesting case identification for properties expected to fail. 2024-03-04 23:28:45 +01:00
KtorZ
4097d1edb2 Fix negative integer literal parsing in fuzzer DSL. 2024-03-04 23:27:23 +01:00
KtorZ
fbeb611e5f Show counter examples in green when property is expected to fail. 2024-03-04 20:41:04 +01:00
KtorZ
3e922c0a52 Allow primitive literals, lists and tuples in fuzzer expressions. 2024-03-04 20:41:04 +01:00
rvcas
c7cd89d127 chore: fix fmt 2024-03-04 13:03:07 -05:00
KtorZ
df3baa082e Remove 'seed' arg from 'with_project' to FinishedTests event
Also polish a bit the output of tests, move test result to stdout to allow filtering out warnings by redirecting stderr to /dev/null.
2024-03-04 18:43:51 +01:00
microproofs
c9dd281b45 disable assert that was blocking issue #844 2024-03-04 11:48:22 -05:00
microproofs
27eb1a3e04 Change all uses of interning besides the uplc parser to use the new CodeGenInterner 2024-03-04 11:03:23 -05:00
microproofs
e14f091b86 add back test 93 2024-03-04 10:52:56 -05:00
microproofs
d971d9818b update tests and ensure identity reducer handles no_inline lambda 2024-03-04 10:52:56 -05:00
microproofs
af6c107187 remove unneeded assert 2024-03-04 10:52:56 -05:00
microproofs
06ca22c26a update inliner to handle no_inline functions 2024-03-04 10:52:56 -05:00
microproofs
4e928f39db start adding no inline flag to functions 2024-03-04 10:52:56 -05:00
microproofs
2aaa46e54c remove print 2024-03-04 10:52:56 -05:00
microproofs
c6ef37cc5c checkpoint 2024-03-04 10:52:56 -05:00
microproofs
4e0aaf970f update tests and fix final unique issues 2024-03-04 10:52:56 -05:00
microproofs
62963f7fc2 feat: finish curry optmization, improve inline optimization further, and add a subtract integer to add integer conversion 2024-03-04 10:52:56 -05:00
microproofs
7d8fdc0f22 prevent curried function hoisting if occurrences is 0 2024-03-04 10:52:56 -05:00
microproofs
258b5abf23 now currying works 2024-03-04 10:52:56 -05:00
microproofs
3b55a32583 finish up curry optimization on builtins 2024-03-04 10:52:56 -05:00
microproofs
58d586c5cf large refactor to reduce complexity 2024-03-04 10:52:56 -05:00
microproofs
8f84eb382f commit some changes so far 2024-03-04 10:52:56 -05:00
microproofs
9a52258e14 chugging along with a small refactor and some more work toward currying 2024-03-04 10:52:56 -05:00
microproofs
2f72510102 chore: Add back curry code removed in a previous commit 2024-03-04 10:52:56 -05:00
Matthias Benkort
7c2bae0904 Merge pull request #849 from waalge/waalge/bump-rust-1-76-0
Waalge/bump rust 1 76 0
2024-03-04 16:18:41 +01:00
waalge
658984e157 Merge remote-tracking branch 'official/main' into waalge/bump-rust-1-76-0 2024-03-04 14:34:14 +00:00
waalge
5d6bcaabe9 bump flake ... but in a way that works for external builds?! 2024-03-04 14:32:27 +00:00
KtorZ
8e8e0de044 cargo fmt --all 2024-03-04 14:46:16 +01:00
Matthias Benkort
6a4841dd7f Merge pull request #848 from waalge/waalge/bump-rust-1-76-0
bump rust version in flake
2024-03-04 14:45:52 +01:00
waalge
69aefc8c48 bump rust version in flake 2024-03-04 13:33:43 +00:00
KtorZ
362acd43a3 Rework and optimize PRNG
Using ByteArrays as vectors on-chain is a lot more efficient than relying on actul Data's list of values. From the Rust end, it doesn't change much as we were already manipulating vectors anyway.
2024-03-04 14:27:16 +01:00
KtorZ
dd1c7d675f Allow Aiken files to have more than one dot-separated suffix. 2024-03-04 00:15:05 +01:00
KtorZ
50faf81c0f Use u64 for PRNG choices. 2024-03-04 00:14:34 +01:00
Matthias Benkort
b68f99cf24 Merge pull request #835 from aiken-lang/fuzz2
Property-based testing framework
2024-03-03 21:18:57 +01:00
KtorZ
c2bc5848dd Fill-in CHANGELOG. 2024-03-03 21:09:17 +01:00
KtorZ
900b73b21a cargo fmt --all 2024-03-03 21:05:43 +01:00
KtorZ
fbda31d980 Fix and improve test outputs for prop tests. 2024-03-03 21:00:51 +01:00
KtorZ
7a2537432a Accept an optional --seed parameter for check, otherwise default to random.
Also, show the seed on failure.
2024-03-03 20:36:01 +01:00
KtorZ
a7b9d4bb22 Use u8 for fuzzer choices instead of u32
Value is bounded between 0 and 255.
2024-03-03 19:38:49 +01:00
KtorZ
30841fe000 Rework generate_raw to avoid need to intern in prop tests
Also, this commit makes `apply_term` automatically re-intern the
  program since it isn't safe to apply any term onto a UPLC program. In
  particular, terms that introduce new let-bindings (via lambdas) will
  mess with the already generated DeBruijn indices.

  The problem doesn't occur for pure constant terms like Data. So we
  still have a safe and fast version 'apply_data' when needed.
2024-03-03 19:33:27 +01:00
KtorZ
1134b8d7d0 Register tests as callable definitions.
Also move the registering of validators into the same place as they
  other and define a little cute function to avoid code-duplication.
2024-03-03 19:33:27 +01:00
KtorZ
c2dc47fa0b Refactor creation of CodeGenerator and management of known data_types and functions.
This was a mess to say to the least. The mess started when we wanted
  to make all definitions in codegen use immutable maps of references --
  which was and still is a good idea. Yet, the population of the data
  types and functions definitions was done somehow in a separate step,
  in a rather ad-hoc manner.

  This commit changes that to ensure the project's data_types and
  functions are populated while type checking the AST such that we need
  not to redo it after.

  The code for registering the data type definitions and function
  definitions was also duplicated in at least 3 places. It is now a
  method of the TypedModule.

  Note: this change isn't only just cosmetic, it's also necessary for
  the commit that follows which aims at adding tests to the set of
  available function definitions, thus allowing to make property tests
  callable.
2024-03-03 19:33:26 +01:00
KtorZ
26e563a9be Hardened property-based testing framework. More tests, less bugs.
Those end-to-end tests are useful. Both for controlling the behavior of the shrinker, but also to double check the reification of Plutus Data back into untyped expressions.
  I had to work-around a few things to get opaque type and private types play nice. Also found a weird bug due to how we apply parameters after unique debruijn indexes have been also applied. A work-around is to re-intern the program.
2024-03-03 19:33:26 +01:00
KtorZ
775a34bc47 Remove acceptance_test 095, now done directly from Rust.' 2024-03-03 19:33:26 +01:00
KtorZ
3df5bcd96d Fix shrinker impl and implement 3rd strategy of bin_search reduction. 2024-03-03 19:33:26 +01:00
KtorZ
70ea3c9598 Write boilerplate code for being able to easily test properties.
Loads of plumbing, but we now have at least some nice ways to test property execution and shrinking.
2024-03-03 19:33:26 +01:00