Альфа-релиз. Nova Oracle 0.1.0 доступен для Windows и Linux x86_64. Язык и API могут меняться; совместимость и готовность к production не гарантируются. Начните с Oracle; Carina 0.2.0 — отдельная ступень самосборки, пока только с Windows-бинарником.

Системные требования

Linux
x86_64
C-тулчейн и заголовки Boehm GC
macOS
Нет опубликованного бинарного архива или подтверждённой релизной приёмки
Windows
x86_64
C-тулчейн, например Visual Studio Build Tools
Бинарные архивы
Rust устанавливать не нужно
C-компилятор всё ещё нужен

Установка

Скачайте архив Oracle для своей платформы со страницы релизов. Проверьте его по SHA256SUMS того же выпуска и распакуйте. В архив входят CLI, nova-lsp, стандартная библиотека и C-рантайм. Следуйте README-INSTALL.md внутри своего архива.

1

Windows x86_64

Распакуйте nova-oracle-0.1.0-windows-x86_64.zip. Нужен C-компилятор, например Visual Studio Build Tools с поддержкой C++. Библиотека Boehm GC и её заголовки входят в архив.

В PowerShell из каталога с nova.exe подключите скрипт через точку. Начальная точка сохраняет настройки окружения в текущей сессии:

. .\setup-env.ps1
nova --version
2

Linux x86_64

Распакуйте nova-oracle-0.1.0-linux-x86_64.tar.gz. Для Debian/Ubuntu установите C-тулчейн и заголовки Boehm GC:

sudo apt-get install clang cmake make libgc-dev build-essential

В Bash из корня распакованного дистрибутива:

source ./setup-env.sh
nova --version
3

Исходники и Carina

На странице релизов есть также снимки исходников с субмодулями. Для сборки Oracle из исходников используйте инструкцию сборки на Linux и требования вашей платформы.

Carina 0.2.0 — компилятор, написанный на Nova. Его опубликованный бинарник — только для Windows x86_64; принятая ступень доказывает самосборку, а не готовность всей Oracle CLI или экосистемы пакетов. Инструкция для Carina находится в её отдельном архиве.

Первая программа на Nova

Создайте отдельную папку проекта. Сначала добавьте nova.toml: компилятор ищет этот манифест пакета вверх по дереву каталогов.

[package]
name = "hello"
version = "0.1.0"

В той же папке создайте hello.nv. Имя модуля соответствует имени пакета:

module hello

fn main() {
    println("Hello, Nova!")
}

Из папки проекта, в сессии после подключения setup-скрипта, соберите и запустите программу. PowerShell на Windows:

nova build hello.nv
.\hello.exe

Bash на Linux:

nova build hello.nv
./hello

Вывод

Hello, Nova!

Эффекты за 30 секунд

Nova требует объявлять каждый побочный эффект в сигнатуре функции. Компилятор проверяет, что никаких необъявленных эффектов не выполняется — на этапе компиляции, а не в рантайме.

// Эффекты стоят между параметрами и типом возврата.
// Io означает, что функция может выполнять ввод-вывод.
// Компилятор отклоняет вызовы Io-функций из не-Io контекстов.
fn greet(name str) Io -> () {
    println("Hello, ${name}!")
}

fn main() {
    greet("Nova")
}

Эффекты стоят между параметрами и типом возврата. Компилятор статически проверяет, что каждый эффект объявлен — никакого скрытого ввода-вывода, никаких неожиданных сбоев.

Настройка редактора

VS Code
Подсветка синтаксиса, базовый языковой сервер.
Исходники расширения (не входит в архив) →
Другие редакторы
Грамматики подсветки в репозитории; плагины редакторов в релизные архивы не входят.
Исходники для редакторов →
Vim / Neovim
Отдельный проект грамматики Tree-sitter.
Смотреть на GitHub →

Следующие шаги