v0.3.1
v0.3.1 (2023-03-31)
This new version comes with several enhancements and bug fixes. A key goal for
this release was to rigorously test the new compiler pipeline, placing special
emphasis on the GEB backend (STLC fragment). To accomplish this, we have
integrated end-to-end tests, an unroll mechanism for recursive function calls,
and implemented changes to the Juvix GEB IR.
Now, users can now seamlessly write Juvix code, compile it to GEB, and execute
it using the built-in GEB evaluator or its REPL. Give it a try and feel free to
report any bugs you encounter to help us improve!
On the tooling side, we have added a new command to the Juvix CLI, juvix format,
so forget about the hassle of manually formatting your code, yey!
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)