mirror of
https://github.com/urbit/ares.git
synced 2024-11-26 20:58:02 +03:00
145 lines
3.5 KiB
Markdown
145 lines
3.5 KiB
Markdown
|
# Changelog
|
||
|
|
||
|
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||
|
|
||
|
## 0.3.6 - 2022-09-18
|
||
|
|
||
|
### Features
|
||
|
* GCD, greatest common divisor.
|
||
|
* Extended GCD (GCD with Bézout coefficients).
|
||
|
* Modular inverse.
|
||
|
* Modular division.
|
||
|
|
||
|
## 0.3.5 - 2022-03-12
|
||
|
|
||
|
### Bugfixes
|
||
|
* Corrected too-strict lifetimes in modular exponentiation.
|
||
|
|
||
|
### Dependencies
|
||
|
* Removed the dependency on `const_fn_assert`.
|
||
|
|
||
|
## 0.3.4 - 2021-11-03
|
||
|
|
||
|
### Features
|
||
|
* Optional `serde` support for `UBig` and `IBig`.
|
||
|
|
||
|
### Toolchain
|
||
|
* Rust 1.49+ is now required.
|
||
|
|
||
|
### Dependencies
|
||
|
* Added an optional dependency on `serde`.
|
||
|
|
||
|
## 0.3.3 - 2021-10-28
|
||
|
|
||
|
### Features
|
||
|
* Mixed-type arithmetic with primitive integer types.
|
||
|
|
||
|
Allows `x + 1` instead of `x + ubig!(1)`.
|
||
|
|
||
|
This breaks with the convention that arithmetic operators require same type on both sides. A better alternative would be user-defined custom integer literals, so that `1` could be inferred to have type `UBig`. But Rust does not support this yet. So this is a workaround for the sake of ergonomics.
|
||
|
|
||
|
## 0.3.2 - 2021-05-02
|
||
|
|
||
|
### Toolchain
|
||
|
* Rust 1.47+ is now supported.
|
||
|
|
||
|
### Dependencies
|
||
|
* Added a dependency on `cfg-if`.
|
||
|
|
||
|
## 0.3.1 - 2021-04-03
|
||
|
|
||
|
### Features
|
||
|
* Maximum supported length in bits: `UBig::MAX_BIT_LEN`.
|
||
|
|
||
|
### Fixes
|
||
|
* Broken build for `aarch64`, `mips64` and` powerpc64` fixed.
|
||
|
|
||
|
### Dependencies
|
||
|
* Added a dependency on `const_fn_assert`.
|
||
|
|
||
|
## 0.3.0 - 2021-03-29
|
||
|
|
||
|
### Breaking changes
|
||
|
* Removed `prelude`.
|
||
|
* Split into modules:
|
||
|
* Moved `InRadix` to `fmt`.
|
||
|
* Moved operator traits to `ops`.
|
||
|
* Moved errors to `error`.
|
||
|
* Moved distributions to `rand`.
|
||
|
* Removed deprecated `IBig::is_positive`, `IBig::is_negative`.
|
||
|
Just compare with `ibig!(0)` instead.
|
||
|
* Shift left and right now only accepts `usize` for the number of bits, for consistency
|
||
|
with other bit addressing operations and exponents.
|
||
|
|
||
|
## 0.2.2 - 2021-03-28
|
||
|
|
||
|
### Features
|
||
|
* Modular arithmetic: `ModuloRing`, `Modulo`.
|
||
|
* Conversions to floating point: `to_f32`, `to_f64`. Rounds to nearest, breaking ties to even.
|
||
|
* `From<bool>` for `IBig`.
|
||
|
|
||
|
## 0.2.1 - 2021-03-14
|
||
|
|
||
|
### License
|
||
|
|
||
|
* Loosened the license to either MIT or Apache-2.0.
|
||
|
|
||
|
### Features
|
||
|
* Implemented num-traits traits.
|
||
|
|
||
|
### Deprecated features
|
||
|
* `IBig::is_positive`, `IBig::is_negative`. Just use `> ibig!(0)`, `< ibig!(0)`.
|
||
|
|
||
|
### Dependencies
|
||
|
* Added optional dependency on `num-traits 0.2.14`.
|
||
|
* Removed dependency on `ascii`.
|
||
|
|
||
|
## 0.2.0 - 2021-03-11
|
||
|
|
||
|
### Removed features
|
||
|
* Removed deprecated functions `to_str_radix`, `to_str_radix_uppercase`, `ilog2`.
|
||
|
|
||
|
## 0.1.2 - 2021-03-09
|
||
|
|
||
|
### New features
|
||
|
* `bit_len`
|
||
|
|
||
|
### Deprecated features
|
||
|
* `to_str_radix`, `to_str_radix_uppercase`. Use `in_radix(...)` instead.
|
||
|
* `ilog2`. Use `bit_len` instead.
|
||
|
|
||
|
### Dependencies
|
||
|
* Added a dependency on `static_assertions 1.1`.
|
||
|
* Bumped `rand` to `0.8.3`.
|
||
|
|
||
|
### Performance
|
||
|
* Large division improved. Now uses a divide and conquer algorithm, O(n^1.47).
|
||
|
* Large `parse` improved using a divide and conquer algorithm, O(n^1.47).
|
||
|
* Large `to_string` improved using a divide and conquer algorithm, O(n^1.47).
|
||
|
* Other minor performance improvements.
|
||
|
|
||
|
## 0.1.1 - 2021-03-03
|
||
|
|
||
|
### New features
|
||
|
* Hashing.
|
||
|
* Exponentiation.
|
||
|
* Random sampling (optional dependency on `rand 0.8`).
|
||
|
|
||
|
### Performance
|
||
|
* Multiplication improved, now uses Karatsuba and Toom-Cook-3 algorithms, O(n^1.47).
|
||
|
|
||
|
### Examples
|
||
|
* `factorial` prints 1000000! in hexadecimal.
|
||
|
|
||
|
## 0.1.0 - 2021-02-25
|
||
|
|
||
|
The initial usable version.
|
||
|
|
||
|
### Features
|
||
|
* All basic arithmetic and bitwise operations.
|
||
|
* Parsing and formatting.
|
||
|
* Constructor macros.
|
||
|
|
||
|
### Performance
|
||
|
* Operations on very large numbers are still slow.
|