simple and fast scripting language

Overview

The Aument Language

The Aument language is a work-in-progress dynamically-typed scripting language with

  • performance first: this scripting language is designed with performance in mind. (read more)
  • fast development time: like Python and Javascript, you can write code and run it directly.
  • fast deployment: once finished, you can compile your code into a native, lightweight executable. You don't even need any external runtime to run it!

(Previously named the aulang language. The current name comes from the Italian word aumento, meaning growth, augment. It's pronounced /ˈɔː.mənt/.)

Syntax

An example fibonacci program:

def fib(n) {
    if n <= 1 {
        return n;
    }
    return fib(n - 1) + fib(n - 2);
}

print fib(28);

See a brief tour for more.

Usage

Once Aument is compiled, you can run a program in interpreter mode with aument run [file]

$ cat hello.au
print "Hello World\n";
$ ./aument run hello.au
Hello World

You can also build the program as an executable with aument build [file] [output]

$ ./aument build hello.au /tmp/hello && /tmp/hello
Hello World

The file libau_runtime.a must be in the same directory as aument. This will be statically linked to your executable.

The build command requires a C compiler in the environment's PATH (default is gcc). If the environment variable CC is specified, it will use that instead.

Building

Requirements

  • A C compiler (tested with GCC v9.3.0)
  • Meson (tested with 0.53.2)
  • Python 3

Linux

In the source directory, run the build.sh script. For debug builds, do:

./build.sh debug

For release builds, do:

./build.sh release

An executable aument will appear in the build directory.

Install

You can use the install.sh script to install aument into /usr/local.

Windows

If your build machine is Windows, install Python and Meson.

For Cygwin users, install gcc on Cygwin, open a Cygwin shell in the current directory and follow Linux instructions.

For MSVC users, run build.bat (for release mode).

If you're cross-compiling for Windows (64-bit), use the command:

./build.sh --cross-win64

Documentation

Contributing

This language is in alpha development, so feel free to ask any questions or suggest features in the repository's issues page.

Changelog

This project uses the semver versioning scheme.

See CHANGELOG.md.

License

This implementation of aument is licensed under Apache License v2.0 with Runtime Library Exception. See LICENSE.txt for more details.

Authors

See ACKNOWLEDGEMENTS.txt.

You might also like...
A modern dynamically typed programming language that gets compiled to bytecode and is run in a virtual machine called SVM (Strawbry Virtual Machine).

Strawbry A bytecode programming language. Here is what I want Strawbry to look like: var a = 1 var b = 2 var c = a + b print(c) func sqrt(x) { re

Teach the C programming language using a collection of super beginner friendly tutorials and challenges.
Teach the C programming language using a collection of super beginner friendly tutorials and challenges.

TeachMeCLikeIm5 You are welcome to contribute to this repo. See the CONTRIBUTING.md for more info 📜 About this repo 📜 A collection of super beginner

Roadmap for learning the C++ programming language for beginners and experienced devs.

Roadmap for learning the C++ programming language for beginners and experienced devs. // Дорожная карта по изучению языка программирования C++ для начинающих и практикующих.

General purpose and statically typed programming language

Synthium Synthium is designed to be a systems programming language. It takes inspiration from existing systems programming languages, but also from so

Colang - Programming language and compiler —WORK IN PROGRESS—

Co programming language Building Initial setup: ./init.sh will install the following into deps/: ckit build tool and rbase library ckit-jemalloc memor

Competitive Programming Language MM

MM Language MM Languageは、競技プログラミングのために開発中のプログラミング言語です。 どんなことが可能なのかは、examplesおよびexamples_outputsを参照ください。 まだ開発中の言語であるため、諸々不備があり、コンパイルエラーの行数表示さえまともに出せない状

The DSiLanguagePatcher increases accessibility to foreign region DSi consoles by providing a mean to change the user interface language.
The DSiLanguagePatcher increases accessibility to foreign region DSi consoles by providing a mean to change the user interface language.

DSi Language Patcher The DSi Language patcher is a small tool, which runs on your DSi (homebrew execution required) and create a copy of your original

A library of language lexers for use with Scintilla

README for Lexilla library. The Lexilla library contains a set of lexers and folders that provides support for programming, mark-up, and data languag

An open source, OOP language with editable syntax.

Copper An Open source compiled programming language, In development. Goals Copper is an general-purpose OOP language. Coppers main goal is to allow ea

Comments
  • GitHub Actions fails to compile Aument on Windows

    GitHub Actions fails to compile Aument on Windows

    GitHub Actions throws an error about not being able to find LoadLibraryA function on Windows:

    Example: https://github.com/aument-lang/aument/runs/2212790352?check_suite_focus=true#step:5:47

    opened by fermian 1
  • Change project's name

    Change project's name

    Apparently the name "aulang" is already used for a programming language here. We'll need to rename this project to something else, preferably a word starting with "au" (since the C API is already prefixed with au_ and I don't want to go back and rename everything).

    If anyone has any idea please comment it here.

    (Source)

    opened by fermian 1
  • Lyra: a new C compiler

    Lyra: a new C compiler

    Lyra is the Lowered Intermediate Representation for Aument, a high-level intermediate representation specialized for the Aument programming language.

    Lyra is intended to be an intermediate layer after bytecode translation: Aument bytecode will be compiled into Lyra, which will be optimized and ultimately be converted into C code.

    https://github.com/aument-lang/lyra

    opened by fermian 0
  • Towards the beta release of Aument

    Towards the beta release of Aument

    I plan to release the first beta of Aument on December 26th/31st, 2021. Here is a list of functionalities I want to add to Aument before beta. This list is subject to change.

    • Language features
      • [x] Core language features: ints, floats, arrays, dictionaries
      • [ ] Exceptions
        • [x] Core functionality
        • [ ] Error types
      • [ ] Scoped variables
      • [ ] For loops
      • [ ] Sequences
      • [ ] Dispatching on native compound structures (arrays and dictionaries)
      • [ ] Multithreading support
      • [ ] Cross threaded message passing
      • [ ] Extending imported methods
      • [ ] Lambda functions
    • Standard library
      • [ ] Support for list manipulation functions list::map, list::filter, list::reduce
    • C compiler
      • [ ] Support exported constant values
      • [ ] (stretch goal) Compile Aument bytecode into optimized, lower intermediate representation. Requires rewriting the current C compiler
    • Tooling
      • [ ] Add a package manager
      • [ ] Syntax highlighting for text editors
    • Libraries
      • [ ] JSON library (Aument)
        • [x] ...that can parse JSON
        • [ ] ...that can serialize objects into JSON
      • [ ] Asynchronous IO library (C)
        • [x] ...that supports asynchronous files
        • [ ] ...that supports TCP/UDP streams
        • [ ] ...with Javascript-style Promises
      • [ ] Simple HTTP web server library (C/Aument)
      • [ ] C FFI library (C)
      • [ ] Testing library (Aument)
    milestone 
    opened by fermian 0
Releases(0.5.1)
  • 0.5(Mar 28, 2021)

    Version 0.5 [α]

    • Language features:
      • Support compound assignment operators with indexing (x[y] += z;)
      • Added character strings (automatically turns "A"c into 65).
      • Support new expression with initializer
      • Added bitwise AND &, bitwise OR |, bitwise NOT ~, shift left <<, shift right >> operators
    • Standard library:
      • Moved type conversion functions into modules (int to int::into, ...), turning bool, float and int into fully fledged modules.
      • Added code_points, bytes, index_of, contains, starts_with, ends_with functions to str module
      • Added array::push, array::pop, array::repeat functions
      • Added is type-check functions to bool, float, int, str modules.
      • Moved len function to list module.
      • Moved input function to io module.
    • Interpreter:
      • Better error handling with stack traces.
      • Interpreter now correctly errors out on module import failure.
    • Libraries:
      • Reorganized C API

    You will need GCC v9.3.0 installed in order to use the build command.

    Source code(tar.gz)
    Source code(zip)
    aument-linux64.md5(58 bytes)
    aument-linux64.zip(419.31 KB)
    aument-win64.md5(56 bytes)
    aument-win64.zip(507.50 KB)
  • 0.4(Mar 21, 2021)

    Version 0.4 [α]

    • Language features:
      • Added function values
      • Dot binding and dot calls for creating and calling function values
      • Importing .dll libraries on Windows, .so libraries on Unix
    • Standard library:
      • io: Added read, read_up_to, write, flush functions
      • Enabled math functions
      • Fixed reference counting bugs
    • Interpreter:
      • Implemented some performance improvements
        • Storing the VM's instruction pointer in a register
        • Prefetching subsequent instruction after decoding
    • Parser:
      • Better code generation by eliding local loads

    You will need GCC v9.3.0 installed in order to use the build command.

    Source code(tar.gz)
    Source code(zip)
    aument-linux64.md5(58 bytes)
    aument-linux64.zip(443.62 KB)
    aument-win64.md5(56 bytes)
    aument-win64.zip(518.74 KB)
  • 0.3(Mar 13, 2021)

    The birth of the Aument language.

    Version 0.2–0.3 [α]

    • General:
      • Additional standard library functions
      • Better parser/interpreter errors
      • Better code coverage and testing
    • Language features:
      • Added classes
      • Arrays, tuples and syntax to index them
      • Methods and dynamic dispatch
    • Parser changes:
      • Added unary-not expression
      • Exporting data and importing from source file/dynamic libraries
      • Forward declaration of classes and functions
    • Interpreter:
      • Minor performance improvements
      • Deferred reference count feature for faster VM operations
      • Specialized math opcodes for integers and floats
    • C compiler:
      • Full feature parity with interpreter
    Source code(tar.gz)
    Source code(zip)
  • 0.2.2(Mar 6, 2021)

  • 0.2.1(Mar 4, 2021)

  • 0.2(Mar 2, 2021)

Owner
The Aument Project
Building the Aument scripting language
The Aument Project
Programming Language T#. Compiled language. In development.

Programming Language T# WARNING! THIS LANGUAGE IS A WORK IN PROGRESS! ANYTHING CAN CHANGE AT ANY MOMENT WITHOUT ANY NOTICE! $ make func main() {

Ibuki Yoshida 1 Feb 1, 2022
T# Programming Language. Interpreted language. In development. I will make this compilable later.

The T# Programming Language WARNING! THIS LANGUAGE IS A WORK IN PROGRESS! ANYTHING CAN CHANGE AT ANY MOMENT WITHOUT ANY NOTICE! Install Install $ make

T# 91 Jun 24, 2022
λQ: A Simple Quantum Programming Language based on QWIRE.

λQ λQ: A Simple Language based on QWIRE which can be compiled to QASM. The name λQ means lambda calculus with quantum circuits. This is a term project

Wenhao Tang 5 Jul 11, 2021
A Simple Toy Programming Language

Tovie Lang Small toy programming language. Docs : https://github.com/Jaysmito101/tovie/wiki Examples : 1. Hello World proc_0 "Hello" 32 "World!"

Jaysmito Mukherjee 24 Oct 21, 2022
A simple token-based programming language written in C++.

Fun Assembly Programming Language About It's a simple token-based programming language written in C++ by Soham Malakar and Sanket Tarafder. Know About

Soham Malakar 10 Apr 23, 2022
Fast C++ container combining the best features of std::vector and std::deque

veque The double-ended vector A very fast C++17 container combining the best features of std::vector and std::deque "In Most Cases, Prefer Using deque

null 102 Nov 26, 2022
This repository is a summary of the basic knowledge of recruiting job seekers and beginners in the direction of C/C++ technology, including language, program library, data structure, algorithm, system, network, link loading library, interview experience, recruitment, recommendation, etc.

?? C/C++ 技术面试基础知识总结,包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经验、招聘、内推等信息。This repository is a summary of the basic knowledge of recruiting job seekers and beginners in the direction of C/C++ technology, including language, program library, data structure, algorithm, system, network, link loading library, interview experience, recruitment, recommendation, etc.

huihut 26.7k Nov 28, 2022
A cheatsheet of modern C++ language and library features.

C++20/17/14/11 Overview Many of these descriptions and examples come from various resources (see Acknowledgements section), summarized in my own words

Anthony Calandra 15.2k Nov 24, 2022
A comprehensive catalog of modern and classic books on C++ programming language

A comprehensive catalog of modern and classic books on C++ programming language

Yurii Cherkasov 375 Nov 20, 2022
A minimal, toy programming language implemented in C++ and STL.

od Programming Language Mod (or ModLang) is a minimal, toy programming language implemented in C++ and STL (Standard Template Library) with no other e

Pranav Shridhar 26 Apr 28, 2022