Skip to content

Program Compilation

Example: Hello World

A Juvix file must declare a module with the same name as the file. For instance, HelloWorld.juvix should declare a module HelloWorld:

-- This is a comment.
module Hello;

  -- Importing the 'String' type from standard library prelude
  import Stdlib.Prelude open;

  main : String := "Hello world!";

The zero-argument function main is evaluated when running the program and must be defined in a file compiled to an executable.

To compile HelloWorld.juvix, type:

juvix compile native HelloWorld.juvix

Compilation Targets

Juvix supports several targets, including native, wasi (for web assembly), anoma and cairo among others. To see the full list use:

juvix compile --help

Juvix Projects

A Juvix project is a collection of Juvix modules in one main directory containing a Package.juvix metadata file. Each module's name must match its file path, relative to the project's root directory. For instance, if the file is root/Data/List.juvix, the module should be called Data.List.

To initialize a Juvix project interactively in the current directory, use juvix init.

To verify correct project root detection by Juvix, run, for instance,

juvix dev root

Refer to: Modules Reference.

Comments