Skip to content

Latest commit

 

History

History
347 lines (282 loc) · 27.3 KB

CHANGELOG.md

File metadata and controls

347 lines (282 loc) · 27.3 KB

Changelog

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.

0.14.0 (2024-02-05)

Added

  • ac24bcc: Warn for unused variables
  • 4ee577a: Add Path.with_extension and refactor Path
  • 23495ba: Add Path.components and Path.strip_prefix
  • 6ac179f: Implement Hash for Path
  • 03ef71f: Add support for cross-compilation
  • 7b5ed3c: Add musl as a supported compiler target
  • 46b5fc2: Add Path.list_all
  • 67d44f1: Add a flag to show compiler stage timings
  • 7f5bcac: Add methods for querying JSON values
  • e287956: Add String.replace and String.slice_into
  • f4d3c5a: Add Path.extension

Fixed

  • c278334: Fix DateTime.days_since_unix_epoch
  • 8b7f0d2: Fix compiling OR patterns
  • 895826b: Refactor how guard patterns are compiled
  • 4a4edb1: Fix uniqueness checks for Channel and arguments
  • 6a985ad: Don't require T: Compare for Array.sort_by
  • db33be8: Fix Path creation/access/modification times
  • 1593176: Fix getting core counts
  • a0924cc: Fix accessing fields in recover expressions
  • fd0a0b9: Fix build script for custom profile names
  • e3c3b9a: Fix debug info for default trait methods
  • c709b59: Increment references when returning variables
  • b0e53b2: Fix checking for moved variables inside loops
  • 084b354: Fix calling mutating methods on owned parameters
  • ff8c0f2: Fix mutable references to owned parameters

Changed

  • b733f01: Scope build files for non-native targets
  • 83713aa: Decouple symbol names from type and method IDs

Performance improvements

  • 137304d: Cache and reuse object files
  • 76cf292: Support linking using Mold
  • 9162406: Generate LLVM IR and object files in parallel
  • 3c3c73a: Reduce memory usage of expanding instructions
  • afd72e0: Optimize LLVM code generation a bit

Other

  • a605bf0: Revamp the documentation
  • a69b423: Bump Rust requirement to 1.70.0
  • a31bd3f: Add missing "mut" keyword to the documentation

0.13.2 (2023-12-14)

Added

  • 1b61961: Recovering to owned values when assigning fields
  • c9c01ac: Add the move keyword for type parameters
  • c42baf4: Add Iter.skip_while and Iter.take_while
  • 6c7da74: Add Iter.take
  • 7a967b0: Add Iter.skip
  • da6ea1c: Automatically generate main file for unit tests
  • 7314fd3: Add Iter.try_each and Iter.try_reduce
  • 4fe8a03: Add Bool.then
  • 317c3c7: Add Array.index_of

Fixed

  • 1abb3d9: Document the "check" command in inko --help
  • 6f2341e: Make type checking return types sound
  • 7138301: Fix type inference involving type parameter bounds
  • 47e4c0b: Fix inferring placeholders with ownership
  • aa615ed: Allow to use private default method from a trait
  • b3783be: Disallow symbol imports from another module
  • 9e4f82b: Fix usage of undefined function "remove"
  • 3cc6683: Return references as ref T if T isn't mutable
  • b7a368d: Expose inherited arguments to type parameter calls
  • e026d91: Mark receivers as moving before handling arguments

Changed

  • 1c96a7d: Remove Range.step_by
  • c1a5760: Clean up Iter.each_with_index a bit

Performance improvements

  • cc8c6fe: Replace reductions with time slices
  • 1a30de9: Enable the equivalent of -O3 for --opt=aggressive
  • e3886ae: Optimize Array.iter and Array.iter_mut a bit
  • 07632a3: Optimize ByteArray.iter a little bit

Other

  • 1687c75: Update the rustix version to use
  • 3ace1b8: Fix documentation of read_line()
  • 6acdbe4: Tweak the ivm installation guide
  • c782563: Improve ivm installation documentation a bit
  • de6a4de: Remove unused EOF constants
  • 61dd8c7: Fix documentation for ByteArray.contains?

0.13.1 (2023-10-14)

Fixed

  • 9217464e: Fix float parsing on ARM64 macOS
  • a0a9d248: Fix type error for ARM64 platforms

Other

  • f3370cb6: Add mention of zstd missing on macOS

0.13.0 (2023-10-14)

Added

  • 97c7fb38: Add ByteArray.last
  • 4098fd05: Add support for boolean constants
  • 3b8534c6: Add types to make debug formatting easier
  • 1d174b02: Add Array.insert and Array.reserve
  • 0c4d7e6b: Add Array.last and Array.last_mut
  • 2b87e4d2: Add std.io.Buffer
  • 085ee32a: Add BufferedRead and BufferedReader
  • 256e8166: Support multiple major package versions
  • 10277d5f: Add ByteArray.from_pointer & ByteArray.to_pointer
  • ba7217ba: Add proper support for FreeBSD
  • df66fef7: Add support for interfacing with C libraries
  • 31a8a17a: Add Array.sort and Array.sort_by
  • 97d195a7: Add Map.values_mut
  • 007495be: Allow self in recover expressions
  • be0d8304: Allow passing uni ref T to ref T in certain cases

