* upgrade to ghc-9.2.3
* [ci] build with ghc 9.2.3
* Remove the gcc alises added by LLVM install
The GHC installer (initiated by stack in the test step) requires access
to GCC because it uses the GCC specific `--gc-sections` linker flag.
We remove the gcc -> clang symlink, our tests use the clang binary
directly and so do not require the symlink.
* Run GCC PATH fixup step on macOS only
* Fixes YAML quote marks
* Install GHC via stack setup before installing LLVM
Having both macOS LLVM and stock LLVM on the PATH causes the GHC
installation to fail.
Co-authored-by: Jonathan Cubides <jonathan.cubides@uib.no>
Co-authored-by: Paul Cadman <git@paulcadman.dev>
* Update VP example to new syntax
* Ignore html folders and include assets for html rendering
Co-authored-by: Jonathan Cubides <jonathan.cubides@uib.no>
* [docs] Use minijuvix compile in tutorial
* [doc] Update PolyFungibleToken example in docs
* [docs] Fix links in summary
* [docs] Add a Installing dependencies
* [docs] Link to Installing dependencies docs from the README
* work in progress towards implicit arguments
* Wip towards implicit types
* improve arity checker
* Add version of SimpleFungibleToken with implicit arguments
* guess arity of body before checking the lhs of a clause
* add ArityUnknown and fix some tests
* wip: proper errors in arity checker
* fix bugs, improve errors and add tests
* format
* set hlint version to 3.4 in the ci
* update pre-commit version to 3.0.0
* minor changes
* added more revisions
* minor
Co-authored-by: Jonathan Cubides <jonathan.cubides@uib.no>
* Updates runtime with function calls
* wip function calls
* Remove juvix_function_call macro
* Remove "new_" prefix for constructors and add _field suffix
* Rename test file
* Add example of using constructor as closure
* Test mjuvix function as function closure
* Keep track of emitted closures to avoid duplication
* Use concatMapM from MiniJuvix.Prelude
* Refactoring to split out the closure gen
* Separate passes for function sigs and closures
* Renaming functions generating functionDefs
* Rename juvix_function to minijuvix_function
* Rename DeclJuvixClosure
* Remove typeDefType'
* Remove unnecessary do
* Use Mono.getName
* Extract isNullary
* Use let-in instead of where
* Remove input file fields from command opts
* [cli] Make version and help commands
* Fix on reviews
* Fixes for dealing with global options inside subcmds
* Fix minijuvix emacs mode and add some instance to GlobalOpts
* Remove unrelated code
* Propagate globals opts in each cmd parser
* Add initial shell tests
* Add test-shell to makefile and CI
* Fix CI: adding .local/bin to PATH
* Fixing CI
* Installing shelltest just before running it
* Install app for shell testing
* Hide global flags after cmd. Fix shell tests accordingly.
* Fixing CI
* Shell test only run on ubuntu for now
* [app] Add compile command
The compile command drives the (external) clang compiler to build a WASM
binary from a minijuvix file.
The intermediate C files are stored in .minijuvix-build directory
relative to the directory where the command is executed.
The user can specify which runtime (standalone and libc) to build
against.
The file-embed library is used to embed the runtime files into the
minijuvix binary.
* TemplateHaskell is a default extension
* [app] Add the .minijuvix-build dir in the root of the project
* [app] Derive the default output filename from the inputfile
* [chore] Add .minijuvix-build to .gitignore
* [WIP] EntryPoint now has options. --no-termination is a new global opt.
* Add TerminationChecking to the pipeline
* Add TerminationChecking to the pipeline
* Keep GlobalOptions in App
* Fix reviewer's comments
* delete unnecessary parens
Co-authored-by: Jan Mas Rovira <janmasrovira@gmail.com>
* w.i.p adoption of generic error type
* harmonize
* Remove the use of Error effect for internal bugs
* add location information to expression atom list
* Add GenericError instance for PatternAtoms
* Remove Maybe GenericError occurrences
* [ci] fix draft job's condition
* minor changes
* [stack] macos support ghc-opts
* Fix reviewer's comments
* remove accidentally commited file
* refactor to avoid duplication
* fix
Co-authored-by: Jan Mas Rovira <janmasrovira@gmail.com>
* [minic] Add minic-runtime for linking without libc
The C generated by minic now depends on `minic-runtime.h`. There are two
versions of this, one that depends on libc and one that doesn't (i.e standalone).
The standalone runtime implements the minimal set of functions required for
the tests to compile and run.
The standalone runtime also contains a copy of
https://github.com/wingo/walloc, a small memory allocator that's
indended for use with WASM.
The benefit of using the standalone runtime is that the resulting
binaries are much smaller. For example the Nat example compiles to about
24k WASM binary with libc, the standalone version is 2.8k.
This commit adds a dependency on
https://hackage.haskell.org/package/file-embed for finding the path to
the minic-runtime directory in tests. It does not add any additional
transitive dependencies to the project.
* add face and handling of not in scope symbol error
* small fix
* generic errors wip
* add App effect
* format
* add flycheck-minijuvix
* use absolute paths and refactor
* fix dir0
* add generic error instances and improve some errors
* format
* qualify strings
* use AnsiText
* add ToGenericError instances for the type checker errors
* improve error message
* improve handling of parsing errors
* [minic] Translate TypeFunction to a C function pointer
* [minic] Add define macros for nullary functions
For example in the translation of:
inductive Nat {
zero : Nat;
suc : Nat → Nat;
};
The zero constructor is translated to a nullary C function:
static inline Nat_13_t * new_Zero_14_nullary()
and a macro:
\#define new_Zero_14 (new_Zero_14_nullary())
so that it can be referenced subsequently by the unapplied name
'new_Zero_14'.
A similar translation is applied to nullary top-level functions.
This means that uncurried higher-order functions now work.
* [chore] ormolu and hlint fixes
* [minic] Implement PR review suggestions
* [chore] Fix formatting