mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-19 04:12:22 -07:00
e1fdd675ce
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)
56 lines
1.7 KiB
Markdown
56 lines
1.7 KiB
Markdown
<img src="logo-slim.png" alt="Odin logo" height="74">
|
|
|
|
# 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
|
|
- [Talk](https://youtu.be/TMCkT-uASaE?t=338)
|
|
- [Demo](https://youtu.be/TMCkT-uASaE?t=1800)
|
|
- [Q&A](https://youtu.be/TMCkT-uASaE?t=5749)
|
|
* [Composition & Refactorability](https://www.youtube.com/watch?v=n1wemZfcbXM)
|
|
* [Introspection, Modules, and Record Layout](https://www.youtube.com/watch?v=UFq8rhWhx4s)
|
|
* [push_allocator & Minimal Dependency Building](https://www.youtube.com/watch?v=f_LGVOAMb78)
|
|
* [when, for, & procedure overloading](https://www.youtube.com/watch?v=OzeOekzyZK8)
|
|
|
|
## Requirements to build and run
|
|
|
|
* Windows
|
|
* x86-64
|
|
* MSVC 2015 installed (C99 support)
|
|
* Requires MSVC's link.exe as the linker
|
|
- run `vcvarsall.bat` to setup the path
|
|
|
|
## 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
|