Fixed

  • 2ce41f09: Fix type inference for type parameter requirements
  • 37bc3f17: Fix missing drops when ignoring match values
  • ad267487: Increment/copy fields when used with a receiver
  • c757d6e5: Fix json.Error.== not including the byte offset
  • bb541de7: Fix failure locations for panic tests
  • 9cc1131d: Test multiple Linux distributions for the stdlib
  • 59f65ddd: Handle Array.with_capacity with negative sizes
  • 00dd2fd6: Fix module names for test files in sub directories
  • 176bbd89: Fix calling mutable methods on type parameters
  • bc1273c8: Fix type-checking with mutable type parameters
  • c7567417: Fix socket timeouts producing the wrong error code
  • cf87e5a7: Implement Float.cmp per IEEE 784
  • 3afdcd4b: Fix formatting of Int::MIN as base2/base10
  • 20fa7f63: Fix "match" not incrementing certain bindings
  • 5469f220: Revert using install -D in the Makefile
  • 6c0c6997: Fix parsing comma separated lists
  • 1e4566e7: Recheck refs after processing fields
  • c3f3385f: Error for enums without variants

Changed

  • 3057ba7e: Implement specialization of generics
  • b0bbc434: Merge Format and DefaultFormatter into Formatter
  • 85b213e5: Unify up String and ByteArray slicing
  • ac696b9c: String.slice_bytes returns a ByteArray
  • 948c5f0f: Bump the Rust requirement to 1.68
  • afa39c0c: Refactor std.json.Parser to use a Bytes/iterator
  • 95434442: Rework Int parsing and formatting
  • 05aff9a3: Move checked arithmetic to the standard library
  • 6f7a3780: Remove the need for inko pkg init
  • 81bae997: Make types namespace private by default
  • c78555ef: Use ByteArray as input for json.Parser
  • 5ce44a5e: Move file/directory related methods to Path
  • d455d8f0: Remove ClassId from the CallStatic instruction
  • 8026b29d: Remove use of :: for namespaces
  • 70728b63: Refactor Enum and rename to Stream
  • 2771a63e: Replace "length" with "size"
  • f08169d5: Define more of String in Inko
  • 524626e6: Implement Float.round in Inko
  • 449af85d: Implement Float.== in Inko
  • 13e8e557: Implement Array entirely in Inko
  • f2379c62: Replace use of the libc by the rustix crate
  • 0c963af0: Implement listing directories in Inko

Other

  • c136e78f: Fix outdated CLI documentation in a few places
  • 73e1dc99: Remove outdated comment from String.slice
  • 99b22c56: Clarify docs about pattern matching and ownership
  • 269e77d6: Add IO documentation to "Getting started"
  • 88e197dc: Fix incorrect documentation of Result.collect

Performance improvements

  • 58fc4ef2: Return the old value in Map.set
  • fb040c22: Optimize String.count for counts of 0 and 1

0.12.0 (2023-06-05)

Added

  • 3de43cf0: Allow try/throw in closures without return types
  • c5af2196: Allow testing of code that shouldn't panic
  • 5f87a41b: Add Iter.last
  • d85d48af: Add Result.collect
  • f8bd2499: Make working with unique values easier

Fixed

  • a5a10f17: Fix match expressions not dropping all values
  • 9dd6bcbd: Fix capturing of variables
  • 884484b8: Fix unreachable code warnings not being generated
  • 3b756379: Fix parsing async mut methods in impl blocks
  • dd2f93f3: Fix double drops for conditionally dropped values
  • 227429b5: Fix resolving nested types as immutable
  • 893cab4a: Allow passing owned values to mutable traits
  • d6872834: Fix type inference when comparing references
  • a23cb932: Verify trait requirements
  • fd6eb2f7: Handle missing type arguments when checking types
  • cfa644a3: Don't lower unreachable code to MIR
  • 5b2980ab: Push global jobs back when trying to steal them
  • 8cbf6f10: Fix various reference counting underflows
  • 63e1d596: Fix dropping old values when assigning new ones

Other

  • 395332bd: Start documenting some goals and non-goals
  • c21c4b7d: Correct outdated reference to libstd/
  • 8a56fd27: Enable optimisations by default
  • c0463c46: Move iter.join to String.join
  • 95bfb8d3: Document tuning the runtime
  • 01e5dcaa: Document using copr to install Inko on Fedora

Performance improvements

0.11.0 (2023-05-19)

