This PR prepares the 0.4.1 release. * Bump version in package.yaml * Update version smoke test * Updates CHANGELOG NB: The links in the changelog will not work until we create the release tag.
89 KiB
Changelog
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