mirror of
https://github.com/anoma/juvix.git
synced 2024-12-14 08:27:03 +03:00
20a95ec42d
This PR creates a new package that's bundled with the compiler in a similar way to the stdlib and the package description package. ## The `package-base` Package This package is called [package-base](ab4376cf9e/include/package-base
) and contains the minimal set of definitions required to load a Package file. The [`Juvix.Builtin`](ab4376cf9e/include/package-base/Juvix/Builtin/V1.juvix
) module contains: ``` module Juvix.Builtin.V1; import Juvix.Builtin.V1.Nat open public; import Juvix.Builtin.V1.Trait.Natural open public; import Juvix.Builtin.V1.String open public; import Juvix.Builtin.V1.Bool open public; import Juvix.Builtin.V1.Maybe open public; import Juvix.Builtin.V1.List open public; import Juvix.Builtin.V1.Fixity open public; ``` `Juvix.Builtin.V1.Bool` is required to support backend primitive integers `Juvix.Builtin.V1.Trait.Natural` is required to support numeric literals. ## The `PackageDescription.V2` module This PR also adds a new [`PackageDescription.V2`](ab4376cf9e/include/package/PackageDescription/V2.juvix
) type that uses the `package-base`. This is to avoid breaking existing Package files. The Packages files in the repo (except those that test `PackageDescription.V1`) have also been updated. ## Updating the stdlib The standard library will be updated to use `Juvix.Builtin.*` modules in a subsequent PR. * Part of https://github.com/anoma/juvix/issues/2511
10 lines
180 B
Plaintext
10 lines
180 B
Plaintext
module Package;
|
|
|
|
import PackageDescription.V2 open;
|
|
|
|
package : Package :=
|
|
defaultPackage
|
|
{name := "Hanoi";
|
|
version := mkVersion 0 1 0;
|
|
main := just "Hanoi.juvix"};
|