1
1
mirror of https://github.com/anoma/juvix.git synced 2024-12-13 19:49:20 +03:00
Juvix empowers developers to write code in a high-level, functional language, compile it to gas-efficient output VM instructions, and formally verify the safety of their contracts prior to deployment and execution.
Go to file
Jan Mas Rovira a05586e44f
Interleave arity and typechecking (#2481)
- Closes #2362 

This pr implements a new typechecking algorithm. This algorithm can be
activated using the global flag `--new-typechecker`. This flag will only
take effect on the compilation pipeline but not the repl.

The main difference between the new and old algorithm is that the new
one inserts holes during typechecking. Thus, it does not require the
arity checker pass.

The new algorithm does not yet implement default arguments. The plan is
to make the change in the following steps:
1. Merge this pr.
2. Merge #2506.
3. Implement default arguments for the new algorithm.
4. Remove the arity checker and the old algorithm.

---------

Co-authored-by: Łukasz Czajka <62751+lukaszcz@users.noreply.github.com>
2023-11-12 16:23:33 +01:00
.devcontainer Update pre-commit to check JSON formatting (#2400) 2023-09-28 14:55:35 +02:00
.github Cache .hie directory in CI (#2490) 2023-11-01 14:15:53 +01:00
app Interleave arity and typechecking (#2481) 2023-11-12 16:23:33 +01:00
assets Remove unused files (#2398) 2023-09-28 14:20:19 +02:00
bench Fix benchmark wasmer command (#2268) 2023-08-03 13:44:36 +01:00
examples Migrate all Juvix projects from juvix.yaml to Package.juvix in the repository (#2503) 2023-11-07 18:11:02 +00:00
gnuplot Automatized benchmarks (#1673) 2023-01-05 17:48:26 +01:00
include/package/PackageDescription Version the PackageDescription module (#2478) 2023-10-30 11:33:36 +00:00
juvix-stdlib@708d920c6e Literal casting (#2457) 2023-11-03 10:01:03 +01:00
licenses Remove unused files (#2398) 2023-09-28 14:20:19 +02:00
runtime Update clang formatting (#2465) 2023-10-23 19:12:56 +02:00
src/Juvix Interleave arity and typechecking (#2481) 2023-11-12 16:23:33 +01:00
test Interleave arity and typechecking (#2481) 2023-11-12 16:23:33 +01:00
tests Add support for Literate Juvix Markdown (#2448) 2023-11-10 13:55:36 +01:00
.clang-format Juvix C runtime (#1580) 2022-11-03 09:38:09 +01:00
.github_changelog_generator Update Changelog v0.2.3 🎉 2022-08-15 12:24:42 +02:00
.gitignore Add support for Literate Juvix Markdown (#2448) 2023-11-10 13:55:36 +01:00
.gitmodules Rename MiniJuvix to Juvix (#259) 2022-07-08 13:59:45 +02:00
.hlint.yaml Add default arguments (#2408) 2023-10-10 23:28:06 +02:00
.pre-commit-config.yaml Update clang formatting (#2465) 2023-10-23 19:12:56 +02:00
cabal.hie.yaml Automatized benchmarks (#1673) 2023-01-05 17:48:26 +01:00
cabal.project Update stackage resolver to LTS 21.6 (#2275) 2023-08-11 11:49:33 +02:00
cabal.project.freeze Update stackage resolver to LTS 21.6 (#2275) 2023-08-11 11:49:33 +02:00
CHANGELOG.md Bump version to 0.5.3 (#2492) 2023-11-01 16:18:33 +00:00
cntlines.sh Minor refactor and script update (#2261) 2023-07-27 17:57:20 +02:00
CONTRIBUTING.md Fix baseUrl for juvix docs in Doctor command (#2122) 2023-05-24 12:14:30 +02:00
LICENSE.md Add new README and md files (#1904) 2023-03-21 20:01:48 +01:00
Makefile test: Run juvix format on juvix packages rather than files (#2505) 2023-11-08 15:54:35 +00:00
migrate-juvix-yaml.sh Migrate all Juvix projects from juvix.yaml to Package.juvix in the repository (#2503) 2023-11-07 18:11:02 +00:00
package.yaml Add support for Literate Juvix Markdown (#2448) 2023-11-10 13:55:36 +01:00
README.md Fix tara url svg (#2406) 2023-09-28 19:05:05 +02:00
stack.hie.yaml Refactor hie.yaml and add entry in the readme (#1672) 2022-12-20 16:45:48 +01:00
stack.yaml Update stackage resolver to LTS 21.6 (#2275) 2023-08-11 11:49:33 +02:00

Juvix

Tara the Juvix mascot

CI Status

The Juvix compiler CI

Nightly build, release and benchmark

Codebase
Open the Juvix Standard Lib in Github Codespace

This repository is specifically dedicated to the compiler of the Juvix programming language.

For any Juvix-related inquiries, we strongly advise visiting the following resources.

Our documentation offers an in-depth understanding of the Juvix programming language. It encompasses a language reference, examples, blog posts, and numerous other resources to facilitate effective use of Juvix.