# Sectr Fork This is a fork of the compiler intended for usage with [SectrPrototype](https://github.com/Ed94/SectrPrototype) There were additions made for quality of life reasons: * Added #region, #endregion directives support for editors (I may remove this...) * I added support for 'monlithic packages' or 'uniform-across-subdirectories packages'. It allows me to organize the main package with sub-directories. (Could be flag instead but making it a file flag works well) * Added the ability to debug using statements on structs (fields get dumped to the stack as ptr refs) * They show up as `struct_name::field_name` * Remove implicit assignments for container allocators in the Base and Core packages * I did not enjoy bug hunting a memory corruption because I mistakenly didn't properly initialize a core container with their designated initiatizer: new, make, or init. * Affects the following: * base:runtime/core_builtin.doin:`_reserve_dynamic_array`, `_resize_dynamic_array`, `_shrink_dynamic_array` * base:runtime/core_builtin_soa.odin:`make_soa_aligned`, `_reserve_soa` * base:runtime/default_temp_allocator_arena.odin:`arena_alloc` * base:runtime/dynamic_array_internal.odin:`__dynamic_array_reserve`, `__dynamic_array_shrink` * base:runtime/dynamic_map_internal.odin:`map_reserve_dynamic`, `map_shrink_dynamic` * core:flags/internal_assignment.doin:`set_key_value` * core:mem/tracking_allocator.odin:`tracking_allocator_proc` * core:strings/intern.odin:`_intern_get_entry` * Added debug breaks to the following: * core:cbor/unmarshal.odin:`_unmarshal_map` * core:json/unmarshal.odin:`unmarshal_object` ---

Odin logo
The Data-Oriented Language for Sane Software Development.


# The Odin Programming Language Odin is a general-purpose programming language with distinct typing, built for high performance, modern systems, and built-in data-oriented data types. The Odin Programming Language, the C alternative for the joy of programming. Website: [https://odin-lang.org/](https://odin-lang.org/) ```odin package main import "core:fmt" 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) } ``` ## Documentation #### [Getting Started](https://odin-lang.org/docs/install) Instructions for downloading and installing the Odin compiler and libraries. #### [Nightly Builds](https://odin-lang.org/docs/nightly/) Get the latest nightly builds of Odin. ### Learning Odin #### [Overview of Odin](https://odin-lang.org/docs/overview) An overview of the Odin programming language. #### [Frequently Asked Questions (FAQ)](https://odin-lang.org/docs/faq) Answers to common questions about Odin. #### [Packages](https://pkg.odin-lang.org/) Documentation for all the official packages part of the [core](https://pkg.odin-lang.org/core/) and [vendor](https://pkg.odin-lang.org/vendor/) library collections. #### [Examples](https://github.com/odin-lang/examples) Examples on how to write idiomatic Odin code. Shows how to accomplish specific tasks in Odin, as well as how to use packages from `core` and `vendor`. #### [Odin Documentation](https://odin-lang.org/docs/) Documentation for the Odin language itself. #### [Odin Discord](https://discord.gg/sVBPHEv) Get live support and talk with other Odin programmers on the Odin Discord. ### Articles #### [The Odin Blog](https://odin-lang.org/news/) The official blog of the Odin programming language, featuring announcements, news, and in-depth articles by the Odin team and guests. ## Warnings * The Odin compiler is still in development.