Original Git Repo "went bad" so I had to restart.
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);
}