Skip to content
  • Yorick Peterse's avatar
    Overhaul the build process and the CLI · b64323fe
    Yorick Peterse authored
    All Make files have been merged into a single top-level Makefile, which
    in turn has been cleaned up. The CLI has also been revamped
    
    == Easier installation process
    
    The installation process has also been simplified into two steps:
    
        make build
        make install
    
    If files need to be installed in a different location, such as a
    packaging jail/chroot, you can run the following:
    
        make build
        make install DESTDIR=example/directory
    
    We also support the PREFIX variable better now. By default DESTDIR is
    set to PREFIX, but you can also set them separately. This way you can
    customise where the compiler will look for source files using PREFIX,
    while still being able to install the files into a (temporary) directory
    using DESTDIR. For example:
    
        make build
        make install PREFIX=/usr/local DESTDIR=/tmp/package-chroot
    
    == Removal of pre-compiled packages
    
    As part of these changes, we stop providing pre-compiled binaries in the
    S3 bucket releases.inko-lang.org. This is discussed in
    #218, but in short:
    
    1. Few users are likely to use and benefit from these pre-compiled
       binaries.
    2. Because of the compile-from-source fallback you still have to install
       all compile-time dependencies.
    3. Focusing on package managers (e.g. including Inko in the AUR) is more
       useful.
    4. The compiler packages may stop working in the future, if any of the
       OS' decide to change things such that previously compiled binaries
       have to be recompiled.
    5. All of this requires a fair amount of complexity on our end, with
       little to no benefit.
    
    == New CLI
    
    This adds a new "inko" executable written in Rust, replacing the
    "inko-test", "inkoc", and "inko" Ruby executables, and the "ivm"
    executable.
    
    This new executable uses sub-commands for building Inko source files,
    running tests, etc. This executable has various paths, such as the path
    to the compiler, compiled into itself. This ensures that the "inko"
    executable always uses the correct version of the compiler, runtime,
    etc.
    
    Usage of the new CLI is as follows:
    
        inko test.inko          # Compiles and runs test.inko
        inko run test.inko      # Same thing
        inko run test.ibi       # Run a bytecode image
        inko build test.inko    # Just compiles test.inko
        inko test               # Runs all unit tests in ./tests/test
    
    Since the compiler is still written in Ruby, the "inko" executable will
    spawn a sub-process to run the compiler. The VM is run in the same
    process as the CLI.
    
    To make developing the CLI a bit easier, we now use Cargo workspaces to
    separate the VM (= libinko) and the CLI.
    b64323fe
Validating GitLab CI configuration… Learn more