Releases: anoma/juvix
Releases · anoma/juvix
v0.6.8
What's Changed
- Add option to run Anoma tests in non-debug mode by @paulcadman in #3144
- Support traces in the anoma node by @janmasrovira in #3152
- Add NFData instance for Core.Module by @janmasrovira in #3160
- Add
--vscode
option by @lukaszcz in #3162 - Don't write log messages to stdout by @lukaszcz in #3159
- Release 0.6.8 by @paulcadman in #3165
Full Changelog: v0.6.7...v0.6.8
v0.6.7
What's Changed
- Fix locations in Internal hole substitution (only for the case of substituting identifiers) by @lukaszcz in #2995
- Fix typechecking of default arguments in signatures with trait arguments by @janmasrovira in #2998
- Fix a bug that prevented use of name signature defined after the point by @janmasrovira in #3001
- Remove legacy naive match-to-case compiler by @lukaszcz in #3003
- Do not inline the functions library everywhere in the Nockma backend by @janmasrovira in #3004
- Compilation of side conditions in pattern matches by @lukaszcz in #2984
- Only output .debug.nockma file with the --debug flag by @janmasrovira in #3006
- Do not duplicate nockma stdlib in the nockma backend by @janmasrovira in #3005
- Lift non-immediate expressions out of case values for the Nockma backend by @lukaszcz in #3010
- Fix location of scoped modulePathName by @janmasrovira in #3011
- Fix RISC0 compilation on the CI by @lukaszcz in #3015
- Fix bug in symbol dependency graph generation in Core by @lukaszcz in #3018
- Store the
DocTable
in the .jvo file by @janmasrovira in #3021 - Fix the location in the parser for .juvix.md by @janmasrovira in #3020
- The
assert
builtin by @lukaszcz in #3014 - Fix RISC0 in the CI by @lukaszcz in #3025
- Fix JuvixTree parsing and pretty printing by @lukaszcz in #3024
- Remove old named application syntax by @janmasrovira in #3026
- Update to GHC 9.10.1 by @lukaszcz in #2991
- Update linux static binary workflow for GHC 9.10.1 by @paulcadman in #3034
- Don't fold lets if the let-bound variable occurs under a lambda-abstraction by @lukaszcz in #3029
- Update cabal.project.freeze for GHC 9.10.1 update by @paulcadman in #3035
- Precompute debug operations info in linear time by @lukaszcz in #3038
- Revert GHC 9.10.1 update by @paulcadman in #3052
- Improve parsing error for missing @ in named application by @janmasrovira in #3012
- Fix linux static build: Remove -j argument from C runtime make invocation by @paulcadman in #3055
- Group tables related to typechecking by @janmasrovira in #3056
- Fix RISC0 on the CI by @lukaszcz in #3061
- Parse stdlibPlaceholder in Nockma parser by @paulcadman in #3065
- Include the juvix version in the build directory path by @paulcadman in #3069
- Ignore files that start with a
.
by @janmasrovira in #3072 - Remove unused field from
ScoperState
by @janmasrovira in #3073 - Reimplement positivity checker by @janmasrovira in #3057
- Fix termination crash due to empty permutation by @janmasrovira in #3081
- Merge typechecker negative tests by @janmasrovira in #3076
- Fix named application bug by @janmasrovira in #3075
- Nockma backend: translate
trace
to%puts
hints by @lukaszcz in #3053 - Add coding style guidelines by @lukaszcz in #3059
- Avoid duplication in Nockma code generation by @lukaszcz in #3070
- Fix JuvixTree unification by @lukaszcz in #3087
- Merge containers into standard library by @lukaszcz in #3088
- Support Anoma stdlib curry function by @paulcadman in #3097
- Update standard library coding style according to the guidelines by @lukaszcz in #3092
- Allow
@
in constructor declarations by @lukaszcz in #3099 - Update anoma nock stdlib by @paulcadman in #3103
- Compile-time configuration by @lukaszcz in #3102
- Remove VampIR compile command and tests by @lukaszcz in #3104
- Update AnomaCallablePathId to match Anoma calling convention by @paulcadman in #3107
- Update license reference by @emmanuel-ferdman in #3108
- Add frontend support for Anoma stdlib sha256 by @paulcadman in #3109
- Update anoma nock stdlib to include resource machine client library by @paulcadman in #3110
- Fix closure representation in the Nock backend by @lukaszcz in #3105
- Rename Nockma stdlib to anomalib and add RM references by @paulcadman in #3111
- Add frontend support for Anoma Resource Machine builtins by @paulcadman in #3113
- Refactor dangerous default branches in Core to Tree translation by @janmasrovira in #3116
- Serialize Nockma output using nock jam by @paulcadman in #3066
- Don't put a space after the lambda keyword by @janmasrovira in #3121
- Improve Set and Map modules in the standard library by @lukaszcz in #3120
- Update Anoma nock library by @paulcadman in #3119
- Remove VampIR from the CI by @lukaszcz in #3126
- Formatter: add braces when the iterator body is not enclosed by @lukaszcz in #3122
- Set line width to 80 by @janmasrovira in #3124
- Improve function argument names in the standard library by @lukaszcz in #3127
- Run Nockma in an Anoma node by @janmasrovira in #3128
- Allow trailing semicolons everywhere by @lukaszcz in #3123
- Support random API from the Anoma stdlib by @paulcadman in #3129
- Fix linux static build by pinning ghc-musl container version by @paulcadman in #3132
- Detect redundant patterns by @lukaszcz in #3101
- Detect constant side conditions in matches by @lukaszcz in #3133
- Stdlib: add functions to the Map module by @lukaszcz in #3136
- Fix package-base interaction by @janmasrovira in #3139
- Add anoma nockma tests by @janmasrovira in #3134
- Anoma client verbose request response by @paulcadman in #3140
juvix dev nockma run --anoma-dir ./anoma --args
are given as a nockma list by @janmasrovira in #3142- Add
dev nockma encode
command by @janmasrovira in #3135 - Update juvix-stdlib ref to latest main by @paulcadman in #3148
- Use
nockmaEq
instead of Eq instance to detectnil
terminator by @paulcadman in #3149 - Fix StdlibRandomNextBytes call by @paulcadman in #3150
- Release 0.6.7 by @paulcadman in #3153
New Contributors
- @emmanuel-ferdman made their first contribution in #3108
Full Changelog: v0.6.6...v0.6.7
v0.6.6
Implemented enhancements:
- Improve output of
juvix dev import-tree print
#2976 (janmasrovira) - Isabelle/HOL translation: comments #2974 (lukaszcz)
- Improve compilation progress log #2969 (janmasrovira)
- Isabelle/HOL translation: records and named patterns #2963 (lukaszcz)
- Translate Judoc comments to Isabelle/HOL #2958 (lukaszcz)
- Isabelle/HOL translation: the
isabelle-ignore
pragma #2955 (lukaszcz) - Add do notation #2937 (janmasrovira)
Merged pull requests:
- Add
IsInstanceCoercion
to Internal #2981 (janmasrovira) - Monad and Applicative traits in juvix stdlib #2979 (paulcadman)
- Add
PartialDo
effect #2978 (janmasrovira) - Improve performance of anomaEncode / anomaDecode in the Core evaluator #2975 (paulcadman)
- Don't fold lets with
fail
,trace
or>->
in the body #2973 (lukaszcz) - Fix JuvixTree type unification #2972 (lukaszcz)
- Isabelle/HOL translation: add 'O' and 'OO' to reserved names #2961 (lukaszcz)
- Add
anoma-bytearray-{to, from}-anoma-contents
builtins #2960 (paulcadman) - Fix bug where highlighting is not kept when the file has a type error and imports some other file #2959 (janmasrovira)
- Register builtins during scoping and report proper errors instead of crashing #2943 (janmasrovira)
v0.6.5
Implemented enhancements:
- Add
--statements
flag tojuvix dev latex export
#2946 (janmasrovira) - Improve specialization optimization #2944 (lukaszcz)
- Export Juvix source code to latex #2917 (janmasrovira)
- Allow instance field declarations #2916 (janmasrovira)
- Add ByteArray builtin and Byte literal #2865 (paulcadman)
Merged pull requests:
- Fix inference of let and letrec in core #2953 (janmasrovira)
- Isabelle/HOL name quoting #2951 (lukaszcz)
- Remove unicode from Isabelle/HOL output #2950 (lukaszcz)
- Use ByteArray for Anoma cryptographic builtins #2947 (paulcadman)
- Add more comments in the source code #2938 (lukaszcz)
- Update stdlib submodule reference to juvix-stdlib main #2936 (paulcadman)
- Do not try flatparse scanner for .md files #2934 (janmasrovira)
- Add builtin ByteArray type #2933 (paulcadman)
- Update juvix-stdlib to include Foldable and Functor traits #2932 (paulcadman)
- Improve css of html documentation and allow different themes #2931 (janmasrovira)
- Fix html rendering of fixities #2930 (janmasrovira)
- Fix scanning of names with
import
prefix #2929 (janmasrovira) - Fix name signature bug and extend test for instance fields #2928 (janmasrovira)
- Add FromNatural trait in
package-base
#2926 (paulcadman) - Fix #2924. Use MegaParsec scanner for Markdown files #2925 (jonaprieto)
- Put
Last modified
message inside footer tag #2922 (janmasrovira) - Improve css themes #2921 (janmasrovira)
- Do not show progress log for
juvix html
#2920 (janmasrovira) - Add support for unsigned 8-bit integer type Byte #2918 (paulcadman)
- Properly handle confluent imports #2915 (janmasrovira)
- Allow record fields to be iterators #2909 (janmasrovira)
- Logger #2908 (janmasrovira)
v0.6.4
Implemented enhancements:
- Puns for named application #2890 (janmasrovira)
juvix typecheck
with no file argument typechecks all project #2889 (janmasrovira)- Update juvix-stdlib submodule reference to add Result #2885 (paulcadman)
- Make
juvix format
line width 100 with ribbon width 100 #2883 (paulcadman) - Translate function bodies to Isabelle/HOL #2868 (lukaszcz)
- Add front-end support for case expressions boolean side conditions #2852 (janmasrovira)
Merged pull requests:
- Bugfix: compiler looping with the
specialize
pragma #2899 (lukaszcz) - Fix CI for RISC0 version 1.0.2 #2888 (lukaszcz)
- Add precondition to run tests #2887 (janmasrovira)
- Remove Geb backend #2886 (paulcadman)
- Print pipe for else branch in multi if expression #2881 (janmasrovira)
- Add
ExceptT
,MonadError
,MonadTrans
as a test #2880 (janmasrovira) - Migrate old named application syntax #2876 (janmasrovira)
- Pragmas for record fields #2875 (lukaszcz)
- Reduce Internal boilerplate #2874 (janmasrovira)
v0.6.3
Implemented enhancements:
- Improve performance of formatting a project #2863 (janmasrovira)
- Adapt Anoma builtins to new Anoma Node API #2861 (paulcadman)
- Support Anoma representation of Maybe #2856 (paulcadman)
- Add support for anoma specific functions to the Core evaluator #2851 (paulcadman)
- Inline immediate values #2842 (lukaszcz)
- Dead code elimination in JuvixReg #2835 (lukaszcz)
- Give proper colors to builtins #2834 (janmasrovira)
- Constant propagation in JuvixReg #2833 (lukaszcz)
- Copy propagation in JuvixReg #2828 (lukaszcz)
- Generalize import syntax #2819 (janmasrovira)
Merged pull requests:
- Merge
if
->ite
renaming from stdlib #2869 (janmasrovira) - Optimize
letFunctionDefs
inJuvix.Compiler.Internal.Data.InfoTable
#2867 (lukaszcz) - Refactor pipeline functions for tests #2864 (lukaszcz)
- Make
Maybe
a builtin inductive type #2860 (paulcadman) - Peephole optimization of Cairo assembly #2858 (lukaszcz)
- Update juvix-stdlib to remove non-ASCII indentifiers #2857 (paulcadman)
- Add an
if
instruction to JuvixReg #2855 (lukaszcz) - Cairo: untagged record representation #2853 (lukaszcz)
- Add lcomposition fixity to support (>>) in the stdlib #2847 (paulcadman)
- Remove copy propagation from the native/WASM and Rust pipelines #2846 (lukaszcz)
just format
uses ghc flags in juvix.cabal #2844 (janmasrovira)- Fix names in Core #2843 (lukaszcz)
- Fix Rust toolchain caching #2825 (lukaszcz)
- Cairo: Support complex data types in program input #2822 (lukaszcz)
- Add error message for ill-scoped variables #2566 (janmasrovira)
v0.6.2
v0.6.2 (2024-06-12)
Implemented enhancements:
- Rust runtime #2782 (lukaszcz)
- Optional braces in case syntax #2778 (lukaszcz)
- Support Anoma cryptographic primitives as Juvix builtin axioms #2767 (paulcadman)
- Support Anoma serialisation primitives as Juvix builtin axioms #2764 (paulcadman)
- Multiway
if
syntax #2770 (lukaszcz) - Add integer literals with bases #2746 (janmasrovira)
- Cairo Elliptic Curve builtin #2731 (lukaszcz)
- refactor
--target
into subcommands fordev tree compile
and other improvements #2713 (janmasrovira) - Make
compile
targets a subcommand instead of a flag #2700 (janmasrovira) - Translate Juvix types to Isabelle/HOL #2689 (lukaszcz)
- Parallelize the pipeline #2749 (janmasrovira)
Merged pull requests:
- Upgrade to ghc-9.8.2 #2794 (janmasrovira)
- Report proper location for normalized types in the WrongType error #2814 (janmasrovira)
- Disable macOS CI #2821 (lukaszcz)
- Add pedantic option to justfile #2816 (janmasrovira)
- Add GHC Identity to Juvix/Prelude #2815 (janmasrovira)
- Fixes crash when trying to normalize case expression #2811 (janmasrovira)
- Improve parallel template #2809 (janmasrovira)
- RISC0 Rust backend #2702 (lukaszcz)
- Juvix to Isabelle/HOL translation #2752 (lukaszcz)
- Fix generation of wildcards in RecordPattern #2802 (janmasrovira)
- Support Anoma stdlib sign-detached API #2798 (paulcadman)
- Use little endian encoding of ByteStrings in Anoma #2793 (paulcadman)
- Update stdlib to the main branch #2791 (lukaszcz)
- Add support for Strings in the Anoma backend #2789 (paulcadman)
- Support Anoma stdlib APIs
sign
andverify
#2788 (paulcadman) - Rust backend #2787 (lukaszcz)
- Update Anoma nock stdlib #2786 (paulcadman)
- Support Anoma stdlib API
verifyDetached
#2785 (paulcadman) - refactor: Add Anoma Node in Tree language #2784 (paulcadman)
- justfile: replace enableOptimized flag with disableOptimized #2783 (paulcadman)
- Effects for finite and infinite supplies #2780 (janmasrovira)
- Parallel pipeline #2779 (janmasrovira)
- Remove checking for module fragility #2777 (lukaszcz)
- Use multiway
if
in the standard library #2776 (lukaszcz) - Add support for anoma-decode builtin #2775 (paulcadman)
- Support type synonyms in instance types #2772 (lukaszcz)
- Bugfix: modules associated with inductive types should be declared after their inductive types #2768 (lukaszcz)
- Add support for anoma-encode builtin #2766 (paulcadman)
- Update Anoma nockma stdlib #2765 (paulcadman)
- justfile: use numParallelJobs in test flag #2762 (paulcadman)
- Deduplicate project remote dependencies #2761 (paulcadman)
- Check for unsupported builtins #2757 (lukaszcz)
- Fully respect _evalOptionsNoFailure in the Core evaluator #2756 (lukaszcz)
- Use aarch64 macOS agent for CI build #2754 (paulcadman)
- Support sharing ModuleInfoCache between pipeline runs #2753 (paulcadman)
- Import tree #2751 (janmasrovira)
- Remove unused
resourcet-effectful
dependency #2748 (janmasrovira) - Remove support for examples from judoc #2747 (paulcadman)
- Fix dev compile options documentation #2741 (paulcadman)
- Fix benchmark runtime variant #2740 (paulcadman)
- Style refactor #2739 (janmasrovira)
- remove redundant GitClone constraint #2738 (janmasrovira)
- Support
extract-module-statements
attribute in juvix code blocks #2734 (paulcadman) - Apply common options in
dev compile
subcommands #2732 (janmasrovira) - Use the justfile for CI builds #2730 (paulcadman)
- Support parallel module compilation in justfile #2729 (paulcadman)
--debug
implies-O0
as the default #2728 (janmasrovira)- Fix output file extension for
compile cairo
#2727 (janmasrovira) - Cairo Poseidon hash builtin support #2723 (lukaszcz)
- Support for Cairo builtins #2718 (lukaszcz)
- Fix benchmarks suite
juvix compile
variants #2717 (paulcadman) - Double substitute the Nockma functions placeholder in the main function #2715 (paulcadman)
- Miscellaneous improvements for Nockma debugging #2714 (paulcadman)
- Cairo field compatibility #2712 (lukaszcz)
- Use
prettyString
instead ofshow . pretty
#2711 (janmasrovira) - Cairo disassembler #2710 (lukaszcz)
- Support Cairo VM input hints #2709 (lukaszcz)
- Cache cairo-vm-cli in the CI build #2707 (paulcadman)
- Fix casm test failures due to concurrent calls to setCurrentDir #2706 ([paulcadman](https://github.com/paulcadma...
v0.6.1
v0.6.1 (2024-03-25)
Implemented enhancements:
- Support Nockma/Anoma scry operation #2672 (paulcadman)
- JuvixReg to CASM translation #2671 (lukaszcz)
Merged pull requests:
- Rename
Dynamic'
toDynamicTy'
#2696 (janmasrovira) - Rename
Const
constructor in Tree and Reg languages #2695 (janmasrovira) - Promote use of
MonadIO
to minimizeembed
occurrences #2694 (janmasrovira) - Support compilation of Anoma transactions in nockma backend #2693 (paulcadman)
- Add flags for the markdown and html backend:
--strip-prefix
and--ext
. #2681 (jonaprieto) - Support nockma scry #2678 (paulcadman)
- JuvixReg to CASM translation #2671 (lukaszcz)
- Replace
polysemy
byeffectful
#2663 (janmasrovira)
v0.6.0
v0.6.0 (2024-03-01)
Implemented enhancements:
- Translation from JuvixTree to Nockma #2606 (paulcadman)
- Add field element type #2659 (lukaszcz)
- Support compilation to Anoma compatible functions #2652 (paulcadman)
- Effectful Juvix tree evaluator #2623 (janmasrovira)
- JuvixTree REPL #2608 (lukaszcz)
- Filter out unreachable functions in JuvixTree #2597 (lukaszcz)
- JuvixTree "apply" transformation #2595 (lukaszcz)
- JuvixTree recursors and transformation framework #2594 (lukaszcz)
- JuvixTree evaluator #2589 (lukaszcz)
- Nock serialization #2558 (janmasrovira)
- Nock language and evaluator #2557 (paulcadman)
- Per-module compilation #2468 (lukaszcz)
Merged pull requests:
- Update juvix-stdlib submodule reference to main #2675 (paulcadman)
- Use the target of aliases when resolving name signatures and iterators #2669 (paulcadman)
- Fix caseCmd for RepConstr #2666 (janmasrovira)
- Create separate
polysemy
andeffectful
based prelude #2662 (janmasrovira) - Move noFile to common code #2661 (paulcadman)
- Correctly resolve the visibility annotations of NameSpaceEntries #2657 (paulcadman)
- Transitively register local modules in ScoperState #2655 (paulcadman)
- Generalize backend builtin primitive operations #2653 (lukaszcz)
- JuvixReg transformation: initialize variables assigned in other branches #2650 (lukaszcz)
- Refactor
readFile
and some parsers to usePath
instead ofFilePath
#2649 (janmasrovira) - JuvixReg cleanup transformation #2647 (lukaszcz)
- Transform JuvixReg into SSA form #2646 (lukaszcz)
- Use
EmbedIO
instead ofEmbed IO
#2645 (janmasrovira) - Remove redundant
Embed
effect in the scoper #2644 (janmasrovira) - Style improvements #2642 (lukaszcz)
- JuvixReg recursors #2641 (lukaszcz)
- Effect benchmarks #2640 (janmasrovira)
- Update REPL artifacts with builtins from stored modules #2639 (paulcadman)
- Remove redundant
embed @IO
#2637 (janmasrovira) - JuvixReg interpreter #2635 (lukaszcz)
- Fix linux static binary build workflow #2634 (paulcadman)
- Fix bugs in the Nockma prettyprinter and parser #2632 (janmasrovira)
- Parse nockma
atomVoid
#2631 (janmasrovira) - Add nockma as a valid target for the tree compile command #2630 (janmasrovira)
- Use pow2 function from Anoma/Nock stdlib #2629 (paulcadman)
- Add jvt files to
extra-source-files
#2628 (paulcadman) - Add
-XBangPatterns
to the justfile #2627 (janmasrovira) - Remove BangPattern pragmas #2626 (janmasrovira)
- Effectful
Output
#2625 (janmasrovira) - upgrade to Ghc 9.8.1 #2624 (janmasrovira)
- Use images from Quay #2620 (benz0li)
- Replace
egrep
withgrep -E
#2618 (janmasrovira) - JuvixReg parser and pretty printer #2617 (lukaszcz)
- JuvixTree validation #2616 (lukaszcz)
- Add a justfile to perform project install, test, clean, format tasks #2615 (paulcadman)
- Translation from
Juvix Tree
toNockma
#2614 (janmasrovira) - Store syntax aliases in serialized scoper infotable #2605 (paulcadman)
- Use
writeFileEnsureLn
in place ofwriteFile
#2604 (janmasrovira) - Remove redundant
QuasiQuotes
pragmas #2603 (janmasrovira) - Fix generation and evaluation of Nock isCell op #2602 (paulcadman)
- JuvixTree negative evaluation tests #2601 (lukaszcz)
- Location info in JuvixTree nodes #2600 (lukaszcz)
- Options for
juvix dev tree read
#2599 (lukaszcz) - JuvixTree smoke tests #2598 (lukaszcz)
- Compute temporary stack height in JuvixTree #2596 (lukaszcz)
- Add
dev nockma format
command #2593 (janmasrovira) - Use Anoma compatible Nockma serialization of Bools and List-like data structures #2591 (paulcadman)
- Add the
juvix dev tree compile
command #2590 (lukaszcz) - JuvixTree tests #2587 (lukaszcz)
- Support
MemRepTuple
in the Nockma backend #2586 (janmasrovira) - Improved errors for nockma eval #2585 (janmasrovira)
- Unqualify language import in nockma parser #2584 (janmasrovira)
- JuvixTree parser and pretty printer #2583 (lukaszcz)
- Nockma compile refactor #2582 (paulcadman)
- Factor the JuvixCore -> JuvixAsm translation into JuvixCore -> JuvixTree -> JuvixAsm #2581 (lukaszcz)
- Fast nockma eval #2580 (janmasrovira)
- Merge stack and temporary variable groups in JuvixReg #2579 (lukaszcz)
- Filter out unreachable functions in JuvixAsm #2575 (lukaszcz)
- Require semicolon to separate case/if branches in JuvixAsm syntax [#2574](https://github.c...
v0.5.5
v0.5.5 (2023-12-01)
Implemented enhancements:
- Add new case for positivity checker: type cannot occur as arg of bound var #2542 (jonaprieto)
- Add dependent defaults for the new typechecker #2541 (janmasrovira)
- Extract builtin definitions for loading a Package into bundled package-base package #2535 (paulcadman)
- Update the Juvix lock file when the Package file changes #2522 (paulcadman)
- Add non-dependent default values to the new typechecking algorithm #2516 (janmasrovira)
Merged pull requests:
- Update to the latest juvix-stdlib #2546 (paulcadman)
- Remove old typechecker #2545 (janmasrovira)
- Fix codeblocks indentation in Markdown output #2539 (jonaprieto)
- runtime Makefile: Do not resolve variables when writing a dependency file #2538 (paulcadman)
- Fix location for aliases #2536 (jonaprieto)
- Add Makefile to hyperfine benchmarks #2533 (jonaprieto)
- Negative tests for
--new-typechecker
#2532 (janmasrovira) - Fix the global 'package' package so that modules within it can be type-checked independently #2526 (paulcadman)
- Improve inference for
--new-typechecker
#2524 (janmasrovira)