Added

  • 452c07fb: Add dedicated instruction for static method calls
  • 0054f4f8: Implement cryptographic hash functions and ciphers
  • 4325ed9a: Add support for unsigned right shifting
  • a169a559: Add ByteArray.resize and apply in ByteArray.filled
  • cf4cf129: Refactor Range into separate types
  • c335285a: Add std::cmp.min and std::cmp.max
  • 1a320f53: Add ByteArray.copy_from
  • dac91cd9: Add methods for encoding integers as bytes
  • d9c0d64c: Add ByteArray.reverse
  • 3956f407: Add support for wrapping add/sub/mul
  • d71ffde8: Add Int.rotate_left and Int.rotate_right
  • 758497f4: Add support for bitwise NOT
  • 28706b5d: Automatically clone references to value types
  • 09d81780: Add support for parsing and generating JSON
  • 8bc96134: Add String.escaped
  • 6f2fcbcd: Add support for constant arrays
  • f02e29fe: Support up to six digits for Unicode escapes
  • b0354740: Add std::utf8 module
  • 441b5766: Add parsing support for Unicode escape sequences
  • 2609bbce: Add try_equal assertion to std::test
  • 9d0884c8: Add StringReader and ByteArrayReader
  • 8d361f36: Add support for socket deadlines/timeouts
  • b285df63: Add std::time::ToInstant
  • 8eac1595: Add Pointer.pointer
  • 9698cdae: Make 'ref Any' a valid type
  • ecafac68: Provide a package manager for Inko
  • 54782464: Allow setting a shuffle seed for unit tests
  • 6991a8d3: Move random number generation to the Random type
  • ee5429a9: Allow setting INKO_PROCESS_THREADS to zero
  • b7254f5f: Add documentation that compares Inko to others
  • 5ddc2e95: Add the VS Code extension to the manual
  • 92c635ce: Add String stripping and trimming methods

Fixed

  • 11ab2c3f: Fix type-checking against type placeholders
  • efdc6463: Disallow async calls using non-async methods
  • ea303b4d: Save instruction pointer for async messages
  • c362caf4: Insert CheckRefs after calling destructors
  • 8b670e60: Fix parsing negative hexadecimal integers
  • 7bee45f6: Fix passing value types around in several cases
  • da9c4784: Return nil for loop expressions in MIR
  • f9375d50: Fix checking type arguments for mut T and uni T
  • 68a5a868: Fix making closure arguments rigid
  • 4ea39fb0: Count assertion failures in test output
  • 7d0c79a2: Fix type-checking and inferring against traits
  • a6206937: Fix runaway recursion when inferring cyclic types
  • a8fdbe47: Fix STDOUT.print not returning the correct length
  • 3e62e9ef: Don't immediately drop ignored variables
  • a419af98: Fix instruction locations for raw panics
  • 6ab5ad77: Fix and document negative Duration objects
  • b41c2c80: Suspend after exiting a blocking call
  • d496aeac: Disallow processes sending messages to themselves
  • 9cee2ea3: Handle async messages for identifier calls
  • bbfaaf6a: Fix constant float equality for code generation
  • 2e9ce863: Simplify and fix debug info for stacktraces
  • 20dc8d4f: Refactor how processes are terminated

Changed

  • b6ce8e8f: Change ByteArray.from_array to take a ref
  • 4e26a2ae: Restrict Inko to little-endian architectures
  • e15e823c: Implement String.slice_bytes in Rust
  • 6620c448: Rework iterating over byte sequences
  • 923cb3a1: Lower binary expressions into regular method calls
  • c9375b66: Use shorter method names for Duration
  • 64d80971: Use nanoseconds for Instant and Duration
  • 30f77edb: Remove glob imports from the language
  • c0e67524: Remove the dirs-next dependency
  • f5f0b8ce: Remove the num_cpus dependency
  • c4a6b0c8: Make Test.failures public
  • 7ef1aa07: Remove the float-cmp dependency
  • 6d5580cd: Remove mention of INKO_BYTECODE_THREADS
  • 1c225b48: Remove alive tracking from the network poller
  • 1e0b0037: Remove alive tracking from the timeout worker
  • 5c57ddcd: Improve detecting modules names

Performance improvements

  • 2e398490: Avoid calling String droppers where possible
  • 366d7235: Don't call droppers for value types
  • 047eec78: Implement ByteArray.append in Rust
  • 47c7669c: Use ByteArray.reverse in Int.to_base
  • 110dd0a2: Implement ByteArray.slice in Rust
  • 44c00881: Support multiple network pollers
  • 89467afc: Automatically replace blocking threads
  • 4cf91016: Rewrite the process scheduler from the ground up

0.10.0 (2022-09-12)

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.

Added

Fixed

  • be7794ff: Fix defining bindings in OR patterns
  • 82452f17: Fix building source archives

Changed