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 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. 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:
    • finished STM implementation together with a generic with expression
    • significantly grow the standard library
    • focus on optimizations in the interpreter
  • 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 4, 2020