The compiler of the okta programming language.

Overview

oktac

The compiler of the okta programming language. For more information please visit the official website, and to quickly get okta running refer to the getting started section.

DISCLAIMER: This project, as well as the okta language itself, it's in a very early development state, expect bugs and frequent breaking changes.

How to build

The compiler currently supports the following platform and architecture combinations:

  • Linux x86_64 (tested on versions 5.*)
  • FreeBSD x86_64 (tested on 13.0-RELEASE)

The first step is to install the dependencies:

  • git
  • LLVM 12
  • clang 12
  • Rust 1.57
  • libffi
  • libxml2

Once you have dependencies installed, you clone the repository:

git clone https://git.sr.ht/~mikelma/oktac
cd oktac

The final step is to build the compiler using rust's cargo. The --release flag isn't mandatory, however it is strongly recommended, as if this flag isn't provided the debug version of oktac will be built instead.

cargo build --release

How to use

This section covers the most common use cases of oktac, for more information run oktac --help.

Compiling okta programs

  • Compiling a single okta file to a binary.

    oktac test.ok -o test
  • Compiling multiple okta files:

    oktac main.ok bar.ok foo.ok

    Note that if the -o (output) flag isn't provided the output binary is saved to a.out.

Useful debugging options

  • Emit the LLVM-IR generated from the source:

    ./oktac test.ok --emit=llvm-ir
  • Emit the AST of the source code:

    oktac main.ok --emit=ast
  • Emit the full AST of the source code (very verbose):

    oktac main.ok --emit=ast-dbg

Contributing

If you want to contribute or found a bug, please take a look at the contributing section of the okta website.

License

Oktac is distributed under the terms of the GLPv3 license. See LICENSE for more details.

Special thanks

You might also like...
jBread is a simple interpreted language

jBREAD jBread is a simple interpreted language, I'm creating to learn more about interpreters and how to design them. I probably won't fully complete

A W.I.P desktop application for a new typesetting language, typst.
A W.I.P desktop application for a new typesetting language, typst.

[WIP] typstudio A W.I.P desktop application for a new markup-based typesetting language, typst. Typstudio is built using Tauri. Features Syntax highli

High-performance, Reliable ChatGLM SDK natural language processing in Rust-Lang

RustGLM for ChatGLM Rust SDK - ไธญๆ–‡ๆ–‡ๆกฃ High-performance, high-quality Experience and Reliable ChatGLM SDK natural language processing in Rust-Language 1.

C-like language compiler, the final project of ZJU Compiler Principle course
C-like language compiler, the final project of ZJU Compiler Principle course

cc99 cc99 (not cc98.org) is a C-like language compiler, which is the final project of ZJU Compiler Principle course. It supports many of the C99 langu

The Devils' Programming Language (Quantum Programming Language)

devilslang has roots in Scheme and ML-flavored languages: it's the culmination of everything I expect from a programming language, including the desire to keep everything as minimalistic and concise as possible. At its core, devilslang is lambda-calculus with pattern-matching, structural types, fiber-based concurrency, and syntactic extension.

An Interpreter for Brainfuck programming language implemented in the Rust programming language with zero dependencies.

Brainfuck Hello, Visitor! Hey there, welcome to my project showcase website! It's great to have you here. I hope you're ready to check out some awesom

The hash programming language compiler

The Hash Programming language Run Using the command cargo run hash. This will compile, build and run the program in the current terminal/shell. Submit

The Rust Compiler Collection is a collection of compilers for various languages, written with The Rust Programming Language.

rcc The Rust Compiler Collection is a collection of compilers for various languages, written with The Rust Programming Language. Compilers Language Co

Osmon's compiler crate. Programming language made for starter & novice Uzbek audience.

Osmon Tili Osmon bu registrlarga asoslangan virtual mashinalik va yengil dasturlash tili Osmon boshqa o'zbek open source dasturchisi Sukhrob Khakimovn

Compiler & Interpreter for the (rather new and very experimental) Y programming language.

