Installation
Inko's virtual machine and compiler are written in Rust, bundled into a single executable compiled using Rust's "cargo" package manager/build tool.
Inko officially supports Linux, macOS, and Windows. BSDs and other Unix-like operating systems should also work, but are not officially supported at this time.
Windows users can build Inko using the Visual Studio build tools, or using a Unix compatibility layer such as MSYS2.
Requirements
- A 64-bits little-endian platform
- A CPU with AES-NI support
- Rust 1.62 or newer
Inko's package manager (ipm) also required Git to be installed, and the git
executable to be available in your PATH.
For Unix based platforms, the following must also be available:
- Make
- sh, bash or a compatible shell
- A C compiler such as GCC or clang
These dependencies are not needed when building for Windows when using the Visual studio build tools. They are needed when building under MSYS2 or similar Unix compatibility layers.
Installing
Cross-platform
The easiest way to install Inko is to use Inko's own version manager: ivm. ivm supports all the platforms officially supported by Inko, including Windows. For more information on how to install and use ivm, refer to the ivm guide.
Once installed, you can install Inko as follows:
ivm install latest # Installs the latest version of Inko
ivm install 0.10.0 # Installs version 0.10.0
Docker
If you are using Docker or Podman, you can use our official Docker/Podman images. These images are published on GitLab.com.
To install Inko 0.10.0, run the following:
docker pull registry.gitlab.com/inko-lang/inko:0.10.0
podman pull registry.gitlab.com/inko-lang/inko:0.10.0
You can then run Inko as follows:
docker run inko-lang/inko:0.10.0 inko --version
podman run inko-lang/inko:0.10.0 inko --version
Arch Linux
Two AUR packages are provided: inko
and inko-git
. These can be installed
using your favourite AUR wrapper:
yay -S inko
pacaur -S inko
pikaur -S inko
git clone https://aur.archlinux.org/inko.git
cd inko
makepkg -si
macOS
Inko is available in Homebrew:
brew install inko
The Homebrew formula is maintained by Homebrew and its contributors. For issues specific to the formula (e.g. it doesn't work on a certain version of macOS), please report issues in the homebrew-core issue tracker.
From source
When building from Git, first clone the repository:
git clone https://gitlab.com/inko-lang/inko.git
cd inko
Or use a release tarball:
mkdir 0.10.0
curl https://releases.inko-lang.org/0.10.0.tar.gz -o 0.10.0.tar.gz
tar -C 0.10.0 -xf 0.10.0.tar.gz
cd 0.10.0
To compile a development build, run cargo build
. For a release build,
run cargo build --release
instead. After building you can find the inko
executable in target/release/inko
(or target/debug/inko
for a debug build),
and the ipm
executable in target/release/ipm
(or target/debug/ipm
for
debug builds).
By default Inko uses the standard library provided in the Git repository,
located in libstd/src
. If you wish to use a different directory, set the
INKO_LIBSTD
environment variable to a path of your choosing. For example:
INKO_LIBSTD=/tmp/libstd/src cargo build --release
This builds Inko such that it uses the standard library located at
/tmp/libstd/src
.
When building from source you can set certain feature flags to customise the installation. These flags are specified like so:
cargo build --release --features foo,bar
The following feature flags are available:
Feature flag | Default | Description |
---|---|---|
libffi-system | Disabled | Dynamically link against libffi, instead of compiling it from source. |
jemalloc | Disabled | Use jemalloc instead of the system allocator. |
Packaging
To ease the process of building a package of Inko, consider using the Makefile provided as part of each release. Using this Makefile, the process (at least in most cases) is as simple as running the following:
make build PREFIX=/usr
make install PREFIX=/usr DESTDIR=./chroot
The PREFIX
variable specifies the base path of all files to install, while
DESTDIR
specifies a directory to move the files into.
The PREFIX
variable must be specified for both make build
and
make install
. The DESTDIR
variable defaults to the value of the PREFIX
variable.
When packaging Inko it's best to use a system wide installation of FFI, instead of building it from source when compiling Inko. To do so, build Inko as follows:
make build FEATURES=libffi-system
Or if you don't want to use make:
cargo build --release --features libffi-system