Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
libs Release v0.39.0 Apr 1, 2018
scripts Move Compiler Configuration Files May 27, 2016
src ImmutableIterator.forEachRemaining Mar 28, 2018
versions Release v0.39.0 Apr 1, 2018
.gitignore Ignore Nov 2, 2017
.travis.yml Fix Overload Resolution Jan 4, 2017
ASM-LICENSE.txt Release v0.28.0 Jan 8, 2017
LICENSE.txt Update License Jan 1, 2018
gradlew Update to Gradle v4.2.1 Oct 13, 2017

The Dyvil programming language

Build Status Join the Chat

In Progress Ready Pull Request Stats Issue Stats

Dyvil is a multi-paradigm, general purpose programming language that is based on Java and the JVM. It is a compiled, statically and strongly typed language that supports object-oriented, functional and imperative programming styles. The language features many high-level constructs as well as an extensible and expressive syntax, making it highly useful for both rapid and safe prototyping, and the creation of domain-specific languages.

In addition to the Dyvil-to-JVM-Bytecode compiler, the toolchain consists of an executable REPL, a full-fledged standard library which includes an extensive collection framework, the Dyvil Property Format library and specification, and the GenSrc source code generation and text template specialization tool. Information on all components can be found in the Language Reference.

As a new programming language in active development, the main goals of the Dyvil project are the following:

  • to enhance Java with modern programming language elements
  • to avoid common boilerplate code
  • to give programmers full control over the syntax and semantics of their code
  • to be fully compatible and inter-operable with Java and other JVM languages like Scala or Groovy

Because the syntax and semantics of the language are still highly experimental and subject to change in upcoming releases, it is not recommended to use Dyvil in any kind of production environment. Feature or change requests in the form of GitHub Issues or Pull Requests are welcome and encouraged.

Throughput Graph


Language Reference

Dyvil on Reddit

How to try out Dyvil


  1. Download the dyvil-vX.Y.Z.jar file from a Release.

  2. Run it with

     $ java -jar dyvil-vX.Y.Z.jar
  3. Start typing declarations and commands.

See the REPL Reference for more details.

The Compiler

  1. Download the dyvil-vX.Y.Z.jar files from a Release.
  2. Visit the Compiler Reference to find out how to use compiler command line arguments and configurations.
  3. Run it with

    $ java -cp dyvil-vX.Y.Z <args...>

  1. The generated class files should now be in the specified output directory.