8000 Releases Β· odin-lang/Odin Β· GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Releases: odin-lang/Odin 8000

dev-2025-06

02 Jun 11:18
cd1f66e
Compare
Choose a tag to compare

New Language Features

New Compiler Improvements

  • Improvements to building with Android
  • Add more asan support to the odin runtime and sanitizing for various allocators
  • Fix to compile-time and variable NaN comparisons
  • Fix to syscalls on NetBSD ARM64
  • Fix Darwin version reporting on older macOS versions
  • General compiler bug fixes
  • intrinsics.type_elem_type(simd_vector)
  • Fix Global/Static Variable Alignment
  • Fixes assigning null as a type if it's an alias but the base type is null
  • @(no_sanitize_address)
  • Support Objective-C class implementation
  • Add debug info for labels to Odin
  • intrinsics.type_integer_to_unsigned and intrinsics.type_integer_to_signed
  • Use --sysroot instead of -Wl,-syslibroot on Darwin
  • Fix global and static any usage
  • Re-enable static map calls on AMD64 SysV due to ABI fixes
  • Make odin help more precise
  • -dynamic-literals
  • Do not call disabled deferred procedures
  • Add /usr/local/lib to FreeBSD linker path
  • Add error with a suggestion when trying to extract an element from a #simd array, and prefer simd.extract
  • Only trim .odin from build filename
  • Keep shared libraries from calling main program's startup/cleanup procs on Linux
  • Add -build-only, -keep-test-executable, delete test executable after running
  • Enable all sanitizers on FreeBSD
  • RAD Debugger support through custom .raddbg section
    • Default views for slices and matrices
  • Error on unterminated multi-line comment
  • Fix output of object names (#5241)
  • Add suggestions for quaternionN or complexN conversions

New Packages

  • base:sanitizer
  • vendor:windows/XAudio2
  • vendor:sdl3/ttf
  • core:terminal
  • core:encoding/ansi -> core:terminal/ansi

Package Improvements

  • Vectorize base:runtime.memory_*
  • core:net
    • Rework errors to be cross-platform
    • Replace default_tcp_options with a constant
  • core:container/small_array: Improve documentation for
  • core:sync/chan: Improve documentation
  • core:mem/tlsf: refactor, add free_all support, add automatic new pools
  • core:fmt: Fix printing for bit_set[Enum] when min(Enum) != 0
  • vendor/glfw
    • fix SetMonitorCallback and MonitorProc type definition
    • use b32 where appropriate
  • core:text/regex: Add iterator
  • core:math: Fix math.nextafter skipping from 0 to 1
  • vendor:wgpu:
    • Update to 25.0.2.1
    • Fix function name for wgpu.js genericGetAdapterInfo
    • Correct mipmpaFilter field name in wgpu.js
  • core:time/timezone: preserve nanoseconds on calls
  • vendor:box2d:
    • Update to 3.1.0
    • Add missing field in box2d.BodyDef
    • Make build_box2d.sh more flexible
  • core:container/priority_queue
    • let it return runtime.Allocator_Error
    • Fix off-by-one error in remove
  • core:sys/darwin/Foundation : Loads of additions and related stuff
  • vendor:sdl2: correct RWwrite signature
  • vendor:sdl3:
    • Fix count output parameter of GetFullscreenDisplayModes
    • Add Semaphore API
  • core:encoding/*, fix parsing of CDATA tags
  • core:time: add tick_add
  • core:encoding/cbor, fix slice overflow
  • core:os/os2: general improvements
  • vendor:wasm/WebGL: Fix incorrect parameter types
  • core:bufio: Fix typo from b.w-b.w to b.w-b.r
  • core:simd/x86: BMI/BMI2 intrinsics
  • base:intrinsics: alternate reduce_add/reduce_mul intrinsics
  • core:strconv, add support for hex-floats (0h)
  • vendor:raylib/rlgl add some missing functions
  • vendor:directx/d3d12
    • add more FEATURE_DATA_OPTIONs
    • Fix RESOURCE_STATE_ALL_SHADER_RESOURCE flags and add new HEAP_TYPE
  • core:encoding/json: when unmarshalling, only match on struct tags if present
  • vendor/miniaudio: update to 0.11.22
  • core:math/big: fix range check in int_atoi
  • Add comments to builtin.odin, documenting ODIN_* constants
  • vendor:windows/GameInput: fixes and tweaks
  • core:encoding/csv: Fix incorrect CSV reader settings for example
  • Vectorize strings.prefix_length

Full Changelog: dev-2025-04...dev-2025-06

dev-2025-04

03 Apr 16:08
Compare
Choose a tag to compare

New Language Features

New Compiler Improvements

  • Support LLVM 20.1
  • Fix Objective-C Selector and Class linking problems caused by a race condition
  • VERY Rudimentary support for Android:
    • -subtarget:android for -target:linux_arm64
  • Numerous js_wasm32 improvements
  • Add ~{memory} clobber to syscalls intrinsics
  • Improve or_else type inference logic
  • Use Microsoft's "best practices" for using vswhere
  • General Bug Fixes which caused compiler crashes

New Packages

Package Improvements

  • Update vendor:sdl3 to 3.2.10
  • core:crypto
    • General improvements
  • core:os/os2/path.odin rewrite from scratch
    • Improved Documentation
    • Remove dependency on core:path/filepath

dev-2025-03

05 Mar 15:36
951bef4
Compare
Choose a tag to compare

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
  • < 8000 li>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

11 Feb 11:37
584fdc0
Compare
Choose a tag to compare

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

08 Jan 19:13
Compare
Choose a tag to compare

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)

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

06 Dec 17:07
7be0035
Compare
Choose a tag to compare

New Language Features

N/A

Compiler Improvements

  • Fix windows args parser problem from issue #4393.
  • Suggestion when assigning enum to bit_set.
  • Suggest -microarch:native if popcnt 10000 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 #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 #config typo in Lua bindings.
  • Parsing fix for timezones that have an uneven number of utc / st tags.
  • Fix #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 #4553.
  • core:encoding/json: Move struct field zipping outside of loop.

dev-2024-11

04 Nov 22:58
e6475fe
Compare
Choose a tag to compare

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

01 Oct 10:52
af9ae48
Compare
Choose a tag to compare

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

02 Sep 15:33
16c5c69
Compare
Choose a tag to compare

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]: Don't free process info fields in partial success scenarios
  • Add API for freeing thread_local state
  • wgpu: update to v22.1.0.1
  • Delay lexical checking for foreign blocks that are in file scope
  • -vet -strict-style -disallow-do in tests
  • Win32 clipboard procedures
  • os2: disable custom heap allocator
  • mem/virtual: use sysconf for retrieving page size and actually use these init procs
  • mem/virtual: make sure the given size is used for subsequent blocks
  • Add missing lexer checking delay for foreign blocks
  • Add core:io test suite
  • Add a file tag parser to core:odin/parser
  • Fix some issues with the "bad import name" errors
  • Add math.remap_clamped, which clamps the result in range [new_min, new_max]

dev-2024-08

02 Aug 13:53
Compare
Choose a tag to compare

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(...){. 5E45 ..}
  • 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
0