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 +).

Quick start

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

include "std.gof"

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 (Partial generics supports, typechecker)
  • Library - By default has support for math, random, network and other libraries

Showcase

Platform support

Gofra currently supports native compilation (no cross-compilation yet). You must compile on the same platform as your target.

  • Full: AArch64 macOS (Darwin)
  • Partial, buggy: x86_64 (Linux)

(Windows x86_64 is must be supported soon, requires contributors)

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!

About

Concatenative (stack based) compiled (native) programming language

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors 3

  •  
  •  
  •