mirror of
https://github.com/anoma/juvix.git
synced 2024-08-17 04:01:05 +03:00
* Closes #2392 Changes checklist ----------------- * [X] Abstract out data types for stored module representation (`ModuleInfo` in `Juvix.Compiler.Store.Language`) * [X] Adapt the parser to operate per-module * [X] Adapt the scoper to operate per-module * [X] Adapt the arity checker to operate per-module * [X] Adapt the type checker to operate per-module * [x] Adapt Core transformations to operate per-module * [X] Adapt the pipeline functions in `Juvix.Compiler.Pipeline` * [X] Add `Juvix.Compiler.Pipeline.Driver` which drives the per-module compilation process * [x] Implement module saving / loading in `Pipeline.Driver` * [x] Detect cyclic module dependencies in `Pipeline.Driver` * [x] Cache visited modules in memory in `Pipeline.Driver` to avoid excessive disk operations and repeated hash re-computations * [x] Recompile a module if one of its dependencies needs recompilation and contains functions that are always inlined. * [x] Fix identifier dependencies for mutual block creation in `Internal.fromConcrete` - Fixed by making textually later definitions depend on earlier ones. - Now instances are used for resolution only after the textual point of their definition. - Similarly, type synonyms will be unfolded only after the textual point of their definition. * [x] Fix CLI * [x] Fix REPL * [x] Fix highlighting * [x] Fix HTML generation * [x] Adapt test suite
193 lines
4.2 KiB
YAML
193 lines
4.2 KiB
YAML
name: juvix
|
|
version: 0.5.5
|
|
license: GPL-3.0-only
|
|
license-file: LICENSE.md
|
|
copyright: (c) 2022- Heliax AG.
|
|
maintainer: The Compilers Team at Heliax AG <hello@heliax.dev>
|
|
author:
|
|
[
|
|
Jonathan Prieto-Cubides,
|
|
Jan Mas Rovira,
|
|
Paul Cadman,
|
|
Lukasz Czajka,
|
|
Github's contributors,
|
|
]
|
|
tested-with: ghc == 9.4.5
|
|
homepage: https://juvix.org
|
|
bug-reports: https://github.com/anoma/juvix/issues
|
|
description: The Juvix compiler
|
|
category: Compilers/Interpreters
|
|
github: anoma/juvix
|
|
|
|
flags:
|
|
# This flag can only be used in an environment that contains static libraries
|
|
# for all dependencies, including libc We use this when doing a static build
|
|
# using the ghc-musl alpine container
|
|
static:
|
|
description: Build static executable
|
|
default: false
|
|
manual: true
|
|
|
|
extra-source-files:
|
|
- README.md
|
|
- assets/css/*.css
|
|
- assets/js/*.js
|
|
- assets/images/*.svg
|
|
- juvix-stdlib/**/*.juvix
|
|
- include/package/**/*.juvix
|
|
- include/package-base/**/*.juvix
|
|
- runtime/include/**/*.h
|
|
- runtime/**/*.a
|
|
- runtime/src/vampir/*.pir
|
|
|
|
dependencies:
|
|
- aeson-better-errors == 0.9.*
|
|
- aeson == 2.1.*
|
|
- ansi-terminal == 0.11.*
|
|
- base == 4.17.*
|
|
- base16-bytestring == 1.0.*
|
|
- blaze-html == 0.9.*
|
|
- bytestring == 0.11.*
|
|
- cereal == 0.5.*
|
|
- containers == 0.6.*
|
|
- cryptohash-sha256 == 0.11.*
|
|
- directory == 1.3.*
|
|
- dlist == 1.0.*
|
|
- edit-distance == 0.2.*
|
|
- exceptions == 0.10.*
|
|
- extra == 1.7.*
|
|
- file-embed == 0.0.*
|
|
- filelock == 0.1.*
|
|
- filepath == 1.4.*
|
|
- githash == 0.1.*
|
|
- hashable == 1.4.*
|
|
- language-c == 0.9.*
|
|
- libyaml == 0.1.*
|
|
- megaparsec == 9.3.*
|
|
- commonmark == 0.2.*
|
|
- parsec == 3.1.*
|
|
- microlens-platform == 0.4.*
|
|
- parser-combinators == 1.3.*
|
|
- path == 0.9.*
|
|
- path-io == 1.8.*
|
|
- polysemy == 1.9.*
|
|
- polysemy-plugin == 0.4.*
|
|
- pretty == 1.1.*
|
|
- prettyprinter == 1.7.*
|
|
- prettyprinter-ansi-terminal == 1.1.*
|
|
- process == 1.6.*
|
|
- safe == 0.3.*
|
|
- singletons == 3.0.*
|
|
- singletons-base == 3.1.*
|
|
- singletons-th == 3.1.*
|
|
- Stream == 0.4.*
|
|
- string-interpolate == 0.3.*
|
|
- template-haskell == 2.19.*
|
|
- temporary == 1.3.*
|
|
- text == 2.0.*
|
|
- th-utilities == 0.2.*
|
|
- time == 1.12.*
|
|
- transformers == 0.5.*
|
|
- typed-process == 0.2.*
|
|
- unicode-show == 0.1.*
|
|
- uniplate == 1.6.*
|
|
- unix-compat == 0.7.*
|
|
- unordered-containers == 0.2.*
|
|
- utf8-string == 1.0.*
|
|
- versions == 6.0.*
|
|
- with-utf8 == 1.0.*
|
|
- xdg-basedir == 0.2.*
|
|
- yaml == 0.11.*
|
|
|
|
# the tasty dependencies are here to avoid having to recompile
|
|
# juvix when running the tests.
|
|
- tasty
|
|
- tasty-hunit
|
|
- Diff == 0.4.*
|
|
- pretty-show == 1.10.*
|
|
|
|
# benchmarks
|
|
- criterion == 1.6.*
|
|
- statistics == 0.16.*
|
|
- shake == 0.19.*
|
|
- colour == 2.3.*
|
|
- palette == 0.3.*
|
|
|
|
ghc-options:
|
|
# Warnings
|
|
- -Weverything
|
|
- -Wno-all-missed-specialisations
|
|
- -Wno-missing-export-lists
|
|
- -Wno-missing-import-lists
|
|
- -Wno-missing-kind-signatures
|
|
- -Wno-missing-safe-haskell-mode
|
|
- -Wno-safe
|
|
- -Wno-unsafe
|
|
- -Wno-unused-packages
|
|
# HIE Support
|
|
- -fhide-source-paths
|
|
- -fwrite-ide-info -hiedir=.hie
|
|
# Polysemy Support
|
|
- -O2 -flate-specialise -fspecialise-aggressively
|
|
|
|
default-extensions:
|
|
- ApplicativeDo
|
|
- DataKinds
|
|
- DerivingStrategies
|
|
- GADTs
|
|
- GeneralizedNewtypeDeriving
|
|
- ImportQualifiedPost
|
|
- LambdaCase
|
|
- MultiWayIf
|
|
- NoFieldSelectors
|
|
- NoImplicitPrelude
|
|
- OverloadedStrings
|
|
- RecordWildCards
|
|
- TemplateHaskell
|
|
- TypeFamilyDependencies
|
|
|
|
library:
|
|
source-dirs: src
|
|
verbatim:
|
|
default-language: GHC2021
|
|
|
|
executables:
|
|
juvix:
|
|
main: Main.hs
|
|
source-dirs: app
|
|
dependencies:
|
|
- juvix
|
|
- haskeline == 0.8.*
|
|
- http-conduit == 2.3.*
|
|
- mtl == 2.2.*
|
|
- optparse-applicative == 0.17.*
|
|
- repline == 0.4.*
|
|
- string-interpolate == 0.3.*
|
|
verbatim:
|
|
default-language: GHC2021
|
|
when:
|
|
- condition: flag(static)
|
|
ld-options:
|
|
- -static
|
|
- -pthread
|
|
|
|
tests:
|
|
juvix-test:
|
|
main: Main.hs
|
|
source-dirs: test
|
|
dependencies:
|
|
- juvix
|
|
verbatim:
|
|
default-language: GHC2021
|
|
ghc-options:
|
|
- -threaded
|
|
|
|
benchmarks:
|
|
juvix-bench:
|
|
main: Main.hs
|
|
source-dirs: bench
|
|
dependencies:
|
|
- juvix
|
|
verbatim:
|
|
default-language: GHC2021
|