What? Why?

New language, capable of being used in place of assembly languages.

Why we need a new programming language?

  • Programming in assembly is tough job
    • No conventions, just pure control over registers and memory
    • Results in unlimited variability. Takes a lot of time to get used to someone else's code
    • Context translates poorly, requiring extensive commenting unless split to small pieces

What's wrong with C?

  • C doesn't even cover what is possible with assembly.
  • No control over registers, you need to use inline assembly and you break everything
  • It has preprosessor
  • Header files suck!
  • Null terminated strings!
  • Standard library is just so small
  • Naming conventions... dup() should be duplicate_file_descriptor()

Key design goals

  • Language needs to be simple
  • Debugging works as well as in assembly
  • Can be used in place of assembly
  • Ergonomic for the programmer, a modern language
  • Good dependency management
  • Good standard library (like UTF strings)

Design ideology

  • Static typing
  • No restrictions on what you can do with the hardware due to lossy language abstractions
  • Explicit over implicit. It's a balancing act.
  • Language features directly maps to assembly/machine code. You know beforehand what assembly is going to look like in debug mode.
  • Compiler is your friend, it should warn, but let you do things. You want to reassign a constant? Sure, be careful with the length!
  • Compiler should warn about absolutely everything, unless told specifically to shut up.
  • Verbose enough so you don't need comments