Popular: Data updated October 27, 2026

Categories

Internet1,356
Communication321
Audio & video898
Graphics & design539
Office & productivity1,124
Developer tools3,134
AI tools529
Security & privacy385
System tools3,114
Games523
Education & science239
Network & IT284

Odin Programming Language: all versions and old releases

Odin is a general-purpose programming language with distinct typing built for high performance, modern systems and data-oriented programming.

22 versions of Odin Programming Language are listed here, from March 4, 2024 to the current dev-2026-10. Each one links to the publisher’s own installer files.

2024: 11 11 24 2025: 8 8 25 2026: 3 3 26

22 versions over 3 years · about 8.5 a year

VersionDateSizeFiles
dev-2026-10Latest October 6, 2026 — 64-bit ZIP
Release notes
New Language Features
- [#7664]: Allow bit_set to be backed by arrays of integers
New Compiler Improvements
Speedups
- [#7720]: LLVM Backend Performance Improvements to Reduce Compile Times Part 1
- [#7729]: LLVM Backend Performance Improvements to Reduce Compile Times Part 2
- [#7747]: Compiler Performance Improvements to Reduce Compile Times Part 3
- [#7685]: Complete Parapoly Rewrite + Race condition fixes
- [#7694]: Make global checking codegen order-independent
- [#7686]: Parse integer literals without allocating per digit and reject non digits in their exponent
- [#7739]: Make radlink default linker on Windows
- [#7701]: Multithread The Entire Semantic Checker
- [#7728]: map performance improvements
General fixes and improvements
- [#7654]: Experimental support for cross-linking Windows executables
- [#7788]: Add the new -windows-sdk-root to the odin help build command
- [#7497]: Fix #7488: -vet error in core_builtin_soa.odin when appending multiple empty structs to #soa[dynamic]
- [#7500]: Fix #5851: Detect and error on chained offset_of expressions
- [#7505]: Apply mojibake magic to test runner, too
- [#7509]: Fix #7499: Add ctrl-c handler to run_subprocess
- [#7070]: Fix vendor:ENet.Buffer data/length ordering issue
- [#7524]: Fix alias nullptr ICE
- [#7528]: intrinsics.type_elem_type() added case for Type_FixedCapacityDynamicArray
- [#7531]: Improve error message for constant indexing
- [#7530]: simd_abs codegen improvement + fix for unsigned integers
- [#7545]: Fix #6917: LLVM IR va_arg instruction uses wrong stride for C varargs on Windows
- [#7548]: Fixes simd_approx_recip and simd_approx_recip_sqrt
- [#7549]: Fixes simd_select and simd_runtime_swizzle operand construction
- [#7574]: Fix #7573: Check Enumerations iota fits explicit base type
- [#7570]: Fix #7544: Constant bit_field field access returning zero value
- [#7568]: Fix side_effects vs volatile typo in error message
- [#7561]: Fixes #6888: SIMD gather/scatter and masked load/store randomly crashing the compiler
- [#7550]: Fix syntax error type with -json-errors
- [#7577]: Fix #location in global variable initializers
- [#7582]: Fix #7581: Compiler crash when checking code with swizzled SOA fields
- [#7605]: Fix #7604: Allow building at /
- [#7607]: Fix #7598: Keep entity iteration valid across a scope map rehash
- [#7623]: Add -file suggestion when main is duplicated or package names differ
- [#7628]: Fix quadratic type checking case: don't cache polymorphic record specializations
- [#7631]: Fix record instantiated poly proc on selector when used as a proc value
- [#7629]: Fix #7596 and #7511
- [#7621]: Fixes the attributes of the context parameter in dummy procedures
- [#7641]: Fix field sorting for bit_field literals
- [#7656]: Fix #7609: Emit union constants for non-constantable unions
- [#7658]: Fixes #must_tail on WASM targets
- [#7652]: Fix #6951 and #5214: $ procedure arguments matching the wrong instantiation
- [#7639]: Fix #6302: Broadcasting arrays of matrices and matrices
- [#7661]: Fix #7587: Full length swizzles through a pointer keeping the pointer type
- [#7594]: Fix #7583: -strict-style requires comma before newline after proc parameters which have a default value
- [#7588]: Fix #7427 and #7193: Error on OOB tuple element in compound literals
- [#7668]: Fix #5318: Procedures passed to $ parameters share an instantiation's name
- [#7666]: Add ExactValue_Rational to improve precision on compiler float computation
- [#7602]: Adds lifetime markers for named locals
- [#7674]: Fix #5105 and #5569: Deferred call in short circuits causes LLVM codegen failure
- [#7682]: Fixes the nocapture attribute on LLVM >= 21
- [#7679]: Fix #7477 and #7506: Casts between nested arrays of the same depth
- [#7697]: Fix compound literals of array backed bit_fields
- [#7692]: Disallows the "odin" calling convention with #must_tail
- [#7706]: Fix #7430: Fixed capacity dynamic array literals lose their length
- [#7709]: Fix #7708: Compare a polymorphic record's cons
dev-2026-09 September 1, 2026 — 64-bit ZIP
dev-2026-05 May 4, 2026 — 64-bit ZIP
Release notes
New Language Features
- Native Array Casting Semantics, e.g. cast([4]f32)4x_u32 (PR #6605)
- Increase matrix limit from 16 to 64 elements, allowing for up to matrix[8, 8]T
New Compiler Improvements
- Add -debug default behavior usage docs (PR #6511)
- Fix output of filename when outputting docs with the -in-source-order option (PR #6536)
- Fix #no_bounds_check regression (PR #6541)
- Fix target feature lookup, canonicalize target_features_set (PR #6544)
- Fix (Issue #6344) - Field-first index writes on #soa[dynamic]T and #soa[]T (PR #6539)
- Fix aligned_alloc not defined on Android/Bionic (PR #6519)
- Fix break/continue being allowed in a nested unrolled range loop (PR #6521)
- SROA and simplification passes on -o:minimal (PR #6553)
- Fix array counts for floats that are exactly representable as integers e.g. [1.1e4]int (PR #6583)
- Prevent coredump when child process gets killed by signal (PR #6586)
- Support multiple return values within compound literal elements (PR #6596)
- Fix (Issue #5422) - Make @(rodata) on constants yield "not supported" message (PR #6601)
- Fix (Issue #6594) - Report cycle when assigning variable to itself (PR #6599)
- Fix (Issue #6621) - Report cycle for type_of (PR #6624)
- Removed moribund Essence OS from supported targets (PR #6623)
- Add intrinsics.c_va_* (PR #6629)
- Fix type info not being generated for types only used in []typeid literals (PR #6630)
- Fix compiler warning on Linux (PR #6638)
New Packages
- [core:crypto/noise] Add Noise implementation (PR #6573)
Package Improvements
- [core:os] Add dir procedure (PR #6517, PR #6528)
- [base:runtime] Native simd width (PR #6545)
- [core:os] Fix _volume_name_len to handle paths of purely path separators (PR #6547)
- [core:math/linalg] Faster dot, cross3, floor, ceil, and add trunc (PR #6549)
- [core:math/linalg] More matrix related calls: pseudo_inverse, inverse_lu_decomposition, matrix_inverse_gauss_jordan
- [core:mem/virtual] Fix arena overcommit bug (PR #6552)
- [core:sys/linux] Fix missing argument in adjtimex syscall (PR #6502)
- [vendor:wgpu] Update to v29.0.0.0 (PR #6551)
- [core:sys/freebsd] Add ioctl and stdio FILENO constants (PR #6537)
- [core:nbio] Handle EOF in poll on Posix (PR #6556)
- [core:container/xar] Fix a typo in example (PR #6559)
- [core:testing] Ensure make_* style bounds traps are handled in test runner expect_signal on Windows (PR #6563)
- [core:sys/windows] Add I/O Ring API bindings (PR #6562)
- [vendor:directx/d3d12] Fix D3D12_BARRIER_SUBRESOURCE_RANGE struct (PR #6557)
- [core:testing] Fix stop reason being wrong for OOB on Windows (PR #6570)
- [core:fmt] Remove redundant 'defer bufio.writer_flush' from fprint procs (PR #6567)
- [vendor:zlib] Fix signature of inflateInit_ (PR #6566)
- [vendor:sdl3] Mixer: Removed #by_ptr from args that are valid as nil (PR #6576)
- [core:mem/virtual] Fix map_file usage example (PR #6577)
- [core:mem/virtual] Add address_hint to reserve (PR #6558)
- [core:os] Fix stem on empty path (PR #6579)
- [core:path/filepath] Create wrappers for allocating procedures (PR #6575)
- [core:fmt] Omit value when formatting map[T]struct{} sets (PR #6581)
- [vendor:vulkan] Add version macros (PR #6565)
- [core:sys/windows] Add Registry Association API (PR #6525)
- [core:sys/windows] Fix LockFileEx and UnlockFileEx (PR #6625)
- [core:math/linalg] Fix negated quaternions in angle_from_quaternion (PR #6607)
- [core:sys/linux] Emulate dup2 better on arm64 and riscv (PR #6632)
Full Change Log
Full Changelog: dev-2026-04...dev-2026-05
dev-2025-12 December 2, 2025 — 64-bit ZIP
Release notes
Breaking changes
- BREAKING: Use chacha8rand as the default RNG.
The old default generator is available under core:math/rand in rand_pcg.odin in case you require a seed to return the same sequence as before.
New Language Features
- Introduce #all_or_none for structs, which requires that struct literals have all or none of the fields set
New Compiler Improvements
- Use SIP hash as name canonicalization hash
- Moved checking of -vet-unused-procedures and -vet-packages flags to after all flags are parsed
- Fixes for 32 bit with regards to typeid
- Fix #5894
- Remove #no_copy
- Don't check proc signature similarity for imported Objective-C methods
- Ubuntu arm ci and posix fixes
- Fix allocation of anonymous globals
- Fix #5967: Incorrect stack overflow warning for by ref switches over unions
- Skip collision panic when package names aren't unique
New Packages
- Add vendor:curl
Package Improvements
- Improve docs for stable sort procedures
- Fix: linalg.quaternion_from_forward_and_up
- Clone unquoted strings in encoding/json
- Add missing SetLayeredWindowAttributes
- Add io uring API
- Add FreeLibraryAndExitThread in kernel32. Add EnumProcessModules in psapi
- Fix typo in NS.String_initWithCString
- Remove the Darwin-specific paths from thread_unix
- Fix thread_act_t size
- Fix: make choice_bit_set respect bit_set domain
- math/rand: Add range-based number generation procedures
- Fix is_pointer_internally not handling Named Types
- Faster big.itoa
- Add Xoshiro256 RNG
- Add LockFileEx/UnlockFileEx and related flags
- Fix vendor:stb/image resize alpha_channel parameter type to c.int
- Move some OS General_Error values to io.Error
- Fix out of bounds access when parsing end_pos
- Add WSASendTo and WSARecvFrom
- Update d3d12 bindings for D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT
- Add NSWindow coordinate space conversion bindings
- Don't build log allocator file on freestanding targets
- Adjust docs links for satellite SDL libraries
- Increase base64 decoding table size to 256, preventing out of bounds reads
- vendor/xlib: a few more IM-related procedures and constants
- add math.sign and math.sign_bit overloads for int types
- Implement more Linux syscalls
- Add SIO_UDP_CONNRESET winsock constant
- os2.File_Stream
Other
- Fix up macOS CI
Full Changelog: dev-2025-11...dev-2025-12
dev-2025-11 November 4, 2025 — 64-bit ZIP
Release notes
Licensing Changes
- Change Odin's LICENSE to zlib from BSD 3-clause
New Language Features
- intrinsics.concatenate
- Concatentation of constant slices, strings, and some arrays at compile time
- intrinsics.objc_super & @(objc_superclass=<type>)
New Compiler Improvements
- Objective-C interface improvements
- intrinsics.objc_super and automatically emit objc_msgSend calls where necessary for @(objc_superclass) attribute
- Fix block symbols naming conflict across modules
- LLVM backend fixes
- #simd vector only uses bit cast when elements are not pointers
- Fix bitcasting context pointer to prevent compilation errors on LLVM-14
- Numerous constant union improvements
- Prefer the Type * ver LLVMTypeRef when looking up struct_field_remapping due to lack of uniqueness
- Default parameter exclusion counting improvement for procedure groups
- Improved -target-features flag by allow the user to disable a target feature
- -target-features:-sse,-sse2,-avx
- -export-linked-libs-file:<string> flag to export the linked libraries to a file
- Fix a few compiler hangs on macOS.
- LLVM 21 support for non-Windows platforms
- Fix: #load alignment bug
- set minimum alignment to 16-bytes
- Fix orca linking path
- Add #subtype/using to name canonicalization rules
- Numerous frontend bugs fixed
New Packages
Package Improvements
- More documentation improvements across the core library
- General improvements and more documentation for core:os/os2
- Add inject_at_soa and append_nothing_soa
- vendor:wgpu update to 27.0.2.0
- core:unicode/utf8: Add Grapheme_Iterator
- New slice.sort implementation to allow for better code generation and general API
- Deprecate the C style procedures in strconv (e.g. iota, atoi, etc`)
- WASM: Fix odin.js undefined this.mem
- Fix sRGB <-> linear RGB conversion
- core:encoding/json fixes
- Fix null parsing in certain cases
- core:encoding/cbor: Fix epoch tag with small values
- core:container/rbtree add find_or_insert
- Fix bindings generator for vendor:vulkan for extensions and ~0 style constants
- Disable bounds checking where appropriate for Unicode and UTF-8 procedures
- vendor:fontstash: Fix crash with .TTC files
- core:simd : Fix incorrectly named calls in bit_not
- vendor:sdl3: Add PointInRectFloat
- vendor/egl
- add a few more procedures and constants
- Fix GetPlatformDisplay and CreatePlatformWindowSurface to use int instead of i32
- vendor:box2d
- fixes to bindings mismatches
- Add targetAngle to RevoluteJoint struct/procs
- core:odin/parser
- fixes for end_pos
- parse empty identifiers after selector as a selector expression with an empty field
- core:hash: add CCITT CRC-16
- Make packed conditional on EPoll_Event to match kernel
- core:math/linalg/hlsl: support half types
- core:math/ease: Add inverse ease procedures
- vendor:raylib: add MAX_MATERIAL_MAPS constant
- core:sys/darwin/Foundation: add additional AppKit bindings
- core:text/scanner allow for octal prefix style parsing for C-style ints
Full Changelog: dev-2025-10...dev-2025-11
dev-2025-09 September 8, 2025 — 64-bit ZIP
Release notes
New Language Features
- Native support for UTF-16 strings: string16 and cstring16
- Mostly for interfacing with Windows code, and other foreign code
- Define Integer Division By Zero #5556
New Compiler Improvements
- @(init) and @(fini) must be proc "contextless" ()
- Implement intrinsics.objc_block @harold-b in #5547
- Implements the Apple block ABI.2010.3.16 natively
- Improve deference missing suggestion message
- Do not check for explicit allocators when determining proc in proc group by @janga-perlind in #5564
- Skip errors on polymorphic procs when in a proc group with other options
- Fix compiler segfault when trying to use proc at type level or trying to use () as a type
New Packages
Package Improvements
- Fixes to vendor:darwin/Metal
- Numerous minor fixes to base:runtime
- Improvements to base:runtime docs
- Fixes to vendor:wasm/WebGL bindings
- Cleanup in math/rand and runtime/random_generator
- Add missing xlib functions for getting and setting text properties
- vendor:OpenGL fix misnamed parameter by
- Make D3D12_FEATURE_DATA_D3D12_OPTIONS.MinPrecisionSupport a bitset
- Fix buddy allocator assert
- Check for EOF when scanning file tags
- Fix stride in memory_equal/compare_zero giving false positves
- Split SDL_ttf bindings to group with and without require_results
- Propogate #caller_location to core:container/queue procs
- Support using allocator resize in _reserve_soa
- Zero existing memory when using resize_soa
- Add add/remove_document_event_listener() to core:sys/wasm/js
- Fixed and added obj-c methods for NSWindow
- fix typo in CLSIDFromProgIDEx signature
- Fix broken wglUseFontBitmaps binding
- Add LPFN_GETACCEPTEXSOCKADDRS to ws2_32.odin
- Specify %m and %M as verbs for integer formatting in core:fmt
- Add @(require_results) attribute to procs returning an allocator
- Handle allocator error when appending in read_entire_file_from_file
- vendor:box2d fix CreateMotorJoint procedure signature
- Add build tags to posix/spawn.odin
Full Changelog: dev-2025-08...dev-2025-09
dev-2025-08 August 20, 2025 — 64-bit ZIP
dev-2025-06 June 14, 2025 — 64-bit ZIP
dev-2025-03 March 5, 2025 — 64-bit ZIP
Release notes
## New Language Features
-

## New Compiler Improvements

- Name Canonicalization
- Deterministic Name Mangling Rules for Symbols (Procedures, Variables, Debug Types, etc)
- typeid layout change
- Always 8-bytes in size
- Represents a hash of the canonical name for the type
- Improved generation times for odin doc
- Allow -show-timings for odin doc
- Very minor parser improvements to catch weird edges cases
- intrinsics.simd_extract_msbs
- intrinsics.simd_extract_lsbs
- for x in bit_set will use a count leading zeros intrinsics internally rather than checking each bit manually
- General bug fixes for LLVM backend

## New Packages

- vendor:sdl3/image

## Package Improvements

- Update vendor:wgpu to v24
- Improved documentation for core:simd
- Minor fixes to SDL3 bindings
- Support use of * in format strings without an index
- NS.SavePanel_URL fix
- Support %b for rune
- os2 fixes
- Recursive directory walker
- Fix race conditions on Linux
- os2.random_string to use context.random_generator
dev-2025-02 February 11, 2025 — 64-bit ZIP
Release notes
New Language Features
- Support #unroll(N) for with arrays
Compiler Improvements
- Enable -use-separate-module as default for all platforms (except wasm based ones)
- General Bug Fixes
- Remove erroneous warnings regarding stack overflow in range loops "by reference"
- Allow broadcasting of untyped values to #simd arrays
- Improvements to -obfuscate-source-code-locations
- Remove duplicates of .framework/.dynlib/.so in linker
- Darwin: Sort frameworks to link first
New Packages
- vendor:sdl3 (3.2.2)
- vendor:windows/GameInput
Package Improvements
- Improvements to D3D12 package
- Improvements for Haiku
- Add missing procedures to GLFW
- runtime.map_entry
- XInput bindings for core:sys/windows
- More work on core:os/os2 development
- More Objective-C bindings
- Additional bindings and constants for core:sys/windows
- mem.Tracking_Allocator defaults to panicking on bad frees
dev-2025-01 January 13, 2025 — 64-bit ZIP
Release notes
New Language Features
- `#+feature dynamic-literals`
- All dynamic literals (maps and dynamic arrays) are disallowed by default to remove implicit allocations from Odin
- If the user wants to allow this, it can be enabled on a per-file basis by adding the above "build tag"
- Dynamic literals like the following:
- `[dynamic]int{1, 4, 9, 16}`
- `map[string]int{"Apple" = 759, "Pear" = 128, "Gorilla" = 533}`

Compiler Improvements
- `ensure`/`ensure_contextless`
- Identical to `assert`/`assert_contextless` but is not removed with `-disable-assert`
- Remove viral `#force_inline` and `#force_no_inline`
- Declaring a procedure with these tags would previously virally apply them to procedures called inside the subject procedure too, it now just affects the procedure it is applied to
- Fix bug with comparisons with big endian types
- Improve zeroing rules for `resize_dynamic_array`
- Add implicit broadcasting for `#simd` arrays
- `map_entry` ([Docs](https://pkg.odin-lang.org/base/builtin/#map_entry))

New Packages
N/A

Package Improvements
- Fixes to `vendor:raylib`
- Fixes to foreign imports after update to 5.5
- Allow for custom WASM link libraries
- Allow custom WASM link libraries for `vendor:box2d`
- Add trunc to `core:math/linalg/glsl`
- Improvements to `core:encoding/base32`
- Update `vendor:cgltf` to 1.14
- Add xinput bindings to `core:sys/windows`
- Fix to matrix adjugate procedure
dev-2024-12 December 6, 2024 — 64-bit ZIP
Release notes
New Language Features
N/A

Compiler Improvements
- Fix windows args parser problem from issue https://github.com/odin-lang/Odin/pull/4393.
- Suggestion when assigning `enum` to `bit_set`.
- Suggest `-microarch:native` if `popcnt` instruction is missing.
- List the supported targets using `odin build . -targets:?`.
- Fix: `build_odin.sh` always runs demo regardless of argument.
- Report error when builtin `min`/`max` has only one numeric parameter.
- Add which to `shell.nix` to build with `--pure`.
- Only error with `-vet-cast` when it is actually castable.
- Fix https://github.com/odin-lang/Odin/pull/4508 for `abs`, `min`, `max`.
- Rework macos version retrieval for `odin report`.
- Updated NetBSD CI to pkgsrc Q3 release.
- Check `type_expr` in `check_procedure_param_polymorphic_type`.
- Add support for LLVM v19
- Fix PowerShell version incompatibility in `build.bat` by adding `misc\get-date.c` utility.

New Packages
N/A

Package Improvements
- Update `vendor:raylib` to v5.5.
- Add `vendor:raylib` aliases for `Is*Ready` -> `Is*Valid`.
- Add new test, better fail-check, and non-transitioning tz fix.
- Fix random sequence bindings in `vendor:raylib`.
- Added Unlinking Section to Posix Socket Binding Documentation.
- Update `scanner.odin`.
- Fix relative links in `examples/README.md`.
- Correct `zlib` usage in doc.
- Add `core:slice.size`.
- reflect: add `enum_value_has_name` proc.
- Increased the size of Javascript keyboard event key/code buffer size.
- Add NSApplication bindings for `mainWindow` and `keyWindow`.
- Add `STICKYKEYS`, `TOGGLEKEYS`, and `FILTERKEYS` to `core:sys/windows`.
- Implemented inotify in `core:sys/linux`.
- Fix integer type in `UXTheme` bindings.
- `os2`: fix leak in `dir_windows`, fix netbsd, and add a test for dir reading.
- [runtime] `make(map[K]V)` should not allocate any capacity.
- Fix typo in the Quaternion dot product implementation.
- Fix `https://github.com/odin-lang/Odin/pull/config` typo in Lua bindings.
- Parsing fix for timezones that have an uneven number of utc / st tags.
- Fix https://github.com/odin-lang/Odin/pull/4509
- Fix unhandled `unmarshal` error.
- Rework macos version retrieval for `core:sys/info`.
- `core:net`: Fix `DNS_RECORD.Data` alignment error on Windows i386.
- Fix math binomial proc giving wrong result.
- Make `O_RDONLY` default for `os.open` on all platforms.
- `core:dynlib`: Unload library before loading again & add `LIBRARY_FILE_EXTENSION` constant.
- Correct handling newlines between build tags in `core:odin`.
- Pass allocator to implicitly (de)allocating procs in `core:log`.
- Use a proper `Queue` in `core:thread.Pool`
- Fix `core:text/regex`'s `match_with_preallocated_capture` returning `num_groups`.
- Add `linalg.clamp_length(vector, max_length) -> clamped_vector`.
- Improve `strings.index_multi`.
- Add regression test for https://github.com/odin-lang/Odin/pull/4553.
- `core:encoding/json`: Move struct field zipping outside of loop.
dev-2024-11 November 7, 2024 — 64-bit ZIP
Release notes
New Language Features
-

Compiler Improvements
- General bug fixes
- Fix 128-bit ABI issues caused by LLVM changes
- Fix `#load_directory` containing directories
- Add warning for `unsigned >= 0` like conditions in a `for` loop

New Packages
- `core:time/timezone`

Package Improvements
- Numerous bug fixes
- `core:sys/posix` Linux Support
- Improvements to `core:sys/darwin`
- Add missing bindings to `rlgl`
- `rand.choice_bit_set`
- `slice.to_type`
- Improvements to `js` target APIs
dev-2024-10 October 1, 2024 — 64-bit ZIP
Release notes
New Language Features
- Replace `//+` syntax with `#+`
- Used in cases like `#+build windows`
- `#min_field_align` and `#max_field_align`
- deprecate `#field_align` in favour of `#min_field_align`
- `#max_field_align` used in places where `#pragma pack` was used in some C compilers
- `#caller_expression`

Compiler Improvements
- *ABI BREAKING CHANGE*: How SysV handles multiple return values
- Matches the same behaviour as other platforms to pass multiple return values separately
- Fix ABI for 128-bit integers since the breaking changes in LLVM 18 for WASM and AMD64
- `-vet-packages:<command-separated-string_array>`
- `-vet-unused-procedures`
- Add `-no-rpath`
- Simplify `#row_major` and `matrix_flatten` behaviour
- Allow `transmute(Bit_Set)~T(0)`
- Move many of the `vendor:wasm/js` package to `core:sys/wasm/js`
- Rename `runtime.js` to `odin.js` to be consistent

New Packages
- -

Package Improvements
- General improvement to documentation across the `core` library
- `core:sys/info`: more CPU feature detection for RISC-V
- `core:time` `time.time_to_datetime`
- Add `#any_int` directive to built-in procedures that were missing it, to be consistent
- More Objective-C Runtime Bindings
- Improvements to `core:container/bit_array`
- Improvements to C vararg behaviour and definitions and `va_list`
- Improvements to atomic/sync/thread related operations
- Improvements to `core:sync/chan`
dev-2024-09 September 2, 2024 — 64-bit ZIP
Release notes
New Language Features
- Add support for linux_riscv64 and freestanding_riscv64

Compiler Improvements
- Support RISC-V for the compiler itself
- Fix crash if referencing import "aliased" in other file
- Added a hint at end of `build.bat` about release mode when building in debug mode
- Allow symlink test to work irrespective of git settings
- Use another BSD URL for pkgsrc on CI
- Fix type switching over internal pointer union
- Fix c_vararg bit_set
- Add table-driven (in)definite article to some errors.
- Fix alias handling of procedures
- riscv: add an error when atomics are used without the atomics extension
- Remove extra format item at end of `context` error message
- Fix inline transmutation of `[16]i8` to `i128`
- Fix 'odin [run|test] --' giving a compiler out of bounds
- UL_COMPARE_AND_WAIT_SHARED is macOS 10.15+
- query brew for llvm-config location if possible

New Packages
- Add `vendor:box2d`
- Add `core:text/regex`

Package Improvements
- Add `sdl2glue` to `vendor:wgpu` package
- Fix os.read_dir with symlinks
- `os.Error` to replace `os.Errno`
- `core:image/common.odin` Fixes
- Prevent `SIGPIPE` on Darwin when writing to a closed `core:net` socket
- Add `reflect.struct_field_count` that returns the number of fields in a struct type
- Fix missing closing brace for Bit_Field in `core:odin/parser`
- Fix SIMD intrinsics wording
- Core sys windows rawinput code
- Port `core:net` to FreeBSD
- Allow testing for intentional leaks in test runner
- Various `core:encoding/cbor` fixes
- Various `core:crypto` improvements
- Vectorize `index_byte`
- Use `intrinsics.reverse_bits` in `core:compress/zlib`
- Fix `type_info_union_is_pure_maybe` only working with regular pointers
- Add support for field tags on bit_field fields to `core:odin`
- Loop `os.write_entire_file` to write more than MAX_RW
- [fmt] Add bit fields to the pointer printing logic
- Fix `os.read_dir` closing the given file descriptor
- Fix type hint propagation for shift
- Let memory failures be errors in the test runner
- Check if procedure parameter type declares polymorphic args
- `vendor:x11`: Added a few procedures for xrandr, xinput, and xFixes
- `vendor:egl`: Added a few more egl procedures and constants
- `core:time` WASI implementation
- `core:sys/linux`: Add binding to ioctl syscall + standard fd constants.
- Update mem doc example formatting
- Error if assigning to `rodata` variable with index
- Report error when a variadic procedure parameter has a default value
- `core:sys/posix` and `core:os/os2` based on it (for darwin, netbsd, freebsd and openbsd)
- Fix error handling in os2.read_entire_file_from_file()
- add shm_open and shm_unlink syscalls for darwin
- More Foundation bindings.
- Add autogenerated orca bindings and macros from laytan
- os2 process linux implementation
- Improve benchmarks.
- Check if file open-mode is `O_CREATE` on Darwin before forcing chmod
- Fix `open` bindings
- Fix log unnecessary allocations
- (raygui) Restores vertical text alignment broken after 4.0 migration
- Implement `lshrti3` on wasm
- Add `core:math.count_digits_of_base`
- Remove deprecated `log` procs from `core:testing`
- Fix SIMD var typo
- Fix wiki link in the `README.md`
- Add support for Linux on os/sys/posix termios.
- A couple of foundation binding. Vet tabs.
- core:sys/linux - implement clock_settime, clock_getres and clock_nanosleep
- os2: process API for Darwin and most of it for BSDs
- orca: implement `core:time` and `core:log`
- Fix ambiguous generic type names
- Added missing slice advancing.
- Fix binding: Make `rl.LoadImageAnim` take a pointer instead of a multi-pointer.
- Fix `core:reflect/iterator.odin`
- Fix binding to cmark_node_get_fence_info
- Fix win32 dwmapi DWMWINDOWATTRIBUTE enum.
- os2: propagate errors from execv
- Free the arenas allocated in `test_core_runtime`
- Fix use-after-free in `thread.Pool`
- Fix error for uuid to require 36 bytes instead 32 (4 bytes for dashes)
- Fix `-vet` and `-strict-style` failures in tests
- [os2/process]: 
dev-2024-08 August 2, 2024 — 64-bit ZIP
Release notes
New Language Features

Compiler Improvements
- Update to LLVM 18.1.8
- Force compiler source to be parsed as UTF-8 (Windows)
- Improve various compiler-internal asserts
- Fix `#soa` assignment bug
- Add error for `type_of(value of untyped type)`
- Remove `*_test.odin`; always compile it for all targets
- Add `-print-linker-flags`
- Allow `x :: y when cond else proc(...){...}`
- Allow using a precompiled Windows resource file with `-resource:foo.res`
- Fix problem where the initial package's directory name ended in .odin
- Fix check for whether executable output path is a directory

New Packages

Package Improvements
- Add bindings for WOW64 API
- Improve `os.open` for WASI
- Support `vendor:stb/truetype` and `vendor:fontstash` on WASM
- Fix linker errors with empty project for `vendor:wgpu`
- Fix SDL constants
- Fix alignment bug in `mem.dynamic_pool` and add tests for it
- Fix `reflect.as_pointer`
- Remove implicit allocator usage in `core:dynlib`
- Fix `utf8_to_wstring` given zero bytes.
- Add `setenv` and `unsetenv` for Darwin
- Improve `core:encoding/cbor`
- Remove syscall usage on Darwin to comply with Apple guidelines
- Add some XKB extension procedures and constants to `vendor:x11`
- Fix `@(optimization_mode)` usage in builtin collections
- Add synonyms `strings.starts_with` and `strings.ends_with` as aliases
- Allow overriding random generator in `rand` calls
- Add documentation and example for `core:container/intrusive/list`
- Update stb_truetype.odin
- Add support of `ignore` tag for `json.marshal`
- Allow json maps with int keys in `marshal` and `unmarshal`
- Add Intel AES-NI support to `core:crypto/aes`
- Improve `rand.shuffle`
- Fix leak in `core:encoding/ini` and add tests for it
- Document `core:time`, `core:time/datetime`, `core:thread` and `core:sync`
- Add example and tests for `vendor:lua`
- Many `core:sys/windows` improvements
- Add json reporting to `core:testing`
- Add `time.to_string*` formatters.
- Clamp `dot` in `linalg.angle_between` to avoid precision errors.
- Update RayGui procedures
dev-2024-07 July 1, 2024 — 64-bit ZIP
Release notes
New Language Features
- Allow for constant strings in `foreign import`s
- `#exists(<string>) -> bool`
- `@(rodata)`
- `context.random_generator`
- Brand new `runtime.Random_Generator` interface

Compiler Improvements
- Brand new Multithreaded Test Runner
- https://github.com/odin-lang/Odin/pull/3646
- Improvements to error line rendering
- Full support for Unicode grapheme clusters
- NetBSD ARM64 support
- `-show-defineables` and `-export-defineables`
- `-vet-cast`
- Looks for redundant `casts` or `transmute`s, and `transmute`s that should be `cast`s
- `-strict-style` now enforces a lot more regarding the official Odin code base style
- `-vet-style` is a much weaker form that does not have all of the same enforced options as `-strict-style`
- Enforces `-vet-cast`
- Enforces `case` statements to be in the same column as their `switch` token
- Enforces 1TBS style
- `-vet-tabs`
- Enforces tabs to be used for indentation with statements/declarations
- `-custom-attribute:<string>`
- `-custom-attribute:attr1`
- `-custom-attribute:attr1,attr2`
- `-custom-attribute:attr1 -custom-attribute:attr2`
- Improve parsing for `label: #reverse for` and `label: #partial switch`
- Allow `#soa` arrays to be used directly with `make`, `reserve`, `append`, etc.
- `intrinsics.procedure_of(call(...))`
- `intrinsics.syscall_bsd`
- Fixes to debug information generation for LLVM < 13
- Add `#directory` (complements `#file`)
- Remove `@(warning)` and `#warning`
- Allow `- constant_array`
- Support `@(extra_linker_flags)` on WASM targets
- Use `f32` operations when doing `complex32` and `quaternion64` operations to improve accuracy and performance
- Allow for `when x in y {` (minor oversight in syntax)
- Keep `bit_field` accesses happy with `-santitize:address`
- Fix for `bit_set[$T]` not setting the bounds correctly (https://github.com/odin-lang/Odin/pull/3842)
- `intrinsics.type_struct_has_implicit_padding`
- Remove quite a few possible race conditions in the compiler
- Numerous big fixes

New Packages
- `vendor:wgpu` (WebGPU)
- https://github.com/odin-lang/Odin/commit/108b8feb357dab8b3faf788c382406567bd99d33
- `core:flags`
- https://github.com/odin-lang/Odin/commit/edb685f04be9aef407dc8abac7bb76fb51184f9f
- `core:encoding/uuid`
- https://github.com/odin-lang/Odin/commit/4824050c999542d6ae4bd7f67f301a6694dcd556
- `core:mem/tlsf`
- "Two-Level Segregated Fit" memory allocator
- `core:image/bmp`
- https://github.com/odin-lang/Odin/pull/3609

Package Improvements
- `core:text/table` now supports Unicode grapheme clusters correctly
- `core:math/rand` now uses the new `context.random_generator` interface instead of the implementation specific `rand.Rand`
- `core:crypto` has a Random_Generator interface for entropic cryptographic random number generators
- Improvements to `core:strconv`
- Support complex/quaternion parsing
- Partial parsing of infinity
- Improvements to `vendor:raylib` declarations
- Move `rlgl` to `vendor:raylib/rlgl`
- Fixes to `core:math/big` and add numerous other utility procedures
- Fix code generation for `vendor:vulkan` on `^[3]f32` parameters
- Numerous improvements to `core:odin/parser`
- Make `runtime.heap_alloc` et al `"contextless"`
- Add `#no_broadcast` to `append_soa` calls
- Add `no_zero_*` variants for `#soa` dynamic arrays
- More test suites
dev-2024-06 June 4, 2024 — 64-bit ZIP
Release notes
New Language Features
- `intrinsics.type_is_matrix_row_major` + `intrinsics.type_is_matrix_column_major`
- `#hash(<string>[, algo])`
- `@(link_suffix=<string>)`

Compiler Improvements
- New NetBSD target support
- Experimental `orca_wasm32` target support
- Documentation tests fixed and re-enabled
- Fix `>=` for strings, add test for string comparisons
- Suggest `-all-packages` if testing an empty directory
- `core:intrinsics` -> `base:intrinsics`
- `..` range is now an error. Use `..<` or `..=`
- Reimplement `-build-mode:static` / `-build-mode:lib`
- Strictly enforce `switch &x in y` semantics and fix `for &v in &fixed_array`
- Fix `intrinsics.ptr_sub`
- Fix indexing type when using a `#row_major matrix`
- Remove constant indexing for `matrix` value propagation
- Improve error messages and their suggestions
- Delay checking `foreign import` paths until the global scope is checked

New Packages
- `core:container/rbtree`
- `core:encoding/ini`
- `core:crypto/aes`

Package Improvements
- Fix some edge cases and oversights for `bit_field`
- Fix `read_directory` skipping directories on Unix-likes
- Add default heap/general purpose allocator for WASM
- Fix and improve `i18n` .mo plurals
- Correctly load/store uint & int for wasm64p32
- Fix bug in `QOI` encoder + decoder
- Fix the way `%32b` and other prefixed numbers are written`
- Improve `fmt` parsing of struct field tags
- `vendor:microui` gained textbox selection, cut, copy and paste
- Add a custom iterator to `CSV` package.
- Allow space as allowed separator to RFC 3339 parser
- Add abbreviated ISO 8601 parser
- Lots and lots of bugfixes

Packages deprecated
- `core:odin/printer` and `core:odin/format` have been removed in favor of using OLS

Full Changelog: https://github.com/odin-lang/Odin/compare/dev-2024-04a...dev-2024-05
dev-2024-05 May 10, 2024 — 64-bit ZIP
Release notes
New Language Features
-

Compiler Improvements
- `odin root` command
- Normalize `ODIN_ROOT` path
- Improvements to arm64 ABI for returning 0 sized types
- Allow compiling with LLVM 18 (non-Windows targets)
- Fix linking with clang-18
- Fix wrote llvm-config in build script for FreeBSD
- Change layout of compiler (not language) hash maps for minor performance improvements
- Numerous improvements to catch the possible race conditions with the new error reporting system
- Allow `-default-to-nil-allocator` on wasm targets
- Allow `@(init) procs to be `@(disabled)`
- Performance improvements for access and storing fields from a `bit_field` type
- Minimally support compiling Odin on FreeBSD arm64
- Improved target feature support
- Improved `-microarch` support with list of possible micro-architectures.=
New Packages
- `core:sys/darwin/CoreFoundation`
- `core:sys/darwin/Security`
- `core:encoding/cbor`

Package Improvements
- General bug fixes
- General documentation improvement (typos and `doc.odin` fixes)
- core:net Add support for URL fragments
- Fix `big.internal_random_prime` with `Second_MSB_On`
- Fix `vendor:d3d12` calling convention mistakes
- Fix to Fisher-Yates shuffle in `core:rand`
- Fix `core:text/i18n` default `number` value in `get_*_section`
- Fix `#soa` `%#v` formatting
- Fix `%e` formatting
- Fix `%[N].*[M]v` style formatting
- Improvements to `Negative_Read/Negative_Write` logic for `core:io`
- Fix `omitempty` in `json.marshal`
- Improved statistics for `core:mem/Tracking_Allocator`
- Require results for non-buffered `print` procs
- `core:sys/info`: add arm feature detection, fix Linux implementation, show more CPU info on Darwin
- Fix vendor dynamic libraries not working on Linux
- Fixes to `core:encoding/json` invalid JSON when an error does not have a position
- Add `slice.enum_slice_to_bitset` & `slice.bitset_to_enum_slice`
- Add DXGI 1.5 & 1.6 APIs
- Update d3d12 API
- Refactor `fmt.wprintf`
- Fix `core:odin/parser` crashing on empty and/or no package files

Full Changelog: https://github.com/odin-lang/Odin/compare/dev-2024-04a...dev-2024-05
dev-2024-04a April 11, 2024 — 64-bit ZIP
Release notes
Minor Update from dev-2024-04
For the full release notes of dev-2024-04, see its release (https://github.com/odin-lang/Odin/releases/tag/dev-2024-04)

New Language Features
-

Compiler Improvements
- nasm check fixes
- Keep `-vet` happy
- Fix `bit_field` access on implicit dereference
- Fix typos in error messages
- Improve and fix numerous warnings

New Packages
-

Package Improvements
- Add `bit_field` to `core:odin`
- core/crypto: Even more improvments by @Yawning in https://github.com/odin-lang/Odin/pull/3288

Full Changelog: https://github.com/odin-lang/Odin/compare/dev-2024-04...dev-2024-04a
dev-2024-04 April 8, 2024 — 64-bit ZIP
Release notes
New Language Features
- `bit_field` type
```
Foo :: bit_field u16 { // backing type must be an integer or array of integers
x: i32 | 3, // signed integers will be signed extended on use
y: u16 | 2 + 3, // general expressions
z: My_Enum | foo.SOME_CONSTANT, // ability to define the bit-width elsewhere
w: bool | foo.SOME_CONSTANT > 10 ? 2 : 1,
}
```
```
Handle :: bit_field u32 {
slot: u32 | 16,
generation: u32 | 15,
in_use: bool | 1,
}
```
- `name: type | bit_width`
- `name: type | bit_width "field_tag"` (similar to a struct field with a tag)

Compiler Improvements
- Improved Error Reporting System
- Sorted printing based on error position
- Ability to export error list to json `-json-errors`
- `-terse-errors` are only a single line now
- Error message suggestions for people making common C mistakes
- Aiding newcomers from C/C++ to Odin
- Loads of debug info refactors and improvements
- Add Haiku OS support by @avanspector in https://github.com/odin-lang/Odin/pull/3230
- Respect "smart linker" approaches
- Respect `-lld` on non-Windows machines
- Remove entry point when compiled with no-entry-point as shared library
- Numerous fixes to wasm targets
- Numerous fixes to ARM64 ABI on Darwin
- Numerous fixes to SysV AMD64 ABI on Darwin and Linux
- Speed up `path_to_fullpath` on Linux/macOS
- Numerous compiler fixes and error messages

New Packages
- Moved `vendor:darwin/Foundation` to `core:sys/darwin/Foundation`

Package Improvements
- Improvements to `core:crypto`
- Make raylib and stb_rect_pack be free of libc
- Numerous improvements to `core:encoding/json`
- Support writing enum value names
- Support for `using _: T` fields
- Fixes to `core:math/big`
- Fixes to `core:math/linalg`
- Fixes to `core:slice`
- Fixes to `core:odin/parser`
- General fixes to `base:runtime`
- `vendor:x11` fixes
- Allow for the new futex API on darwin platforms if it is available
- Fix `os.read_entire_file` for pipes and console

CI Improvements
- Update LLVM to 17 for the CI/Releases

Full Changelog: https://github.com/odin-lang/Odin/compare/dev-2024-03...dev-2024-04
dev-2024-03 March 4, 2024 — 64-bit ZIP
Release notes
Distribution Changes
- MacOS ARM releases and CI support
- MacOS releases self-contained / bundle LLVM

New Language Features
-

Compiler Improvements
- General bug fixes in the compiler
- Fix `-no-crt` on Darwin and Linux
- Make `odin run` args take the first '--' as the start of the args, instead of the last '--'
- Fix intstrumentation in debug mode
- Add backend info to `odin report`
- Change `runtime.type_table` to allow RTTI to be constantly initialized on all platforms
- Removes the need for the start procedure initializing the RTTI table
- Previous approach was due to limitations and bugs in LLVM
- Promote types in `#c_varargs` according to C rules
- Reduce dynamic library dependencies on macOS
- We were previously linking with LLVM-C, LLVM, and libunwind, however only LLVM was needed since it contains LLVM-C, and libunwind comes with macOS already

New Packages
- `core:crypto/hash`
- General refactor of the cryptographic packages
- `core:container/avl`
- AVL Tree Container

Package Improvements
- `fmt.*printfln` add to `core:fmt`
- Fixes to the WebGL package
- General improvements to package os for *nix platforms
- Numerous documentation improvements
- Fixes to `core:mem/virtual` `arena_static_reset_to`
- Make spall able to be used in instrumentation procedures
- Expose `vendor:OpenGL` shader procedures in
- Add more Windows window procedures
- Fix `return` in json unmarshal for enumerated arrays
- Add `ID3DUserDefinedAnnotation` to direct3d package
- Update miniaudio to 0.11.21
- Change `vendor:raylib` to use non-universal binaries
- Fix `vendor:raylib`'s ModelAnimation alignment to match that of C's
- Better error code for binding a privileged port without root access in `core:net`
- `vendor:glfw` add `RawMouseMotionSupported`
- Basic EGL support on Linux
- Improved implementation of `core:math` round

Full Changelog: https://github.com/odin-lang/Odin/compare/dev-2024-02...dev-2024-03

Most popular in Languages & SDKs

See all
  1. Go Programming LanguageAn open source programming language that makes it simple to build secure, scalable systems.
  2. LLVMA collection of modular and reusable compiler and toolchain technologies.
  3. DenoA modern runtime for JavaScript and TypeScript
  4. CMakeCMake is a cross-platform, open-source build system generator.
  5. YarnYarn is a package manager that doubles down as project manager. Whether you work on one-shot projects or large monorepos, as a hobbyist or an enterprise user, we've got you covered.
  6. CcacheCcache is a compiler cache. It speeds up recompilation by caching previous compilations and detecting when the same compilation is being done again.
  7. sbtA build tool for Scala, Java, and more
  8. BOINCOpen-source software for volunteer computing and grid computing.
  9. Dart SDKA set of tools and libraries for the Dart programming language.
  10. NVM for WindowsA node.js version management utility for Windows. Ironically written in Go.

Tags

Share