Basic features

Memory

  • Variables
  • Pointers
  • Constants
  • Structs
  • unions
  • Enums
  • Registers
  • Sections

Arithmetics

  • '+ - * / >> << !'
  • == != || &&

Control flow

  • code blocks
  • functions
  • If's / else's
  • Loops
  • Pattern matching / jump tables

Keywords

  • jumps
  • breaks
  • returns
  • syscall/ecall
  • nop/ no-operation
  • breakpoint

Assignments

  • variables can be created without initialization
  • Casting
  • operator equals assignments (i += 1;)
  • struct1 = struct2 copy's the data (value instead of reference)
  • &struct1 = &struct2 copys the reference

Tooling

  • One tool. It's dependency manager, compiler, optimizer, linker, analyzer, debugger
  • One configuration file per build configuration: Covers dependecies, architecture, etc.

Proposed example for configuration named bin_arm-cortex_a9-linux-gnueabi :

Debug build, non-optimized, with debug symbols

./lang build bin_arm-cortex_a9-linux-gnueabi

Release build, optimized, debug symbols stripped

./lang build --release bin_arm-cortex_a9-linux-gnueabi

Starts executing the binary inside debugger

./lang debug bin_arm-cortex_a9-linux-gnueabi