Aviva Directory » Computers & Internet » Programming » Inko

Inko is a gradually-typed, object-oriented programming language designed for writing concurrent programs.

Created by Yorick Peterse, the development of Inko was influenced by Erlang, Ruby, Rust, and Smalltalk, and the language shares features with a number of other languages, but it is also unique.

As compared to Go, a statically-typed language developed by Google, Go is a compiled language while Inko is interpreted. Go is a multi-paradigm language, while Inko is an object-oriented language, using message passing rather than directly invoking functions. Go uses lightweight tasks, known as goroutines, while Inko uses lightweight processes that are more similar to operating system processes. Goroutines use shared memory, while Inko processes have their own heaps.

Erlang and Elixir are distinct languages, but both run on BEAM, the virtual machine at the core of Erlang. Both are functional programming languages, while Inko is object-oriented. Erlang, Elixir, and Inko use similar, lightweight, multitasking processes, and all three use a similar scheduling setup.

Ruby is an interpreted, object-oriented programming language, as is Inko. However, Ruby does not persist the bytecode after compilation, as it is directly executed. Every time a Ruby program runs, the bytecode has to be compiled from scratch. On the other hand, Inko's compiler is a separate program, so the bytecode is saved to disk. While both Ruby and Inko are object-oriented, Ruby uses message passing for almost everything, including if and while statements. The chief Ruby implementation, MRI (CRuby), uses a Global Interpreter Lock that prevents ruby threads from running in parallel, while Inko has no such lock, allowing Inko to run several processes in parallel. Ruby uses shared memory, while Inko processs all have their own heap. Ruby uses OS threads for multitasking, which relies on the OS thread scheduler. Thus, it is possible for a few OS threads to consume all of the CPU time, preventing other threads from functioning. Inko uses its own preemptive scheduler, guaranteeing each process a fair share of the execution time.

The Inko programming language and associated files are available under the Mozilla Public License, and may be freely downloaded, modified, and redistributed. Inko supports Linux and macOS, as well as Windows, when it is compiled with a MingW toolchain. Other Unix-type platforms should work, but are not yet officially supported. Only x86-64 platforms are officially supported at this time.

The focus of this category is on the Inko programming language. Topics related to the language itself, any of its implementations, or any editors, IDEs, or tools designed to facilitate programming in Inko, as well as Inko user groups, forums, tutorials, guides, or informational sites are appropriate.



Recommended Resources

Search for Inko on Google or Bing