Y Lang Why would anyone build a new (and rather experimental) language with no real world use case. Design Y (pronounced as why) is based on the idea

Compiler frontend for the PureScript programming language.

purescript-analyzer Goals Provide an independent frontend for providing information for IDE tooling, separate from the compiler. Implement a rich edit

The compiler for Gera, a statically typed and garbage collected programming language.

Gera The compiler for Gera, a satically typed and garbage collected programming language. Currently WIP (Work in progress). Progress This is a rough o

high (er) level language and compiler targeting the mindustry logic language

Copper Copper is a high level language and compiler that compiles to mindustry logic. The syntax is similar to rust, with some differences. (these wil

Programming language made by me to learn other people how to make programming languages :3
Programming language made by me to learn other people how to make programming languages :3

Spectra programming language Programming language made for my tutorial videos (my youtube channel): Syntax Declaring a variable: var a = 3; Function

Bell is a work in progress programming language that compiles to MCfunction (Minecraft's language for creating datapacks).

Bell is a work in progress programming language that compiles to MCfunction (Minecraft's language for creating datapacks). It provides a higher level,

tr-lang is a language that aims to bring programming language syntax closer to Turkish.

tr-lang Made with โค๏ธ in ๐Ÿ‡น๐Ÿ‡ท tr-lang is a language that aims to bring programming language syntax closer to Turkish. tr-lang is a stack based language

A repository for showcasing my knowledge of the Rust programming language, and continuing to learn the language.

Learning Rust I started learning the Rust programming language before using GitHub, but increased its usage afterwards. I have found it to be a fast a

Trulang is an interpreted language that is designed to be a simple, easy to learn, and easy to use programming language.

Trulang is an interpreted language that is designed to be a simple, easy to learn, and easy to use programming language.

Owner
mikel
Part of the EHAerospace team. Interested in FOSS, Linux and machine learning.
mikel
An experimental programming language for exploring first class iterators.

An experimental programming language for exploring first class iterators.

Miccah 4 Nov 23, 2021
A formal, politely verbose programming language for building next-gen reliable applications

vfpl Pronounced "Veepl", the f is silent A politely verbose programming language for building next-gen reliable applications Syntax please initialize

VFPL 4 Jun 27, 2022
Cookiecutter templates for Serverless applications using AWS SAM and the Rust programming language.

Cookiecutter SAM template for Lambda functions in Rust This is a Cookiecutter template to create a serverless application based on the Serverless Appl

AWS Samples 24 Nov 11, 2022
Aws-sdk-rust - AWS SDK for the Rust Programming Language

The AWS SDK for Rust This repo contains the new AWS SDK for Rust (the SDK) and its public roadmap. Please Note: The SDK is currently released as a dev

Amazon Web Services - Labs 2k Jan 3, 2023
Programming language just for fun, will kill LUA some day.

Loom Programming language just for fun, will kill LUA some day. Currently development of this language is algorithm driven. I'm trying to implement va

Mateusz Russak 5 Dec 4, 2023
โš™๏ธ Crate to discover embedded programming with uno r3 project

โš™๏ธ Crate to discover embedded programming with uno r3 project

null 0 Feb 3, 2022
Language Integrated Query in Rust.

Linq in Rust Language Integrated Query in Rust (created by declarative macros). Inspired by LINQ in .NET. What's LINQ This project is under developmen

StardustDL 91 Dec 8, 2022
in progress pretty printing calculator language

in progress pretty printing calculator language

Mikail Khan 373 Dec 24, 2022
Rust language bindings for Bitcoin secp256k1 library.

Full documentation rust-secp256k1 rust-secp256k1 is a wrapper around libsecp256k1, a C library by Pieter Wuille for producing ECDSA signatures using t

Rust Bitcoin Community 250 Dec 18, 2022
lipsum-cli is a small terminal application written in Rust language.

lipsum-cli is a small terminal application written in Rust language. It's used for generating pseudo-Latin lorem ipsum filler text in terminal.

Civan YavuzลŸen 5 Nov 28, 2022