mirror of
https://github.com/odin-lang/Odin.git
synced 2026-01-06 13:07:59 +00:00
Added:
* Dynamic Arrays `[...]Type`
* Dynamic Maps `map[Key]Value`
* Dynamic array and map literals
* Custom struct alignemnt `struct #align 8 { bar: i8 }`
* Allow `_` in numbers
* Variadic `append`
* fmt.sprint*
* Entities prefixes with an underscore do not get exported on imports
* Overloaded `free` for pointers, slices, strings, dynamic arrays, and dynamic maps
* enum types have an implict `names` field, a []string of all the names in that enum
Removed:
* Maybe/option types
* immutable variables
* Remove `type` keyword and other "reserved" keywords
* `compile_assert` and `assert`return the value of the condition for semantic reasons
Changed:
* thread_local -> #thread_local
* #include -> #load
* Files only get checked if they are actually used
* match x in y {} // For type match statements
* Version numbering now starts from 0.1.0 and uses the convention:
- major.minor.patch
Fixes:
* Many fmt.* fixes
To come very Soon™:
* Linux and OS X builds (unofficial ones do exist already)
1.7 KiB
1.7 KiB
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
- designed for good programmers
Demonstrations:
- First Talk & Demo
- Composition & Refactorability
- Introspection, Modules, and Record Layout
- push_allocator & Minimal Dependency Building
- when, for, & procedure overloading
Requirements to build and run
- Windows
- x86-64
- MSVC 2015 installed (C99 support)
- Requires MSVC's link.exe as the linker
- run
vcvarsall.batto setup the path
- run
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