Features

Overview

Mutant is an open-source, cross-platform, compiled, garbage collected, encrypted programming language that wants to make secure programming and security research more accessible.

The language is loosly typed and it does not require defining specific data types while creating variables.

While semi-colons ; are not required strictly to use the language, it is recommended that they are used in order to avoid unusual errors in code.

Security

The language supports both compile time and run-time security through encryption & hashing. This is achieved by encrypting generated bytcode at complete bytecode and at instruction level. This ensures that compiled program runs only after a certain number of checks

The language also adds a header and a footer in the generated compiled file with the bytecode to identify the file with magic strings rather than relying on file extensions. The language also verifies hashes of encrypted and decrypted code to ensure that it has not been tampered with before running it

REPL

Language has support for a basic REPL for testing out the capabilities. It is a powered down version of the full language and is only intended to test basic features of the language

VM

Mutant Language makes use of a virtual machine, known as “Mutant Virtual Machine” or MVM. This virtual machine makes sure that your program runs in YOUR machine. It has been tested on Linux, macOS, & Windows. Although, it should also work on Android, FreeBSD and essentially any platform/architecture that is supported natively by Go Programming Language.

This virtual machine is run everytime it has to run compiled mu files or whenever the user decides to run their programs through REPL

Release Builds

Mutant is capable of generating self-contained, independent, executable binary files. These files can be generated for a number of platforms. The language supports cross compilation for Linux, macOS & Windows. Supported architectures include amd64, 386, arm64 & arm. Please go through in-language help for more information.

The size of generated binaries may concerning for some people, but the team is working hard to find innovative ways to try and trim the fat.

Release builds do not require the client machine to have mutant installed.

Unicode Support

The language supports emojis, glyphs and other non ASCII characters making it truly multi-lingual. Future versions will include support for multi-lingual syntax so that programming is not restricted to just ASCII based written languages