mirror of
https://github.com/odin-lang/Odin.git
synced 2025-12-28 17:04:34 +00:00
2e1e1e6034152fa83a05b7fb47e75eefe758ca62
A fast, concise, readable, pragmatic and open sourced programming language.
The Odin Programming Language
The Odin programming language is fast, concise, readable, pragmatic and open sourced. It is designed with the intent of replacing C with the following goals:
- simplicity
- high performance
- built for modern systems
- joy of programming
- metaprogramming
Website: https://odin.handmade.network/
import "core:fmt.odin"
main :: proc() {
program := "+ + * 😃 - /";
accumulator := 0;
for token in program {
switch token {
case '+': accumulator += 1;
case '-': accumulator -= 1;
case '*': accumulator *= 2;
case '/': accumulator /= 2;
case '😃': accumulator *= accumulator;
case: // Ignore everything else
}
}
fmt.printf("The program \"%s\" calculates the value %d\n",
program, accumulator);
}
Demonstrations:
- First Talk & Demo
- Composition & Refactorability
- Introspection, Modules, and Record Layout
- push_allocator & Minimal Dependency Building
- when, for & procedure overloading
- Context Types, Unexported Entities, Labelled Branches
- Bit Fields, i128 & u128, Syntax Changes
Requirements to build and run
-
Windows
- x86-64
- MSVC 2015 installed (C++11 support)
- LLVM binaries for
opt.exeandllc.exe - Requires MSVC's link.exe as the linker
- run
vcvarsall.batto setup the path
- run
-
MacOS
- x86-64
- LLVM explicitly installed (
brew install llvm) - XCode installed (for the linker)
-
GNU/Linux
- x86-64
- Build tools (ld)
- LLVM installed
- Clang installed (temporary - this is Calling the linker for now)
Warnings
- This is still highly in development and the language's design is quite volatile.
- Syntax is not fixed.
Roadmap
Not in any particular order and not be implemented
- Compile Time Execution (CTE)
- More metaprogramming madness
- Compiler as a library
- AST inspection and modification
- CTE-based build system
- Replace LLVM backend with my own custom backend
- Improve SSA design to accommodate for lowering to a "bytecode"
- SSA optimizations
- Documentation Generator for "Entities"
- Multiple Architecture support
- Debug Information
- pdb format too
- Command Line Tooling
- Compiler Internals:
- Big numbers library
- Multithreading for performance increase
Languages
Odin
75.4%
C++
15.7%
C
8.3%
Python
0.3%
JavaScript
0.2%