NOTE: this file is automatically generated, please do not edit it manually. Entries from before version 0.10.0 are no longer included, but can be viewed here.
- 1905500: Fix underflow when removing unreachable blocks
- Highlight the native target in for
runtime list
- Add support for inlining method calls
- Add
Duration.*
- Add warnings for unused imports
- Allow creating uninitialized C structs
- Add TTY/terminal checking to input/output streams
- Add target option to check and test commands
- Add Iter.chain
- Add std.io.BufferedWriter
- Add support for parsing and generating CSV data
- Add BufferedRead.peek
- Fix unreliable ordering when specializing types
- Fix formatting of binding patterns
- Escape ampersands in MIR Graphviz output
- Fix building the compiler on Alpine/musl
- Limit the number of threads for subprocess tests
- Refactor messages to support non-word arguments
- Fix capturing of C structures
- Implement socket operations in Inko
- Reintroduce futures using Future and Promise
- Use Inko for getting the errno location
- Implement std.sys in Inko
- Enable std.test colors for terminals only
- Implement std.stdio in pure Inko
- Implement file IO in Inko
- Automatically install dependencies when building
- Support requiring a minimum Inko version
- Support different Int/Float sizes in generics
- Support swapping of fields with explicit receivers
- Add Int.swap_bytes
- Add support for TLS sockets
- Allow comparing ByteArray with String values
- Add inclusive argument to Read.read_until/read_line
- Add std.base64 for encoding and decoding base64
- Fix assigning types with ownership to placeholders
- Fix trailing compression in Ipv6Address.to_string
- Fix referring to fields storing pointers
- Fix underflows when formatting certain call chains
- Fix BufferedReader.fill_buffer
- Fix naming for std.endian read/write methods
- Bump LLVM version requirement to LLVM 17
- Remove deprecated syntax
- Use llvm.abs for Int.absolute
- Optimize pkg sync by cloning a single ref
- Optimize std.endian.big and std.endian.little
- Optimize String.starts_with/ends_with
- Improve performance of String.==
- Only increase read sizes when beneficial
- Replace "variant" with "constructor"
- Update llvm-sys to make building easier
- Bump Rust requirement to 1.78
- Add command for generating documentation
- Implement Clone for ranges
- Implement String.cmp
- Relax rules for capturing self in uni closures
- Make capturing unique values in closures easier
- Make the Makefile lib directory configurable
- Add std.json.Query.as_bool
- Allow keywords as named arguments
- Add support for compile-time variables
- Implement Clone for Map
- Add module for parsing command-line options
- Add Int.sum
- Support handling of Unix signals
- Support automatic formatting of source code
- Run the main process on the main thread
- Allow creating pointers to module methods
- Fix resolving class instances with receivers
- Fix removing poll registration for socket timeouts
- Fix outdated import in examples
- Expose value types correctly in recover blocks
- Ensure ignored match case results are dropped
- Fix double dropping nested wildcard values
- Fix underflow when calculating socket buffer sizes
- Allow use of self after re-assigning all fields
- Don't generate goto's for dropping immediates
- Ensure writes always perform full writes
- Fix joining onto empty Path values
- Check ref counts when dropping without droppers
- Make various std.libc symbols private
- Make inko pkg sync less verbose
- Set TCP_NODELAY and reset with_timeout deadlines
- Use setsockopt() and getsockopt() directly
- Add support for pull parsing of JSON documents
- Reduce the amount of type conversions
- Unify the class literal and call syntax
- Use llvm.read_register for reading rsp
- Change drop order for fields and enum cases
- Infer match as nil when any case returns nil
- Replace the polling crate with rustix code
- Require LLVM 16 or newer
- Make the import syntax consistent
- Remove support for escaping whitespace in strings
- Rename methods used for unwrapping values
- Pin fewer threads to CPU cores
- Don't pass the state and process as an argument
- Remove the IntoPath trait
- Generate allocation and release code
- Don't move work when entering a blocking operation
- Generate code for checking ref counts
- Warn for unused variables
- Add Path.with_extension and refactor Path
- Add Path.components and Path.strip_prefix
- Implement Hash for Path
- Add support for cross-compilation
- Add musl as a supported compiler target
- Add Path.list_all
- Add a flag to show compiler stage timings
- Add methods for querying JSON values
- Add String.replace and String.slice_into
- Add Path.extension
- Fix DateTime.days_since_unix_epoch
- Fix compiling OR patterns
- Refactor how guard patterns are compiled
- Fix uniqueness checks for Channel and arguments
- Don't require T: Compare for Array.sort_by
- Fix Path creation/access/modification times
- Fix getting core counts
- Fix accessing fields in recover expressions
- Fix build script for custom profile names
- Fix debug info for default trait methods
- Increment references when returning variables
- Fix checking for moved variables inside loops
- Fix calling mutating methods on owned parameters
- Fix mutable references to owned parameters
- Cache and reuse object files
- Support linking using Mold
- Generate LLVM IR and object files in parallel
- Reduce memory usage of expanding instructions
- Optimize LLVM code generation a bit
- Revamp the documentation
- Bump Rust requirement to 1.70.0
- Add missing "mut" keyword to the documentation
- Recovering to owned values when assigning fields
- Add the
move
keyword for type parameters - Add Iter.skip_while and Iter.take_while
- Add Iter.take
- Add Iter.skip
- Automatically generate main file for unit tests
- Add Iter.try_each and Iter.try_reduce
- Add Bool.then
- Add Array.index_of
- Document the "check" command in
inko --help
- Make type checking return types sound
- Fix type inference involving type parameter bounds
- Fix inferring placeholders with ownership
- Allow to use private default method from a trait
- Disallow symbol imports from another module
- Fix usage of undefined function "remove"
- Return references as ref T if T isn't mutable
- Expose inherited arguments to type parameter calls
- Mark receivers as moving before handling arguments
- Replace reductions with time slices
- Enable the equivalent of -O3 for --opt=aggressive
- Optimize Array.iter and Array.iter_mut a bit
- Optimize ByteArray.iter a little bit
- Update the rustix version to use
- Fix documentation of read_line()
- Tweak the ivm installation guide
- Improve ivm installation documentation a bit
- Remove unused EOF constants
- Fix documentation for ByteArray.contains?
- Add ByteArray.last
- Add support for boolean constants
- Add types to make debug formatting easier
- Add Array.insert and Array.reserve
- Add Array.last and Array.last_mut
- Add std.io.Buffer
- Add BufferedRead and BufferedReader
- Support multiple major package versions
- Add ByteArray.from_pointer & ByteArray.to_pointer
- Add proper support for FreeBSD
- Add support for interfacing with C libraries
- Add Array.sort and Array.sort_by
- Add Map.values_mut
- Allow
self
inrecover
expressions - Allow passing uni ref T to ref T in certain cases
- Fix type inference for type parameter requirements
- Fix missing drops when ignoring match values
- Increment/copy fields when used with a receiver
- Fix json.Error.== not including the byte offset
- Fix failure locations for panic tests
- Test multiple Linux distributions for the stdlib
- Handle Array.with_capacity with negative sizes
- Fix module names for test files in sub directories
- Fix calling mutable methods on type parameters
- Fix type-checking with mutable type parameters
- Fix socket timeouts producing the wrong error code
- Implement Float.cmp per IEEE 784
- Fix formatting of Int::MIN as base2/base10
- Fix "match" not incrementing certain bindings
- Revert using
install -D
in the Makefile - Fix parsing comma separated lists
- Recheck refs after processing fields
- Error for enums without variants
- Implement specialization of generics
- Merge Format and DefaultFormatter into Formatter
- Unify up String and ByteArray slicing
- String.slice_bytes returns a ByteArray
- Bump the Rust requirement to 1.68
- Refactor std.json.Parser to use a Bytes/iterator
- Rework Int parsing and formatting
- Move checked arithmetic to the standard library
- Remove the need for
inko pkg init
- Make types namespace private by default
- Use ByteArray as input for json.Parser
- Move file/directory related methods to Path
- Remove ClassId from the CallStatic instruction
- Remove use of :: for namespaces
- Refactor Enum and rename to Stream
- Replace "length" with "size"
- Define more of String in Inko
- Implement Float.round in Inko
- Implement Float.== in Inko
- Implement Array entirely in Inko
- Replace use of the
libc
by therustix
crate - Implement listing directories in Inko
- Fix outdated CLI documentation in a few places
- Remove outdated comment from String.slice
- Clarify docs about pattern matching and ownership
- Add IO documentation to "Getting started"
- Fix incorrect documentation of Result.collect
- Allow try/throw in closures without return types
- Allow testing of code that shouldn't panic
- Add Iter.last
- Add Result.collect
- Make working with unique values easier
- Fix match expressions not dropping all values
- Fix capturing of variables
- Fix unreachable code warnings not being generated
- Fix parsing async mut methods in impl blocks
- Fix double drops for conditionally dropped values
- Fix resolving nested types as immutable
- Allow passing owned values to mutable traits
- Fix type inference when comparing references
- Verify trait requirements
- Handle missing type arguments when checking types
- Don't lower unreachable code to MIR
- Push global jobs back when trying to steal them
- Fix various reference counting underflows
- Fix dropping old values when assigning new ones
- Start documenting some goals and non-goals
- Correct outdated reference to libstd/
- Enable optimisations by default
- Move iter.join to String.join
- Document tuning the runtime
- Document using copr to install Inko on Fedora
- Add dedicated instruction for static method calls
- Implement cryptographic hash functions and ciphers
- Add support for unsigned right shifting
- Add ByteArray.resize and apply in ByteArray.filled
- Refactor Range into separate types
- Add std::cmp.min and std::cmp.max
- Add ByteArray.copy_from
- Add methods for encoding integers as bytes
- Add ByteArray.reverse
- Add support for wrapping add/sub/mul
- Add Int.rotate_left and Int.rotate_right
- Add support for bitwise NOT
- Automatically clone references to value types
- Add support for parsing and generating JSON
- Add String.escaped
- Add support for constant arrays
- Support up to six digits for Unicode escapes
- Add std::utf8 module
- Add parsing support for Unicode escape sequences
- Add try_equal assertion to std::test
- Add StringReader and ByteArrayReader
- Add support for socket deadlines/timeouts
- Add std::time::ToInstant
- Add Pointer.pointer
- Make 'ref Any' a valid type
- Provide a package manager for Inko
- Allow setting a shuffle seed for unit tests
- Move random number generation to the Random type
- Allow setting INKO_PROCESS_THREADS to zero
- Add documentation that compares Inko to others
- Add the VS Code extension to the manual
- Add String stripping and trimming methods
- Fix type-checking against type placeholders
- Disallow async calls using non-async methods
- Save instruction pointer for async messages
- Insert CheckRefs after calling destructors
- Fix parsing negative hexadecimal integers
- Fix passing value types around in several cases
- Return nil for loop expressions in MIR
- Fix checking type arguments for mut T and uni T
- Fix making closure arguments rigid
- Count assertion failures in test output
- Fix type-checking and inferring against traits
- Fix runaway recursion when inferring cyclic types
- Fix STDOUT.print not returning the correct length
- Don't immediately drop ignored variables
- Fix instruction locations for raw panics
- Fix and document negative Duration objects
- Suspend after exiting a blocking call
- Disallow processes sending messages to themselves
- Handle async messages for identifier calls
- Fix constant float equality for code generation
- Simplify and fix debug info for stacktraces
- Refactor how processes are terminated
- Change ByteArray.from_array to take a ref
- Restrict Inko to little-endian architectures
- Implement String.slice_bytes in Rust
- Rework iterating over byte sequences
- Lower binary expressions into regular method calls
- Use shorter method names for Duration
- Use nanoseconds for Instant and Duration
- Remove glob imports from the language
- Remove the dirs-next dependency
- Remove the num_cpus dependency
- Make Test.failures public
- Remove the float-cmp dependency
- Remove mention of INKO_BYTECODE_THREADS
- Remove alive tracking from the network poller
- Remove alive tracking from the timeout worker
- Improve detecting modules names
- Avoid calling String droppers where possible
- Don't call droppers for value types
- Implement ByteArray.append in Rust
- Use ByteArray.reverse in Int.to_base
- Implement ByteArray.slice in Rust
- Support multiple network pollers
- Automatically replace blocking threads
- Rewrite the process scheduler from the ground up
NOTE: this section appears a bit limited as for 0.10.0 we switched to a different approach for generating changelogs. For more details, refer to the 0.10.0 release post.