Files
Odin/todo.md
T
gingerBill 7430008fd7 Initial Commit
Original Git Repo "went bad" so I had to restart.
2016-07-07 21:47:33 +01:00

1.7 KiB

Odin Language Features

  • variables
  • constants (compile-time)
  • procedures
    • overloading
    • polymorphic (poly prockets)
    • multiple return values
      • Optional forced checking
    • inline and outline actually meant it!
    • local scoped procedures
      • Maybe closures & lambdas?
    • named parameters
    • optional parameters
  • struct
  • enum
  • raw union
  • tagged union or variants or both?
  • pointers
  • pointer arithmetic
  • defer statement
  • death to headers
    • no pre-declaration
  • maybe both inline assembly and intrinsics
  • using
  • metaprogramming
    • Compile execution
    • Introspection
    • Any type
      • type_of?

Basic Types

bool - true|false - register size or variable size?

u8 - Unsigned integer u16 u32 u64 uint - Register size unsigned integer uintptr - integer big enough to store a pointer

i8 - Signed integer i16 i32 i64 int - Register size signed integer intptr - integer big enough to store a pointer

f32 - Floating Point 32 bit f64 - Floating Point 64 bit

byte - alias for u8 rune - alias for i32

string - Immutable: once created, it is impossible to change the contents of a string arrays - ArrayType = [count]ElementType count = Expression ElementType = Type Allow for dynamic arrays? Allow use slices? pointers - PointerType = *BaseType BaseType = Type

struct enum raw_union tagged_union procedure

Basic program

import "io"

type Vec2: struct { x, y: f32; }

test_proc :: (x, y: f32) -> f32 { result := x * y; result += 2; result /= x; return result; }

main :: () { x : i32 = 123; y := 1337; // Type inference (will be int) z :: x + y; // Defined and made constant

io.print("Hellope, World! z = {}", z);

}