Skip to content

kirillzhosul/gofra

Repository files navigation

Gofra [beta]

A Stack-based compiled programming language.

The project is made not for competing with other languages, rather it is another incomplete language almost same like others.

Compiler Testkit



Overview

Gofra is a concatenative (stack-based) programming language that compiles to native code. Programs are written using Reverse Polish notation, where operations follow their operands (e.g 2 + 2 is 2 2 +).

Pong Example Screenshot

Quick start

Here's a simple "Hello, World!" example:

include "std"

func void main
    "Hello, World!" println
end

Features

  • Native - Compiles to native machine code
  • C-like - Close to C, but has a few more high-level abstraction (for in, type generics)
  • C FFI - Seamless integration with C-FFI libraries
  • Low-level - Write unsafe, low-level code with direct memory access
  • Type System - Validate types at compile time, has compile-time warnings (Generics supports, typechecker)
  • Library - By default has support for math, random, network and other libraries
  • First class functions - Has support, and lambda definitions (no closures/capturing yet)

More complex examples

#include "std"

// Print each array element
var xs = ["Hello", " ", "world!", "\n"]

func void main[]
    for x in xs do
        x ?> print
    end
end

Showcase

Platform Support

ARCH OS Support Tested hardware
Aarch64 Darwin ✅* M1, MacOS Tahoe 26.1
WASM - ❗** Node.js v22, Safari
x86_64 Linux ❗**
ARCH OS Support Tested hardware
Aarch64 Windows
Aarch64 Linux
x86_64 Darwin
x86_64 Windows ‼️***

* Main workflow of development, has all features
** Incomplete, has bugs and not all features
*** Windows x86_64 is not implemented, but has general wrappers for system calls and possibly can be compiled with some headache

Pre requirements

Before installing Gofra, ensure you have the following tools available system-wide:

  • Python >3.12.x
  • GNU/Mach-O Linker (ld) - For linking compiled objects
  • Assembler (as) - Typically included with Clang LLVM compiler

Installation

For full installation steps, please visit Installation page.

Gofra is distributed as single Python-based toolchain. To install:

(Step 1): Install toolchain

pip install gofra

(Step 2): Verify Installation

gofra --help

More information and next steps

Please refer to actual documentation!

Releases

No releases published

Contributors

Languages