141 KiB
Changelog
v0.6.3 (2024-07-02)
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 (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)
- Capture scry id in the main function and use it when compiling anomaGet #2705 (paulcadman)
- Move the Nockma standard library to a separate file #2701 (lukaszcz)
- Fix memory access order in the JuvixReg to CASM translation. #2697 (lukaszcz)
- CASM serialization #2679 (lukaszcz)
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 (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 (lukaszcz)
- Fix typos #2573 (rex4539)
- Cairo ASM language and interpreter #2572 (lukaszcz)
- Nockma compile #2570 (janmasrovira)
- Remove old typechecker module #2565 (janmasrovira)
- Add nockma evaluator #2564 (paulcadman)
- Implement the dynamic dispatch loop in JuvixAsm #2556 (lukaszcz)
- Structured temporary stack manipulation in JuvixAsm #2554 (lukaszcz)
- Fix benchmarks test compilation #2552 (paulcadman)
- Improve formatting of function definition arguments #2551 (janmasrovira)
- Implement wildcard constructor #2550 (janmasrovira)
- Read
Package
on demand and cache it #2548 (janmasrovira)
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)
v0.5.4 (2023-11-17)
Implemented enhancements:
- Add MarkdownInfo entry in Module Concrete Decl and proper errors #2515 (jonaprieto)
- Fix check for module name for Orphan Juvix files and imports of Juvix Markdown files #2512 (jonaprieto)
- General inductive parameters #2506 (janmasrovira)
- Named arguments syntax with function definitions #2494 (lukaszcz)
- Update juvix init to generate Package.juvix instead of juvix.yaml #2483 (paulcadman)
- Interleave arity and typechecking #2481 (janmasrovira)
- Literal casting #2457 (lukaszcz)
Merged pull requests:
- Fix Bank Example #2514 (jonaprieto)
- Refactor markdown parsing #2513 (janmasrovira)
- Add PackageDescription.Basic module Package variant #2509 (paulcadman)
- Run test suite in parallel #2507 (paulcadman)
- test: Run juvix format on juvix packages rather than files #2505 (paulcadman)
- Fix
clone
insubsHoles
#2504 (lukaszcz) - Migrate all Juvix projects from juvix.yaml to Package.juvix in the repository #2503 (paulcadman)
- Update file walker to use Package.juvix to detect a Juvix package #2502 (paulcadman)
- Refresh bound variable ids when substituting in Internal #2501 (lukaszcz)
- Add -n/--non-interactive option to juvix init #2500 (paulcadman)
- Use Package.juvix in the global project #2499 (paulcadman)
- Normalise paths on ResolverCache set and lookup #2498 (paulcadman)
- Fix Empty Lines at the Beginning of a File with No module decl Prevent Parsing #2496 (jonaprieto)
- Fix remove unexpected whitespaces introduced by formatting #2489 (jonaprieto)
- Add support for Literate Juvix Markdown #2448 (jonaprieto)
v0.5.3 (2023-11-01)
Implemented enhancements:
- Arithmetic simplification #2454 (lukaszcz)
- Constant folding #2450 (lukaszcz)
- Proposal: Use a Juvix source file to define a package instead of YAML #2336 (paulcadman)
- Dependent default values #2446 (janmasrovira)
- Instance coercions #2444 (lukaszcz)
- Comparison optimization #2443 (lukaszcz)
- Allow
syntax operator
in the rhs of a record declaration #2442 (janmasrovira) - Add constructor wildcards #2437 (janmasrovira)
- Add default arguments #2408 (janmasrovira)
Merged pull requests:
- Cache .hie directory in CI #2490 (paulcadman)
- Fix #2479 #2486 (jonaprieto)
- Update Lisp File Printer #2484 (agureev)
- Rename Roots type to Root #2480 (paulcadman)
- Version the PackageDescription module #2478 (paulcadman)
- Format long list literals by splitting using pre-comma multiline #2477 (paulcadman)
- Use a versioned documentation link in the doctor output #2475 (paulcadman)
- Add missing juvix.yaml files to test project roots #2474 (paulcadman)
- Use system locale independent readFile and writeFile APIs from with-utf8 #2473 (paulcadman)
- Fix precedence inconsistency bug #2470 (lukaszcz)
- Add FileExt type #2467 (jonaprieto)
- Update clang formatting #2465 (jonaprieto)
- Add dependency on expressions in function default arguments #2462 (paulcadman)
- Use JuvixError instead of Text for errors in Package file loading #2459 (paulcadman)
- Refactor EntryPoint, Package, Pipeline, Root packages #2458 (paulcadman)
- Show import with public keyword in the html doc #2456 (janmasrovira)
- Process $root/Package.juvix using a special PathResolver #2451 (paulcadman)
- Add new flags to the Html backend #2447 (jonaprieto)
- Case value inlining #2441 (lukaszcz)
- Fix instance axiom bug #2439 (lukaszcz)
- Update Geb backend #2436 (agureev)
- Ignore instance arguments in the termination checker #2435 (janmasrovira)
- Use a Juvix source file to define a package #2434 (paulcadman)
- Numeric, ordering and equality traits #2433 (lukaszcz)
- Synchronize stdlib submodule #2428 (paulcadman)
- Improve the specialisation optimisation #2417 (lukaszcz)
- Fix formatting for all Juvix files in tests folder #2404 (jonaprieto)
v0.5.2 (2023-10-04)
Implemented enhancements:
- Add
juvix dependencies update
command #2419 (paulcadman) - Add Juvix package lockfile support #2334
- Add
Partial
trait #2409 (lukaszcz) - Fix for crash with wildcard used in type definition #2405 (janmasrovira)
- Improve closure calls in the runtime #2396 (lukaszcz)
- Allow open statements in let expressions #2395 (janmasrovira)
- Fix delay instance resolution #2393 (lukaszcz)
- Support functions in instance parameters #2385 (lukaszcz)
- Do not call
git fetch
on git dependency if ref already exists in clone #2379 (paulcadman) - Improve inlining #2377 (lukaszcz)
- Record creation syntax with function definitions #2369 (lukaszcz)
Merged pull requests:
- Fix record creation error message location #2424 (lukaszcz)
- Fix bug in instance termination checking #2423 (lukaszcz)
- Reinstate the project .hlint.yaml #2420 (paulcadman)
- Remove package.yaml entry for PNG assets #2418 (paulcadman)
- Update benchmarks #2415 (lukaszcz)
- Fix minor: case and error message #2407 (jonaprieto)
- Fix tara url svg #2406 (jonaprieto)
- Update pre-commit to check JSON formatting #2400 (jonaprieto)
- Simplify README #2399 (jonaprieto)
- Remove unused files #2398 (jonaprieto)
- Minor changes to midsquare #2397 (jonaprieto)
- Add fixity
none
and make aliases inherit fixity #2391 (lukaszcz) - Add nodes with no edges to the dependency graph #2390 (janmasrovira)
- Remove function clause from
Internal
#2389 (janmasrovira) - Add package lockfile support #2388 (paulcadman)
- Fix case formatting #2387 (lukaszcz)
- Instance holes #2384 (lukaszcz)
- Update standard library list functions to use traits #2382 (lukaszcz)
- Avoid serialization of _packageFile field in juvix.yaml #2381 (paulcadman)
- Avoid the
-Os
option when generating WebAssembly #2378 (lukaszcz) - Error on local instances #2376 (lukaszcz)
- Error for an instance subsumed by other instances #2375 (lukaszcz)
0.5.1 (2023-09-15)
Merged pull requests:
v0.5.0 (2023-09-14)
Implemented enhancements:
- Add new case syntax #2353 (paulcadman)
- VampIR range checks and error handling #2344 (lukaszcz)
- Traits #2320 (lukaszcz)
- Aliasing #2301 (janmasrovira)
- External package dependencies #2272 (paulcadman)
Merged pull requests:
- Update stdlib submodule to current stdlib main #2364 (paulcadman)
- Add newlines at end of JSON files #2360 (lukaszcz)
- Update the standard library to use the trait framework #2359 (lukaszcz)
- Remove duplicated implicit pattern check from scoper #2357 (paulcadman)
- Fix instance import #2350 (lukaszcz)
- Small refactor for traits #2345 (janmasrovira)
- Allow named arguments in type synonyms #2343 (janmasrovira)
- Improve formatting of single-constructor types and records #2342 (janmasrovira)
- Add Internet effect #2337 (janmasrovira)
- Global offline flag #2335 (paulcadman)
- New fixity/iterator syntax #2332 (janmasrovira)
- Add fixity face #2328 (janmasrovira)
- Generate html documentation for alias and fixity definitions #2327 (janmasrovira)
- Generate documentation for local modules in the html backend #2326 (janmasrovira)
- Generate function signatures in the html backend #2325 (janmasrovira)
- Add macchiato html theme #2323 (janmasrovira)
- Show all available html themes in the CLI automatically #2322 (janmasrovira)
- Add css colors
ju-comment
andju-judoc
#2321 (janmasrovira) - Report termination errors after typechecking #2318 (janmasrovira)
- Install wasmer binary from Github releases #2317 (paulcadman)
- Fix record update formatting #2315 (lukaszcz)
- Fix record pattern formatting #2314 (lukaszcz)
- Update ci to use ormolu 0.5.3.0 and reformat project #2313 (janmasrovira)
- Add pragma face #2312 (janmasrovira)
- Remove
open import
syntax #2307 (lukaszcz)
v0.4.3 (2023-08-24)
Implemented enhancements:
- Allow wildcard arguments in new function definition syntax #2295 (lukaszcz)
- Allow omitting
: Type
in implicit function argument definitions and in type definitions #2291 (lukaszcz) - Record patterns #2271 (janmasrovira)
- User-friendly operator declaration syntax #2270 (lukaszcz)
- Record updates #2263 (janmasrovira)
- Add field projections for records #2260 (janmasrovira)
Merged pull requests:
- Fix shell variables in linux static build stack install #2309 (paulcadman)
- Replace gitrev with githash for obtaining build-time git info #2308 (paulcadman)
- Check that type functions are supported #2306 (janmasrovira)
- Minor comment updates #2303 (lukaszcz)
- Update stdlib to use new ADT and record syntax #2302 (paulcadman)
- Fix bug in arity checker with pi types #2300 (janmasrovira)
- Error on duplicate keys in YAML #2290 (lukaszcz)
- Check for incomparable precedences #2289 (lukaszcz)
- Prettyprint aggregate ADT constructor types with parentheses #2284 (paulcadman)
- Fixes behaviour of default stdlib when internal-build-flag is set #2283 (paulcadman)
- Enable builtin list syntax in the standard library #2282 (lukaszcz)
- Improve iterator and named arguments parsing #2278 (lukaszcz)
- Update stackage resolver to LTS 21.6 #2275 (paulcadman)
- Fix benchmark wasmer command #2268 (paulcadman)
- Disallow iterators with zero ranges #2267 (lukaszcz)
- Don't print pragmas in documentation #2266 (lukaszcz)
- Adt syntax #2262 (janmasrovira)
- Minor refactor and script update #2261 (lukaszcz)
- Separate modules namespace #2257 (janmasrovira)
v0.4.2 (2023-07-25)
Implemented enhancements:
- Fold lets when the bound variable occurs at most once #2231 (lukaszcz)
- Case folding #2229 (lukaszcz)
- Specialization optimisation #2164 (lukaszcz)
Merged pull requests:
- Refactor deriving statements in
Concrete.Language
#2256 (janmasrovira) - Rename inductive constructor #2255 (janmasrovira)
- Add record declaration syntax #2254 (janmasrovira)
- Typcheck imports before statements #2253 (janmasrovira)
- Named arguments #2250 (janmasrovira)
- Format juvix files using new function syntax #2245 (janmasrovira)
- Update to GEB version 0.3.2 #2244 (lukaszcz)
- New syntax for function definitions #2243 (janmasrovira)
- Parse many consecutive
-
as a comment #2240 (janmasrovira) - Add syntax for builtin list #2239 (janmasrovira)
- Fix bug in aritychecker #2238 (janmasrovira)
- Local pragmas improvements #2236 (lukaszcz)
- Fix bug in
computeTypeInfo
#2234 (lukaszcz) - Numeric range types #2232 (lukaszcz)
- Use specialization pragmas in the standard library #2230 (lukaszcz)
- Fix de Bruijn indices in LetRecs #2227 (lukaszcz)
- Remove abstract #2219 (janmasrovira)
v0.4.1 (2023-06-23)
Implemented enhancements:
- The
public
pragma #2223 (lukaszcz) - Local pragmas #2222 (lukaszcz)
- Lifting calls out of cases for the VampIR backend #2218 (lukaszcz)
- Use equality instead of less-equal when translating matching on Nats #2215 (lukaszcz)
- Support juvix format with no argument to format a project #2208 (paulcadman)
- Always print source of formatted file unless --check is specified #2205 (paulcadman)
- Improve iterator formatting and syntax #2204 (lukaszcz)
- Restrict permutative conversions on cases to non-booleans #2201 (lukaszcz)
Merged pull requests:
- Build and cache smoke binary keyed using icu4c version #2221 (paulcadman)
- Switch to Halo2 for VampIR backend tests #2216 (lukaszcz)
- Remove Subtree sections, all collapse all button #2213 (vrom911)
- Fix
isNegative
in the VampIR runtime #2212 (lukaszcz) - Use juvix-installer in CodeSpaces, install vamp-ir #2210 (vrom911)
- Move termination checker to Internal #2209 (janmasrovira)
- Propogate formatter results when traversing subdirs #2207 (paulcadman)
- Update vamp-ir CI installation #2199 (jonaprieto)
- More tests for the VampIR compilation pipeline #2197 (lukaszcz)
- Fix runtime C maybe benchmark example #2195 (paulcadman)
- Refactor isValidChar #2194 (jonaprieto)
- Check valid argument names in YAML #2193 (lukaszcz)
- Fix benchmark runtime C examples #2192 (paulcadman)
- Update to the new version of VampIR #2138 (lukaszcz)
v0.4.0 - Prague! (2023-06-02)
Implemented enhancements:
- Always print source of formatted file unless --check is specified #2173 (paulcadman)
- Improve parsing error messages #2170 (lukaszcz)
Merged pull requests:
- Use stderr for errors in the runtime #2184 (lukaszcz)
- Change terminal colours to be more align with the scheme #2183 (vrom911)
- Respect fixity in runtime printer #2182 (lukaszcz)
- Format returns 0 when file is not formatted #2181 (vrom911)
- Print values in
juvix eval
#2179 (lukaszcz) - Fix 'function not found' error in
juvix eval
#2178 (lukaszcz) - Store source location of
almost
everything #2174 (janmasrovira) - Do not filter unreachable symbols when compiling for REPL #2172 (paulcadman)
v0.3.5 (2023-06-02)
Implemented enhancements:
- Update standard library for better readability, efficiency and iterator use #2153 (lukaszcz)
- Use the
JUVIX_LLVM_DIST_PATH
environment variable to search for the clang executable #2152 (paulcadman) - Finish the new pretty printing algorithm and delete the old one #2151 (janmasrovira)
- Add
:doc
command to the repl #2142 (janmasrovira) - Allow to specify VampIR variable names #2141 (lukaszcz)
- VampIR pipeline: handle booleans in the type of
main
#2137 (lukaszcz) - Add
main
field tojuvix.yaml
#2120 (janmasrovira) - Add
:def
command to the repl #2119 (janmasrovira)
Merged pull requests:
- Properly scan imports inside local modules #2165 (janmasrovira)
- Add extra git dependencies to
cabal.project
#2158 (janmasrovira) - Support new
import ... open
syntax in REPL #2156 (paulcadman) - Add the
format
pragma #2150 (lukaszcz) - Remove code for
Eval
andPrint
statements #2149 (lukaszcz) - Fix printing of infix constructor values #2144 (lukaszcz)
- Add
ValueType
#2143 (janmasrovira) - Add
Semigroup
instance forAnsiText
#2140 (janmasrovira) - Show unicode characters without escaping #2127 (janmasrovira)
- Iterator syntax #2126 (lukaszcz)
- Fix spurious messages from Makefile.generic #2125 (lukaszcz)
- Add gnu-sed to the macOS build in the CI #2123 (jonaprieto)
- Fix baseUrl for juvix docs in Doctor command #2122 (vrom911)
- Remove --no-format option #2121 (vrom911)
- Add Bottom node #2112 (janmasrovira)
- VampIR integration #2103 (lukaszcz)
- Add VampIR to the CI #2096 (jonaprieto)
v0.3.4 (2023-05-22)
Implemented enhancements:
- Allow symbol renaming inside
using {..}
#2109 (janmasrovira) - Scope check symbols inside
using {..}
andhiding {..}
#2108 (janmasrovira) - Pass through compile optimization flag to C compiler and disable optimization for --debug #2106 (paulcadman)
- Add syntax for Judoc blocks #2102 (janmasrovira)
- Add dangling judoc error #2099 (janmasrovira)
- Modify
open import
syntax #2098 (janmasrovira) - Improve error message when input path doesn't exist #2092 (paulcadman)
- Partial incremental highlighting #2053 (janmasrovira)
- Normalization by Evaluation #2038 (lukaszcz)
- Inlining #2036 (lukaszcz)
Merged pull requests:
- Use PrettyCode instance instead of obsolete ppUsingItem in Print.Base #2115 (janmasrovira)
- Add
syntax
keyword #2107 (lukaszcz) - Simplify formatting of lambdas with a single clause #2105 (janmasrovira)
- Fix extra whitespace in text rendering of indented empty lines #2101 (paulcadman)
- Reachability analysis in Core #2097 (lukaszcz)
- Slightly improve prettyprinting for Core #2094 (janmasrovira)
- Bump to LTS Haskell 20.21
ghc-9.2.7
#2093 (jonaprieto) - Direct translation from normalized JuvixCore to VampIR #2086 (lukaszcz)
- ci: clean .juvix-build directory before formatting/typechecking examples #2079 (paulcadman)
- Fix format on projects that contain subprojects #2078 (paulcadman)
- Implement core transformation
let-hoisting
#2076 (janmasrovira) - Allow nested block comments #2075 (janmasrovira)
- Fix topCommandInputFile for Format command #2063 (vrom911)
- Fix reachability analysis with imports in unreachable nested modules #2062 (lukaszcz)
- Fix devcontainer juvix install #2061 (paulcadman)
- Fix Makefile target bugs for formatting and type Checking Juvix files #2057 (jonaprieto)
- Fix a bug in the positivity checker
\#1943
#2054 (jonaprieto) - Arity check types and functions
-\>
#2049 (janmasrovira) - Fix ordering of statements in Abstract -> Internal #2040 (janmasrovira)
v0.3.3 (2023-05-08)
Implemented enhancements:
- Update to latest stdlib #2048 (paulcadman)
- Support module imports in Juvix REPL #2029 (paulcadman)
- Make format command's filepath optional #2028 (vrom911)
- format long lambda clause body on a new line #2015 (paulcadman)
- Support more paths #2000 (janmasrovira)
- Add: pragma support #1997 (lukaszcz)
Merged pull requests:
- Fix pipeline setup in the repl #2046 (janmasrovira)
- Fix HasExpressions ConstructorApp #2044 (paulcadman)
- Fix fromSource behaviour when both stdin and filename #2043 (vrom911)
- Return endLine info in highlighting command #2042 (vrom911)
- Enable self-application test #2041 (janmasrovira)
- Add bank example #2037 (janmasrovira)
- Substitute calls after lambda lifting #2031 (janmasrovira)
- Add delimiter face #2027 (janmasrovira)
- Propertly register top module name in scoper #2026 (janmasrovira)
- Add judoc code annotation and face #2025 (janmasrovira)
- Fix dependencies suggestion in missing module error #2024 (paulcadman)
- Remove docs related files #2023 (jonaprieto)
- Improve formatting of comments #2022 (janmasrovira)
- Support positive arity typealias in arity checker #2021 (paulcadman)
- Add format stdin smoke tests #2019 (vrom911)
- Add
juvix clean
to remove project build artifact directory #2018 (paulcadman) - Sync stdlib #2012 (janmasrovira)
- Ide improvements #2009 (janmasrovira)
v0.3.2 (2023-04-18)
Implemented enhancements:
- Qualified imports #2004 (janmasrovira)
- Pretty print JuvixCore values consistently with Juvix syntax #1988 (lukaszcz)
- Add: the 'seq' builtin
\>\>\>
#1982 (lukaszcz) - Fix: pprint positive kw for data types #1980 (jonaprieto)
- Fix: format juvix files in test/positive #1978 (jonaprieto)
- Add syntax highlighting for juvix code blocks in docs #1971 (jonaprieto)
- Add juvix global project under xdg directory and other improvements #1963 (janmasrovira)
- Add builtin integer type to the surface language #1948 (paulcadman)
Merged pull requests:
- Preserve escaped " in String literals #2011 (paulcadman)
- Fix: broken links of Example programs #2003 (jonaprieto)
- Write compile output file to invoke dir by default #1999 (paulcadman)
- Add minor improvements to the docs #1995 (vrom911)
- ci: Specify llvm version in brew prefix command #1990 (paulcadman)
- Fix location for case expressions #1987 (lukaszcz)
- Fix: add supported targets as option for compile commands #1983 (jonaprieto)
- Fix: Stop 'make check' at first failure #1981 (jonaprieto)
- Test numbering #1977 (lukaszcz)
- Refactor Core datastructures #1975 (lukaszcz)
- Add Juvix to all benchmarks #1974 (lukaszcz)
- Check for the executable
WASM/native
pipeline prerequisites #1970 (lukaszcz) - Print quoted strings in the runtime #1969 (lukaszcz)
- Update the tutorial #1967 (lukaszcz)
- Fix PrettyCode
Maybe a
instance "Just" case #1966 (paulcadman) - Documentation for projects and modules #1962 (janmasrovira)
- repl: Run disambiguateNames on result node #1961 (paulcadman)
- Add FoldTypeSynonyms Transformation to Geb Pipeline and more Geb Tests #1956 (lukaszcz)
- Support local modules #1872 (janmasrovira)
v0.3.1 (2023-03-31)
Implemented enhancements:
- Option
--show-args-num
#1946 (lukaszcz) - Preserve the target type in letrec lifting #1945 (janmasrovira)
- Add syntax highlighting to Core error messages #1938 (lukaszcz)
- Add the
--unroll
option #1935 (lukaszcz) - Preserve name and location information in Internal-to-Core #1933 (lukaszcz)
- Polymorphic type inference in Core #1931 (lukaszcz)
- Update README.md with Juvix nightly builds badge #1923 (jonaprieto)
- Create clean-up-cache.yaml #1915 (jonaprieto)
- Update GitHub pages deployment using deploy-pages action #1910 (jonaprieto)
- Check for recursive inductive types in the GEB pipeline #1909 (lukaszcz)
- CI pre-commit maintenance #1905 (jonaprieto)
- Add new README and md files #1904 (jonaprieto)
- Print JuvixCore correctly #1875 (lukaszcz)
- Pattern matching compilation #1874 (lukaszcz)
- CI Haskell maintenance #1797 (jonaprieto)
Merged pull requests:
- Let-folding after lifting #1955 (lukaszcz)
- Fix removal of polymorphic type arguments #1954 (lukaszcz)
- Fix a bug in closure traversal #1953 (lukaszcz)
- Update typecheck command to check for coverage #1952 (janmasrovira)
- CI: Ignore errors linux typecheck / format examples step #1950 (paulcadman)
- Filter out type synonyms in RemoveTypeArgs #1949 (lukaszcz)
- Add fail nodes to Geb #1947 (lukaszcz)
- End-to-end Geb compilation tests #1942 (lukaszcz)
- Add juvix dev repl command #1941 (paulcadman)
- Refactor Geb values #1940 (lukaszcz)
- Avoid capturing the same free variable multiple times in letrec lifting #1939 (janmasrovira)
- Add Judoc syntax reference #1934 (janmasrovira)
- Fix spacing of judoc in the formatter #1932 (janmasrovira)
- bench: Fix juvix compile flag for wasm #1925 (paulcadman)
- Fix memory count for string operations #1924 (lukaszcz)
- Let folding #1921 (lukaszcz)
- Add a test suite for milestone examples #1920 (paulcadman)
- Add --numeric-version flag #1918 (jonaprieto)
- Fix bug with unregistered builtin bool #1917 (lukaszcz)
- Recursion unrolling for functions #1912 (lukaszcz)
- Fix REPL state to include enough information to rerun the pipeline #1911 (janmasrovira)
- CI Haskell fix for macOS build #1908 (jonaprieto)
- Fix bug in IO runtime #1906 (lukaszcz)
- Fix JuvixAsm validation #1903 (lukaszcz)
- Fix registration of builtin inductive axioms #1901 (paulcadman)
- internal-to-core: Fix index shifting of pattern arguments #1900 (paulcadman)
- Fix de Bruijn indices in rmap #1898 (lukaszcz)
- Normalize types in repl #1897 (janmasrovira)
- Add MidSquareHash.juvix and fix types in MidSquareHash.jvc #1896 (lukaszcz)
- Automatically detect and split mutually recursive blocks in let expressions #1894 (janmasrovira)
- The
rmap
recursor #1893 (lukaszcz) - Add
juvix format
command #1886 (paulcadman) - Make keyword
end
optional for top modules #1883 (janmasrovira) - Add errors to the Core pipeline and check GEB prerequisites #1871 (lukaszcz)
- Test core to geb translation #1865 (jonaprieto)
v0.3.0 (2023-03-15)
Implemented enhancements:
- Avoid line breaks in applications within a type signature #1850 (paulcadman)
- Respect user's spacing decisions in the formatter #1837 (janmasrovira)
- Formatter should not transform ASCII symbols to unicode by default #1827 (janmasrovira)
- Enable match-to-case, nat-to-int and convert-builtins by default in REPL #1825 (lukaszcz)
- The Juvix formatter works poorly with multi-line ifs #1793 (janmasrovira)
- Add a lazy IO sequencing function (#1772) #1773 (lukaszcz)
- Support LetRec in the GEB backend #1756 (janmasrovira)
- Support integers in the GEB backend #1753 (lukaszcz)
- GEB evaluator #1751 (jonaprieto)
- Add debugging builtin functions #1731 (jonaprieto)
- Non-judoc comments are removed when generating HTML output #1723 (janmasrovira)
- Special syntax for
case
#1716 (janmasrovira) - Make || and && lazy #1701 (lukaszcz)
- It should be possible to specify multiple implicit type arguments at once #1692 (janmasrovira)
- Naive compilation of complex pattern matches with match-expressions to decision trees with case-expressions #1531 (paulcadman)
- New compilation pipeline #1832 (lukaszcz)
- Add internal core-eval option to evaluate named function identifier #1819 (paulcadman)
- Short syntax for sequences of function and datatype parameters #1809 (lukaszcz)
- Add Geb Backend Evaluator with some extra subcommands #1808 (jonaprieto)
- Add REPL option to apply Core transformations #1796 (paulcadman)
- String builtins #1784 (lukaszcz)
- Use restore/save github action to speed up the CI testing #1783 (jonaprieto)
- Fix minor issue with ==% for type equality #1780 (jonaprieto)
- Add debugging builtin functions
trace
andfail
#1771 (jonaprieto) - Keep regular comments in html output #1766 (janmasrovira)
- Lazy boolean operators #1743 (lukaszcz)
- Refactor
html
command with extra options #1725 (jonaprieto) - Add initial setup for codespaces #1713 (jonaprieto)
- Typecheck let expressions #1712 (janmasrovira)
- Use Smoke instead of shelltestrunner #1710 (jonaprieto)
- Replace –output-dir flag by –internal-build-dir #1707 (jonaprieto)
- Compiler output #1705 (jonaprieto)
- Allow optional pipe before the first constructor for inductive type declarations #1699 (jonaprieto)
- Nat builtins #1686 (lukaszcz)
Merged pull requests:
- Remove dead code in
Internal
#1891 (janmasrovira) - Remove missing Juvix examples and webapp example from docs build #1890 (paulcadman)
- Fix type synonym in let #1880 (janmasrovira)
- Update stack resolver to lts-20.12 #1873 (paulcadman)
- Use Ape to format patterns #1870 (janmasrovira)
- Fix Core-To-Geb translation #1863 (jonaprieto)
- Remove the old C backend #1862 (lukaszcz)
- Move
substEnv
to its own module #1861 (janmasrovira) - Add
_caseTypeWholeExpression
to Internal #1860 (janmasrovira) - remove old minihaskell files #1859 (jonaprieto)
- Fix bugs in the Case translation in Core-to-Geb #1858 (lukaszcz)
- Format examples #1856 (janmasrovira)
- Sort the identifiers topologically in the Core-to-GEB translation #1854 (lukaszcz)
- Add type info to the mid-square hashing function #1853 (lukaszcz)
- Use APE mechanism to format Function expressions #1852 (paulcadman)
- Preserve single wildcards pretty printing function parameters #1851 (paulcadman)
- Add type annotation to case expression #1849 (janmasrovira)
- Remove module parameters #1848 (janmasrovira)
- Allow shadowing local variables with let function definitions #1847 (janmasrovira)
- Add lambda type info #1845 (janmasrovira)
- Improve comma formatting #1842 (janmasrovira)
- Improve formatter #1840 (janmasrovira)
- Respect lambda Ascii/Unicode #1838 (janmasrovira)
- Fix
juvix init
#1835 (janmasrovira) - The formatter respects the ascii function arrow #1834 (janmasrovira)
- Add
dev core from-concrete
command #1833 (janmasrovira) - Give proper errors for incorrect application of lazy builtins #1830 (lukaszcz)
- Documentation: update language reference #1829 (lukaszcz)
- Add compilation of complex pattern matching to case #1824 (paulcadman)
- Apply CI ghcup workaround to docs build #1823 (paulcadman)
- Update the Juvix tutorial for 0.3 #1822 (lukaszcz)
- Workaround ghcup issue on CI runner #1821 (paulcadman)
- Respect the
juvix dev highlight --format
flag when outputting errors #1820 (janmasrovira) - Comments about the usage of the JuvixCore recursors #1818 (lukaszcz)
- Emacs mode and VSCode extension tutorials #1815 (lukaszcz)
- Documentation: how to compile Juvix programs #1813 (lukaszcz)
- Make '>>' lazy #1812 (lukaszcz)
- Output proper GEB Lisp programs #1810 (lukaszcz)
- Remove the usage annotation syntax #1805 (lukaszcz)
- Mid-square hashing implemented in JuvixCore #1804 (lukaszcz)
- Autocompletion for
dev core compilation --target
#1803 (janmasrovira) - Special syntax for case #1800 (janmasrovira)
- Adapt benchmarks to the new pipeline #1795 (lukaszcz)
- Support letrec lifting without lambda lifting #1794 (janmasrovira)
- Use the reader effect #1791 (janmasrovira)
- Remove braces from let expressions #1790 (janmasrovira)
- Translate as-pattern binders to Core PatternBinders #1789 (paulcadman)
- Fix termination with as-patterns #1787 (janmasrovira)
- Allow type signatures to have a body #1785 (janmasrovira)
- Track builtins in the Core InfoTable #1782 (paulcadman)
- Pipes for lambda clauses #1781 (janmasrovira)
- Support integers in the GEB backend #1778 (lukaszcz)
- Add builtin nat and bool types as start nodes in reachability analysis #1775 (paulcadman)
- Update pre-commit #1772 (jonaprieto)
- Parse JuvixCore with absolute paths #1770 (paulcadman)
- Use absolute path in Core Evaluator to generate source file location #1769 (paulcadman)
- Install wasmer binary from Github releases #1765 (jonaprieto)
- Run the new Juvix formatter for all the Juvix examples #1764 (jonaprieto)
- Fix let expressions in the repl #1763 (janmasrovira)
- Improve arity inference for repl expressions #1762 (janmasrovira)
- Fix broken links and other improvements #1761 (jonaprieto)
- Translate Nat builtins to the correct Core Ops #1760 (paulcadman)
- Remove hlint from the CI and pre-commit config #1759 (jonaprieto)
- Fix demo example build #1757 (paulcadman)
- Basic Geb integration #1748 (lukaszcz)
- Fix macOS CI build #1747 (paulcadman)
- Adapt Juvix programs to the new pipeline #1746 (lukaszcz)
- Fix link in README for the new docs #1745 (lukaszcz)
- Move juvix-mode to a separate repository #1744 (jonaprieto)
- Print comments when pretty printing concrete syntax #1737 (janmasrovira)
- Demo #1736 (lukaszcz)
- Update CI to install Smoke, Github actions, and Makefile fixes #1735 (jonaprieto)
- Update stack.yaml #1734 (jonaprieto)
- Fix Nat builtins #1733 (lukaszcz)
- Script to count LOC #1732 (lukaszcz)
- Give a proper type to literal Strings #1730 (paulcadman)
- Do not filter implicit args in internal to core translation #1728 (paulcadman)
- Fix de Brujin indexing of lambda arguments #1727 (paulcadman)
- Fix inference loop #1726 (janmasrovira)
- Remove wildcard patterns from Internal #1724 (janmasrovira)
- Restructure the documentation and add a tutorial #1718 (lukaszcz)
- Improve error message for confusing ':=' with '=' #1715 (lukaszcz)
- Fix #1704 #1711 (janmasrovira)
- Fix #1693 #1708 (janmasrovira)
- Tests for the new compilation pipeline #1703 (lukaszcz)
- Add printString and printBool support to legacy C backend #1698 (paulcadman)
- Add –show-de-bruijn option to
juvix repl
#1694 (lukaszcz) - Allow 'terminating' keyword with builtins #1688 (lukaszcz)
- Remove unicode cons symbol #1687 (lukaszcz)
- Change syntax for ind. data types and forbid the empty data type #1684 (jonaprieto)
- Convert Nat literals to Core integers #1681 (lukaszcz)
- Less verbose output from running
make check
#1675 (jonaprieto) - Remove where syntax #1674 (jonaprieto)
- Benchmarks #1673 (janmasrovira)
- JuvixCore to JuvixAsm translation #1665 (lukaszcz)
v0.2.9 (2023-01-18)
Implemented enhancements:
- Refactor
html
command with extra options #1725 (jonaprieto) - Add initial setup for codespaces #1713 (jonaprieto)
- Typecheck let expressions #1712 (janmasrovira)
- Use Smoke instead of shelltestrunner #1710 (jonaprieto)
- Replace –output-dir flag by –internal-build-dir #1707 (jonaprieto)
- Compiler output #1705 (jonaprieto)
- Allow optional pipe before the first constructor for inductive type declarations #1699 (jonaprieto)
- Nat builtins #1686 (lukaszcz)
Merged pull requests:
- Demo #1736 (lukaszcz)
- Update stack.yaml #1734 (jonaprieto)
- Fix Nat builtins #1733 (lukaszcz)
- Script to count LOC #1732 (lukaszcz)
- Give a proper type to literal Strings #1730 (paulcadman)
- Do not filter implicit args in internal to core translation #1728 (paulcadman)
- Fix de Brujin indexing of lambda arguments #1727 (paulcadman)
- Fix inference loop #1726 (janmasrovira)
- Remove wildcard patterns from Internal #1724 (janmasrovira)
- Restructure the documentation and add a tutorial #1718 (lukaszcz)
- Improve error message for confusing ':=' with '=' #1715 (lukaszcz)
- Fix #1704 #1711 (janmasrovira)
- Fix #1693 #1708 (janmasrovira)
- Tests for the new compilation pipeline #1703 (lukaszcz)
- Add printString and printBool support to legacy C backend #1698 (paulcadman)
- Add –show-de-bruijn option to
juvix repl
#1694 (lukaszcz) - Allow 'terminating' keyword with builtins #1688 (lukaszcz)
- Remove unicode cons symbol #1687 (lukaszcz)
- Change syntax for ind. data types and forbid the empty data type #1684 (jonaprieto)
- Convert Nat literals to Core integers #1681 (lukaszcz)
- Less verbose output from running
make check
#1675 (jonaprieto) - Remove where syntax #1674 (jonaprieto)
- Benchmarks #1673 (janmasrovira)
- JuvixCore to JuvixAsm translation #1665 (lukaszcz)
v0.2.8 (2022-12-20)
Implemented enhancements:
- Support basic dependencies #1622 (janmasrovira)
Merged pull requests:
- Refactor hie.yaml and add entry in the readme #1672 (janmasrovira)
- Fix inline monospace formatted text in README #1671 (paulcadman)
- Pin mdbook to version 0.4.22 in docs build #1670 (paulcadman)
- Add option to specify Core transformations to
dev internal core-eval
#1669 (paulcadman) - Revert "Ignore binaries generated by running some tests" #1668 (jonaprieto)
- Add configuration files so the project can be built with cabal #1667 (paulcadman)
- Add documentation for compiling/running the TicTacToe example #1664 (paulcadman)
- Ignore binaries generated by running some tests #1663 (jonaprieto)
- Conversion of Nat representation to JuvixCore integers #1661 (lukaszcz)
- Move applications inside Lets and Cases #1659 (lukaszcz)
- Run shelltests on macOS build #1658 (paulcadman)
- Restore macOS CI build/test #1657 (paulcadman)
- Remove type arguments and type abstractions from Nodes #1655 (lukaszcz)
- Pretty printing of JuvixAsm code #1650 (lukaszcz)
- Remove NameId from Core #1649 (lukaszcz)
- Translation from JuvixAsm to C #1619 (lukaszcz)
v0.2.7 (2022-12-05)
Implemented enhancements:
- Add juvix-repl-mode for emacs #1612 (paulcadman)
- Make lambda lifting correct when free variables occur in the types of binders #1609 (janmasrovira)
Merged pull requests:
- Files pure refactor #1652 (janmasrovira)
- Use the same stack version in all CI jobs and remove
stack setup
step #1651 (paulcadman) - Fix 'not a primitive type' error message #1648 (lukaszcz)
- Upgrade stack snapshot to use ghc-9.2.5 #1621 (janmasrovira)
- Add an emacs function to restart the REPL #1618 (paulcadman)
- Add types to Core functions and constructors when translating from Internal #1617 (paulcadman)
- Auto complete argument of 'dev core read -t' #1616 (janmasrovira)
- Compute new entrypoint root when loading a file in the REPL #1615 (paulcadman)
- Compute maximum runtime stack height in JuvixReg #1613 (lukaszcz)
- Remove shelltest threading #1611 (paulcadman)
- Use StackInfo and recurseS in the JuvixAsm to JuvixReg translation. #1610 (lukaszcz)
- Precompute maximum heap allocation #1608 (lukaszcz)
- Improvements to Juvix REPL #1607 (paulcadman)
- Fix discrepancy between Juvix and WASM pages #1605 (lukaszcz)
- Compute JuvixAsm stack usage info #1604 (lukaszcz)
- Improve As-Pattern parsing #1603 (ii8)
- Juvix core recursors should descend into nodes stored in infos #1600 (janmasrovira)
- Add docs for installing the linux binary #1599 (paulcadman)
- Binder refactor #1598 (janmasrovira)
- Juvix C runtime #1580 (lukaszcz)
- As-patterns #1576 (ii8)
- Eta expansion at the top of each core function definition (#1481) #1571 (janmasrovira)
- Add translation from Internal to Core #1567 (paulcadman)
v0.2.6 (2022-10-26)
Implemented enhancements:
- Support go to definition for the standard library #1592 (paulcadman)
- Add builtin if #1585 (paulcadman)
- Add builtin boolean #1582 (paulcadman)
- Add lambda expressions to internal and add typechecking support #1538 (janmasrovira)
Fixed bugs:
- Fix arity checker bug #1546 (janmasrovira)
- Look in patterns when building the dependency graph #1536 (janmasrovira)
Merged pull requests:
- Update language reference to match current state of Juvix #1594 (paulcadman)
- Fix letrec printing #1591 (janmasrovira)
- Update stdlib submodule with builtin changes #1589 (paulcadman)
- Rename builtin natural to nat and boolean to bool #1588 (paulcadman)
- Improve the test for eta-expansion of constructors and builtins #1583 (lukaszcz)
- Properly newline expressions in the pretty printer #1581 (janmasrovira)
- Letrec lifting #1579 (janmasrovira)
- Add softlines between applications and hang definitions #1578 (janmasrovira)
- Parse optional type info in JVC files #1575 (lukaszcz)
- Fix symbol numbering bug #1574 (lukaszcz)
- 1569 rewrite the test for lambda lifting to use evaluation #1572 (janmasrovira)
- Remove lambda from reservedSymbols #1568 (lukaszcz)
- Keywords refactor #1566 (janmasrovira)
- remove ≔ from the language and replace it by := #1563 (janmasrovira)
- JuvixReg #1551 (lukaszcz)
- Remove duplicate function in concrete analysis #1550 (ii8)
- Evaluator minor style refactor #1547 (janmasrovira)
- Properly handle top lambdas in the termination checker #1544 (janmasrovira)
- Mutual inference #1543 (janmasrovira)
- Autocomplete ".jvc" input files for core {eval, read} commands #1542 (paulcadman)
- Add –show-de-bruijn to
core eval
command #1540 (paulcadman) - Inductive types should depend on the types of their constructors #1537 (lukaszcz)
- Parser labels #1535 (janmasrovira)
- JuvixAsm #1432 (lukaszcz)
v0.2.5 (2022-09-14)
Fixed bugs:
- Properly type check patterns that need normalization #1472 (janmasrovira)
- Detect nested patterns as smaller in the termination checker #1524
- Fix developBeta in Core/Extra.hs #1487 (lukaszcz)
- Core/Extra/Recursors/Collector bugfix #1510 (lukaszcz)
Merged pull requests:
- Replace -> by := in lambda syntax #1533 (janmasrovira)
- 'Match' with complex patterns in Core #1530 (lukaszcz)
- Refactor CLI #1527 (janmasrovira)
- Add CanonicalProjection #1526 (janmasrovira)
- Make comma a delimiter #1525 (lukaszcz)
- Detect nested patterns as smaller in the termination checker #1524 (janmasrovira)
- Disallow tab characters as spaces #1523 (janmasrovira)
- Refactor
destruct
in Core/Extra/Base #1522 (lukaszcz) - JuvixCore primitive types #1521 (lukaszcz)
- Enable autocompletion for the –theme flag #1519 (janmasrovira)
- Stripped version of Core Node datatype #1518 (lukaszcz)
- Add
internal core read
command #1517 (janmasrovira) - Implement some instances for BinderList #1515 (janmasrovira)
- Back recursor types with type families #1514 (janmasrovira)
- Eager evaluation of Constr arguments #1513 (lukaszcz)
- Dynamic type in Core #1508 (lukaszcz)
- LetRec in Core #1507 (lukaszcz)
- Add Haddock and Agda licenses #1506 (janmasrovira)
- Fix docs webapp examples CI build #1505 (paulcadman)
- Add CLI usage examples doc and integrate with README #1504 (paulcadman)
- Refactor BinderInfo #1503 (lukaszcz)
- Make
juvix compile
default to native target #1502 (paulcadman) - Refactor Node datatype #1501 (lukaszcz)
- Clean up import list in Pipeline #1499 (jonaprieto)
- Remove mono #1497 (jonaprieto)
- Remove Haskell support #1496 (jonaprieto)
- Implement lambda lifting #1494 (janmasrovira)
- Document Emacs installation and the 'exec-path' problem #1493 (lukaszcz)
- Add –allow-different-user to workflow stack command #1492 (paulcadman)
- Stack with github actions permissions workaround #1490 (paulcadman)
- Restructure recursors and add some lens interfaces #1489 (janmasrovira)
- Add a github action to build a static linux binary #1488 (paulcadman)
- Fix developBeta in Core/Extra.hs #1487 (lukaszcz)
- Add an option to show name ids in errors #1486 (lukaszcz)
v0.2.4 (2022-08-19)
(Special version for Heliax's retreat in Italy)
Implemented enhancements:
- Add –stdin flag #1459 (janmasrovira)
Fixed bugs:
- Fix typechecker #1458 (janmasrovira)
Merged pull requests:
- use –stdin in flycheck mode #1460 (janmasrovira)
- Add a native compile target for demos #1457 (paulcadman)
- Small changes for the presentation #1456 (jonaprieto)
- Fixes TicTacToe Web example #1454 (paulcadman)
- Upgrade to ghc-9.2.4 #1451 (janmasrovira)
v0.2.3 (2022-08-15)
Implemented enhancements:
- add
name
andversion
tojuvix.yaml
#1422 (janmasrovira)
Fixed bugs:
- Properly handle paragraphs in judoc #1447 (janmasrovira)
Merged pull requests:
- Give a proper type to literal natural numbers #1453 (janmasrovira)
- Add the option to output json in the
juvix internal highlight
command #1450 (janmasrovira) for supporting the new Juvix Mode for Visual Studio Code (jonaprieto) - Allow _ in Wasm exported names to support Anoma signature #1449 (paulcadman)
- Add Towers of Hanoi and Pascal triangle examples #1446 (paulcadman)
- Add
juvix init
command #1445 (janmasrovira) - Refactor pretty to reduce duplication #1443 (janmasrovira)
- Add initial support for examples in Html documentation #1442 (janmasrovira)
- Add revisions to README #1440 (jonaprieto)
- CI: Run build on push to main #1437 (paulcadman)
- Add doctor subcommand #1436 (paulcadman)
- CI checkout repo before cache and use recommended cache strategy #1435 (paulcadman)
- Various documentation adjustments #1434 (paulcadman)
- Setup Clang before building docs in CI #1433 (paulcadman)
- Major revisions to Makefile #1431 (jonaprieto)
- Do not add
-src
suffix to links in HTML when runningjuvix html
#1429 (paulcadman) - Add a Web version of TicTacToe #1427 (paulcadman)
- WASM import all non-compile axioms with alphanum names in entrypoint #1426 (paulcadman)
- Export all functions with alpha numeric names from entrypoint module #1425 (paulcadman)
- Refactor #1420 (jonaprieto)
- Permit axiom without a compile block #1418 (paulcadman)
- Implement an html documentation generator similar to haddock (#1413) #1416 (janmasrovira)
- Fix version shell test for 0.2.2 #1415 (paulcadman)
- Remove Int from stdlib and update SimpleFungibleToken example #1414 (paulcadman)
v0.2.2 (2022-07-25)
Implemented enhancements:
- Compute name dependency graph and filter unreachable definitions #1408 (lukaszcz)
- Support type aliases #1404 (janmasrovira)
- Add debugging custom function to Prelude #1401 (jonaprieto)
- Add positivity check for data types #1393 (jonaprieto)
- Keep qualified names #1392 (janmasrovira)
- Direct translation from MicroJuvix to MiniC #1386 (lukaszcz)
- Widens the accepted symbol list #1385 (mariari)
- Check all the type parameter names are different when declaring an inductive type #1377 (jonaprieto)
Fixed bugs:
- Curly braces are allowed nested in patterns #1380 (janmasrovira)
Merged pull requests:
- Add
Fail
effect (#1409) #1411 (janmasrovira) - Refactor of typechecking and other checking processes #1410 (jonaprieto)
- Use bold for code in scoper error messages #1403 (janmasrovira)
- Replace ppSimple by text #1402 (jonaprieto)
- Implement some error messages (#1396) #1400 (lukaszcz)
- Refactor childs of pattern parentheses and braces #1398 (janmasrovira)
- Update Juvix standard-library #1389 (jonaprieto)
- Fix documentation generation #1387 (jonaprieto)
- Adds Collatz sequence generator example #1384 (paulcadman)
- html-examples #1381 (jonaprieto)
- Refine hole in type signature to function type #1379 (janmasrovira)
- Type checking fails when the type of a pattern is not given by the signature #1378 (janmasrovira)
- Set cname for gh-pages action #1376 (paulcadman)
- Add fibonacci sequence example program #1375 (paulcadman)
- Fix Changelog links and minors #1371 (jonaprieto)
- Add Version number to the emacs mode #1320 (mariari)
New name: Juvix
Since version 0.2.2, the project has been renamed from "Mini Juvix" to "Juvix". The new name reflects the fact that the project is no longer just a compiler for a subset of Juvix, but a full implementation of the language. Affected by this change are:
- Github repository moved from the Heliax organization to the Anoma organization. "anoma/juvix" is the new repository name.
- All references to "Mini Juvix" have been replaced with "Juvix". Unfortunetly,
due to the move, the old links to the Mini Juvix repository are broken and will not be fixed.
v0.2.1 (2022-07-12)
Implemented enhancements:
- Specialize commands of/for internal use MiniJuvix-#270 (jonaprieto)
- Improve handling of location information for different objs MiniJuvix-#263 (jonaprieto)
- Add issues and PR templates MiniJuvix-#261 (jonaprieto)
- Throw error when reading a file that conflicts with embedded stdlib MiniJuvix-#243 (paulcadman)
- Embed standard library in the minijuvix binary MiniJuvix-#210 (paulcadman)
Fixed bugs:
- Fixed a bug with the path to walloc.c MiniJuvix-#237 (lukaszcz)
- Perform ScopedToAbstract exactly once for each module MiniJuvix-#223 (paulcadman)
Merged pull requests:
- Label renaming MiniJuvix-#275 (jonaprieto)
- Update link to discord MiniJuvix-#264 (Romainua)
- Include
open import
statements when generating HTML MiniJuvix-#260 (paulcadman) - Renaming MiniJuvix to Juvix MiniJuvix-#259 (jonaprieto)
- Updates tests to use the updated standard library MiniJuvix-#253 (paulcadman)
- Enforce C99 standard in the generated C files MiniJuvix-#252 (lukaszcz)
- Restore mascot images to the minijuvix book MiniJuvix-#250 (paulcadman)
- Allow jumping to another module in emacs MiniJuvix-#249 (janmasrovira)
- Restore Juvix mascot image to README MiniJuvix-#248 (paulcadman)
- Add emacs option
minijuvix-disable-embedded-stdlib
MiniJuvix-#247 (paulcadman) - Deprecate GHC backend MiniJuvix-#244 (lukaszcz)
- Removed 'eval' and 'print' keywords (#214) MiniJuvix-#242 (lukaszcz)
- Add option to disable minijuvix input method MiniJuvix-#239 (janmasrovira)
- Remove the 'match' keyword MiniJuvix-#238 (lukaszcz)
- Removed tests/positive/HelloWorld.mjuvix and specified clang version in the documentation MiniJuvix-#236 (lukaszcz)
- Filter symbol entries properly in the scoper MiniJuvix-#234 (janmasrovira)
- Use the ModulesCache for
open
statements in ScopedToAbstract pass MiniJuvix-#224 (paulcadman) - README: Include
--recursive
in git clone command to fetch stdlib MiniJuvix-#211 (paulcadman) - Update project description v0.2.0 MiniJuvix-#209 (jonaprieto)
- Unify AST representation of types and expressions in MicroJuvix MiniJuvix-#188 (janmasrovira)
v0.2.0 (2022-06-28)
Implemented enhancements:
- Support built in types MiniJuvix-#192 (janmasrovira)
- Support partial application and closure passing in C backend MiniJuvix-#190 (paulcadman)
- Allow
open import
statements MiniJuvix-#175 (janmasrovira) - Remove TypeAny and adapt typechecking for literals MiniJuvix-#173 (janmasrovira)
- Allow holes to be refined into function types MiniJuvix-#165 (janmasrovira)
- Support implicit arguments MiniJuvix-#144 (janmasrovira)
- Add support for holes in type signatures MiniJuvix-#141 (janmasrovira)
- Support function closures with no environment in minic MiniJuvix-#137 (paulcadman)
- Add holes for expressions in function clauses and inference support MiniJuvix-#136 (janmasrovira)
- Add "-Oz" optimization flag to clang args MiniJuvix-#133 (paulcadman)
- Add version and help option and root command to the CLI MiniJuvix-#131 (jonaprieto)
Fixed bugs:
- Fix: Ignore implicit patterns and arguments in termination checking MiniJuvix-#172 (janmasrovira)
- Fix: pretty printing for terminating keyword MiniJuvix-#145 (jonaprieto)
Merged pull requests:
- Fix: proper error handling for typechecker errors MiniJuvix-#189 (jonaprieto)
- Add juvix version info and date to HTML output MiniJuvix-#186 (jonaprieto)
- Fix: Add check for constructor return types MiniJuvix-#182 (jonaprieto)
- Use Abstract name in Abstract syntax and Micro/MonoJuvix MiniJuvix-#181 (janmasrovira)
- Add an option to specify the path where to put the HTML output MiniJuvix-#179 (jonaprieto)
- Upgrade to ghc-9.2.3 MiniJuvix-#178 (janmasrovira)
- Replace dead link in README with a link to the Juvix book MiniJuvix-#177 (paulcadman)
- Embed HTML assets in the juvix binary MiniJuvix-#176 (paulcadman)
- Fix: identifiers with a keyword prefix cannot be parsed MiniJuvix-#171 (janmasrovira)
- Improve filepath equality MiniJuvix-#170 (janmasrovira)
- Update validity predicate milestone example to 0.2 syntax MiniJuvix-#167 (paulcadman)
- Fix links in documentation and update to new syntax MiniJuvix-#163 (paulcadman)
- Update stdlib to work with version 0.2 MiniJuvix-#160 (janmasrovira)
- Update README usage example to use the compile command MiniJuvix-#158 (paulcadman)
- Remove dead code related to the pipeline MiniJuvix-#156 (janmasrovira)
- Add negative test for AppLeftImplicit MiniJuvix-#154 (janmasrovira)
- Add positive test designed for implicit arguments MiniJuvix-#153 (janmasrovira)
- Remove ExpressionTyped from MicroJuvix MiniJuvix-#143 (janmasrovira)
- Revision for package.yaml and minor deletions MiniJuvix-#135 (jonaprieto)
v0.1.4 (2022-05-30)
Merged pull requests:
- Generic Errors and refactoring MiniJuvix-#123 (jonaprieto)
- Only generates docs if the pull request merges MiniJuvix-#121 (jonaprieto)
- Add initial docs generation website MiniJuvix-#119 (jonaprieto)
- Fix internal link in README MiniJuvix-#116 (paulcadman)
- Add minic-runtime for linking without libc MiniJuvix-#113 (paulcadman)
- Add termination checking to the pipeline MiniJuvix-#111 (jonaprieto)
- Support uncurried higher order functions MiniJuvix-#110 (paulcadman)
- Improve error generation and handling MiniJuvix-#108 (janmasrovira)
- Add MiniC tests with clang+wasi-sdk MiniJuvix-#105 (paulcadman)
- Add usage example and move developer docs MiniJuvix-#96 (paulcadman)
- Refactor warning related stuff MiniJuvix-#91 (janmasrovira)
- Remove Agda backend MiniJuvix-#86 (paulcadman)
Implemented enhancements:
- Add
compile
subcommand to generate binaries MiniJuvix-#128 - Add intervals to flycheck errors MiniJuvix-#124
- Improve error handling in juvix-mode MiniJuvix-#107
- Support multiple modules in compilation MiniJuvix-#93
- Add compile command to CLI MiniJuvix-#130 (paulcadman)
- Use Interval in GenericErrors MiniJuvix-#125 (janmasrovira)
- Remove dev in the CI and other tweaks MiniJuvix-#118 (jonaprieto)
- Highlight comments correctly MiniJuvix-#106 (janmasrovira)
- Support multiple modules in compilation MiniJuvix-#100 (janmasrovira)
- New target syntax and modular VP examples MiniJuvix-#92 (jonaprieto)
Fixed bugs:
- Missing error messages when using throw/error MiniJuvix-#117
- Fix highlight of comments MiniJuvix-#104
- Fix juvix-mode coloring for projects with multiple modules MiniJuvix-#101
- Fix
highlight
command for modules with import statements MiniJuvix-#102 (janmasrovira)
Closed issues:
- Deprecate the class JuvixError MiniJuvix-#115
- Add ToGenericError instance for the infix parsing errors MiniJuvix-#114
- Compile to WASM without linking libc MiniJuvix-#112
- Add the termination checker to the pipeline MiniJuvix-#109
- Use clang + wasi-sdk instead of emcc to compile to WASM MiniJuvix-#103
- Move developer tooling docs out of README MiniJuvix-#95
- Add pre-commit checks to CI checks MiniJuvix-#94
- Support higher order functions in C backend MiniJuvix-#90
- Remove dev from the list of branches in the CI MiniJuvix-#89
- Refactor warning related stuff MiniJuvix-#87
- The Juvix website MiniJuvix-#51
v0.1.3 (2022-05-05)
Closed issues:
- Monomorphisation naming inconsistency MiniJuvix-#84
- Remove BackendAgda MiniJuvix-#83
- Change terminating keyword behavior MiniJuvix-#81
- MonoJuvix
ExpressionTyped
is never used MiniJuvix-#79 - Bump stackage nightly and delete
allow-newer: true
fromstack.yaml
MiniJuvix-#75 - Generate automatically CHANGELOG and Github Release Notes MiniJuvix-#73
- Make flag –show-name-ids global MiniJuvix-#61
- Add C code generation backend MiniJuvix-#60
- Add polymorphism MiniJuvix-#59
- Add the compile keyword to the frontend syntax (support up to Scoping) MiniJuvix-#58
- Error with undefined or underscores MiniJuvix-#54
- Add support for other GHC and Stack stable version MiniJuvix-#52
- Autodetect output ANSI support when prettyprinting MiniJuvix-#38
- Terminating for type signatures MiniJuvix-#11
Merged pull requests:
- Remove agda backend MiniJuvix-#86 (paulcadman)
- 84 monomorphisation naming inconsistency MiniJuvix-#85 (janmasrovira)
- Change terminating keyword behavior MiniJuvix-#82 (jonaprieto)
- Remove unused constructor ExpressionTyped in Monojuvix MiniJuvix-#80 (janmasrovira)
- Stricter stack builds and pedantic mode for CI MiniJuvix-#78 (jonaprieto)
- Bump stackage version and remove allow-newer MiniJuvix-#76 (janmasrovira)
- Add automatically updates/issues/merged PRs to the changelog MiniJuvix-#74 (jonaprieto)
- Add terminating keyword MiniJuvix-#71 (jonaprieto)
- Monomorphization MiniJuvix-#70 (janmasrovira)
- Remove StatementCompile in AST after scoping MiniJuvix-#69 (paulcadman)
- Add C code generation backend MiniJuvix-#68 (paulcadman)
- Check if stderr supports ANSI and print accordingly MiniJuvix-#67 (janmasrovira)
- Add support for compile (by Jonathan) MiniJuvix-#66 (paulcadman)
- Add NameIdGen effect to the pipeline MiniJuvix-#64 (janmasrovira)
- Make the
--show-name-ids
flag global MiniJuvix-#63 (janmasrovira) - Implement type checker with polymorphism MiniJuvix-#62 (janmasrovira)
v0.1.2 (2022-04-11)
Closed issues:
- Add en emacs mode with support for scoped highlighting MiniJuvix-#25
- Add support for project root detection through a juvix.yaml file MiniJuvix-#24
- Add CLI cmd to generate juvix autocompletion files for fish and zsh MiniJuvix-#23
- Add pretty and typecheck subcommands to the microjuvix CLI MiniJuvix-#21
- Translate identifiers from MicroJuvix to MiniHaskell (valid Haskell) MiniJuvix-#19
- Implement the MiniHaskell to Haskell translation (prettyprinter) MiniJuvix-#18
- Implementation of a typechecker for MicroJuvix MiniJuvix-#16
- Add references to the Abstract AST to update compilation to MiniHaskell MiniJuvix-#12
- Order in the house MiniJuvix-#10
Merged pull requests:
- The Juvix project now follows the same goals as the original Juvix project. MiniJuvix-#7 (jonaprieto)
- Dev→main MiniJuvix-#6 (jonaprieto)
- Big update including termination checking MiniJuvix-#5 (janmasrovira)
- Parser and scoper MiniJuvix-#3 (jonaprieto)
- Upgrade to ghc9 and use hpack MiniJuvix-#2 (janmasrovira)
- Merge MiniJuvix-#1 (jonaprieto)
v0.1.1 (2022-03-25)
- Add support in the parser/scoper for Axiom backends
- Add support for
foreign
keyword - Add flag
--no-colors
for the scope command - Upgrade to GHC 9.2.2
- Improve resolution of local symbols in the scoper
- Several new tests related to ambiguous symbols
- Add
--version
flag - Add InfoTableBuilder effect for the scoper
Closed issues:
- Add diff output to the test suite MiniJuvix-#9
- Improve scoper ambiguity error messages MiniJuvix-#8