Skip to content

Overview

Latest Release Docker Pulls IDEA Plugin License

Gitter Google group : yatta-lang

Actions Status Test

Yatta is a minimalistic, (strongly) dynamically typed, parallel and non-blocking, polyglot, strict, functional programming language, with ML-like syntax, for the GraalVM virtual machine (VM). Yatta puts a strong focus on code readability.

Yatta abstract users from dealing with non-blocking asynchronous computations and parallelism. While these features are commonly available in other languages nowadays, they are almost exclusively non-native solutions that come in forms of libraries or frameworks and are difficult to integrate with existing codebases. On top of that, dealing with these additional libraries requires a conscious effort of the programmer to choose/learn/integrate these libraries into their mindset when writing new code.

Follow our blog for release announcements and other reading materials.

Goals & Priorities

  • Excellent readability - simple syntax, few keywords, virtually no boilerplate.
  • Few types of expressions - module, import, function(function does not need a keyword, it is defined by a name and arguments - patterns), case, if, let, do, with and try/catch + raise.
  • Simple module system - ability to expose functions for use in other modules, and ability to import them from other modules. Modules are first level values and can be created dynamically.
  • Single expression principle - program is always one expression - this enables simpler evaluation and syntax, allows writing simple scripts as well as complex applications.
  • Powerful and efficient built-in immutable data structures with full support for pattern matching, including Sequence, Dictionary and Set.
  • Custom data types representable as records.
  • Built-in runtime level non-blocking asynchronous IO.
  • Simple concurrency, built-into runtime, no need for any abstractions such as Futures, Channels or Actors.
  • Advanced concurrency provided by built-in Software Transactional Memory (STM) module.
  • Polyglot language - interoperability with other languages via GraalVM.
  • Powerful resource management - automatically manage resources using built-in context manager infrastructure.

Tip

Read more about the philosophy behind Yatta here.

Status

The Yatta language is currently in active development. The release plan is:

  • https://img.shields.io/github/milestones/progress/yatta-lang/yatta/1 - May 25th 2020. The focus of this release was:
    • stabilized syntax, semantics and runtime
    • automated the release process
    • estabilish website and documentation
    • spread the word and allow users to "play" with the language and the interpreter
    • collect some feedback from interested users
  • https://img.shields.io/github/milestones/progress/yatta-lang/yatta/2 - 2020/Q3-Q4. Focus of this release is:
  • https://img.shields.io/github/milestones/progress/yatta-lang/yatta/3 - final - 2021. Focus of this release is:
    • stabilize standard library
    • focus on tooling, such as package management, editor/IDE support
    • provide a high-quality REPL

See the release notes for more details.


Last update: July 18, 2020