Compiler for the "kaba" programming language
  • C++ 97.8%
  • C 1.3%
  • Shell 0.4%
  • CMake 0.4%
Find a file
Michael Ankele dd7dda41d8
All checks were successful
CMake on multiple platforms / build (Release, clang, clang++, ubuntu-latest) (push) Successful in 1m37s
CMake on multiple platforms / build (Release, gcc, g++, ubuntu-latest) (push) Successful in 1m39s
[ci] forgejo compatibility
2026-06-17 01:35:13 +02:00
.github/workflows [ci] forgejo compatibility 2026-06-17 01:35:13 +02:00
.vs [xmake] cmake/vs2022 added 2024-07-20 15:46:23 +02:00
doc image.Image.Painter -> image.Painter 2025-09-04 00:43:19 +02:00
src mutable unwrap for optional (ref) return 2026-06-08 17:37:24 +02:00
static refactoring: removing redundant ClassFunction attributes 2019-07-18 20:41:49 +02:00
test [test] polymesh test 2026-06-15 11:37:44 +02:00
tools [tools] create-env.sh 2026-05-30 16:30:08 +02:00
.gitignore [modules] ncurses added 2025-06-07 17:06:29 +02:00
.kaba-repo [tools] create-env.sh 2026-05-30 16:30:08 +02:00
CMakeLists.txt [lib/kapi] new kaba package api 2026-05-15 02:12:06 +02:00
CMakePresets.json [xmake] cmake/vs2022 added 2024-07-20 15:46:23 +02:00
README.md [doc] even more documentation 2024-09-10 23:28:22 +02:00
vcpkg-configuration.json [xmake] cmake/vs2022 added 2024-07-20 15:46:23 +02:00
vcpkg.json [xmake] remove obsolete dependencies 2025-07-29 23:01:56 +02:00
xmake.conf [xmake] no desktop file 2025-09-26 16:03:24 +02:00

Kaba

Kaba is a general purpose programming language. The core is a simplified version of c++, with some python-style syntax sugar.

Features:

  • it compiles down to machine code - x86 64/32 bit or aarch64 - binary compatible with c++ (at least g++, clang and msvc)
  • JIT compiler - can be used for plugin systems, interacting with a c++ host program
  • fairly clean syntax - lists, optionals etc. directly integrated into the language
  • some safety features - value semantics - less mutable data by default - guards against usage of null values

This is the stand-alone compiler/execution environment for running scripts/applications.

Syntax

Uses indentation for blocks:

func main()
    print("hi")

Strong typing system, with easy built-in containers:

func f(i: i32) -> i32[]
    return [i,1,2,3]

Some functional ideas:

let x = [1.0, 2.0, 3.0] |> sin
                        |> filter(x => x>0)
                        |> sort

Libraries

  • user interface (gtk backend)
  • OpenGL
  • vulkan
  • threads
  • math (3d linear algebra, fft)
  • networking

For a full reference, see: https://wiki.michi.is-a-geek.org/kaba.reference/

Building