Releases: artichoke/strftime-ruby
v1.3.1
Fix panics in strftime::fmt due to improper handling of multi-byte UTF-8 characters when parsing a format specifier.
What's Changed
- Add memory bounds to fuzz harnesses, add test for a new crasher by @lopopolo, @x-hgg-x in #181
- Prep for v1.3.1 release by @lopopolo in #182
Full Changelog: v1.3.0...v1.3.1
v1.3.0
What's Changed
- Fixup rust-analyzer warnings by @lopopolo in #174
- Add messages to #[should_panic] attributes in tests by @lopopolo in #177
- Add #[track_caller] attribute to assertion helpers by @lopopolo in #178
- Implement Error using core::error by @lopopolo in #180
- Use statements in match arms that are used to consume iterators by @lopopolo in #179
- Take a pass with clippy::pedantic by @lopopolo in #176
Full Changelog: v1.2.0...v1.3.0
v1.2.0
Compatibility Notes
This version of strftime-ruby bumps the MSRV to Rust 1.84.0.
rustc 1.87.0 will introduce changes to format machinery which cause panics in older versions of strftime-ruby for formatting strings which specify padding amounts larger than u16::MAX. v1.2.0 addresses these issues.
What's Changed
- Be more strict about which files are included in crate packaging by @lopopolo in #158
- Remove markdown link check by @lopopolo in #159
- chore(deps-dev): Bump prettier from 3.4.1 to 3.4.2 in the npm-deps group by @dependabot in #162
- chore(deps): Bump rubocop from 1.69.0 to 1.69.2 in the bundler-deps group by @dependabot in #161
- chore(deps): Bump the gha-deps group with 3 updates by @dependabot in #160
- chore: Update
.github/workflows/code-coverage.yamlin `artichoke/st… by @lopopolo in #165 - chore(deps): Bump rubocop from 1.69.2 to 1.71.1 in the bundler-deps group by @dependabot in #163
- chore(deps): Bump the gha-deps group across 1 directory with 4 updates by @dependabot in #168
- Remove version-sync dependency and tests by @lopopolo in #171
- chore(deps): Bump the gha-deps group with 3 updates by @dependabot in #170
- chore(deps-dev): Bump prettier from 3.4.2 to 3.5.2 in the npm-deps group by @dependabot in #169
- Use
core::ffi::c_intdirectly instead of alias by @lopopolo in #173 - Add tests for dynamic width specifiers exceeding
u16::MAXby @lopopolo, @x-hgg-x, @m-ou-se in #172
Full Changelog: v1.1.0...v1.2.0
v1.1.0
Compatibility Notes
This version of strftime-ruby bumps the MSRV to Rust 1.76.0.
What's Changed
- Bump aws-actions/configure-aws-credentials from 2.1.0 to 2.2.0 by @dependabot in #107
- Bump ruby/setup-ruby from 1.150.0 to 1.152.0 by @dependabot in #106
- Bump actions/checkout from 3.5.2 to 3.5.3 by @dependabot in #105
- Bump mheap/github-action-required-labels from 4.0.0 to 5.1.0 by @dependabot in #104
- Bump rubocop from 1.51.0 to 1.54.0 by @dependabot in #103
- Update dependabot.yml by @lopopolo in #108
- chore(deps): Bump the gha-deps group with 1 update by @dependabot in #109
- chore(deps): Bump the bundler-deps group with 1 update by @dependabot in #110
- chore(deps): Bump the gha-deps group with 1 update by @dependabot in #111
- Fix clippy lint violations in latest stable by @lopopolo in #112
- chore(deps): Bump the gha-deps group with 3 updates by @dependabot in #113
- chore(deps): Bump the bundler-deps group with 1 update by @dependabot in #114
- chore(deps): Bump the gha-deps group with 5 updates by @dependabot in #115
- chore(deps): Bump the bundler-deps group with 1 update by @dependabot in #116
- Suppress
clippy::should_panic_without_expectlint violations by @lopopolo in #119 - chore(deps): Bump the bundler-deps group with 2 updates by @dependabot in #118
- chore(deps): Bump the gha-deps group with 4 updates by @dependabot in #117
- chore(deps): Bump the gha-deps group with 1 update by @dependabot in #121
- chore(deps): Bump the bundler-deps group with 1 update by @dependabot in #120
- Update Ruby and Bundler version by @lopopolo in #122
- chore(deps): Bump the bundler-deps group with 1 update by @dependabot in #123
- chore(deps): Bump the gha-deps group with 1 update by @dependabot in #124
- chore(deps): Bump the gha-deps group with 3 updates by @dependabot in #125
- chore(deps): Bump the bundler-deps group with 1 update by @dependabot in #126
- Lock prettier version for dev and CI by @lopopolo in #127
- chore(deps): Bump the bundler-deps group with 1 update by @dependabot in #129
- chore(deps): Bump the gha-deps group with 5 updates by @dependabot in #128
- chore(deps): Bump the gha-deps group with 4 updates by @dependabot in #131
- chore(deps): Bump the bundler-deps group with 1 update by @dependabot in #130
- chore(deps): Bump the gha-deps group with 5 updates by @dependabot in #133
- chore(deps): Bump the bundler-deps group with 2 updates by @dependabot in #132
- chore(deps): Bump rexml from 3.2.6 to 3.2.8 by @dependabot in #134
- chore(deps): Bump rubocop from 1.63.4 to 1.64.1 in the bundler-deps group by @dependabot in #136
- chore(deps): Bump the gha-deps group across 1 directory with 2 updates by @dependabot in #140
- Upgrade Ruby and bundler by @lopopolo in #141
- chore(deps): Bump rexml from 3.2.8 to 3.3.3 by @dependabot in #145
- chore(deps): Bump the gha-deps group with 3 updates by @dependabot in #143
- chore(deps): Bump rexml from 3.3.3 to 3.3.6 by @dependabot in #146
- chore(deps): Bump the bundler-deps group across 1 directory with 2 updates by @dependabot in #148
- chore(deps): Bump the gha-deps group with 2 updates by @dependabot in #147
- Improve tests found by cargo-mutants by @x-hgg-x in #149
- chore(deps): Bump rubocop from 1.66.0 to 1.66.1 in the bundler-deps group by @dependabot in #151
- chore(deps): Bump the gha-deps group with 3 updates by @dependabot in #150
- chore(deps): Bump rubocop from 1.66.1 to 1.68.0 in the bundler-deps group by @dependabot in #153
- chore(deps): Bump the gha-deps group with 4 updates by @dependabot in #152
- Update ruby and bundler, fix new lint violations, bump MSRV to 1.76.0 by @lopopolo in #157
- chore(deps): Bump the gha-deps group with 2 updates by @dependabot in #154
- chore(deps-dev): Bump prettier from 3.2.5 to 3.4.1 in the npm-deps group by @dependabot in #155
- chore(deps): Bump rubocop from 1.68.0 to 1.69.0 in the bundler-deps group by @dependabot in #156
Full Changelog: v1.0.1...v1.1.0
v1.0.1
Release 1.0.1 of strftime-ruby.
strftime-ruby is available on crates.io.
This release addresses new clippy lints since the v1.0.0 release and adds additional crates.io category metadata to Cargo.toml.
What's Changed
- Add tests for check format assertions by @lopopolo in #67
- chore: Update
.github/workflows/code-coverage.yamlin `artichoke/st… by @lopopolo in #68 - Move readme doctest module at the end of the file by @x-hgg-x in #69
- chore: Update
.github/workflows/code-coverage.yamlin `artichoke/st… by @lopopolo in #70 - chore: Update
.github/workflows/code-coverage.yamlin `artichoke/st… by @lopopolo in #71 - Bump rubocop from 1.32.0 to 1.36.0 by @dependabot in #73
- chore: Update
.github/workflows/audit.yamlin `artichoke/strftime-r… by @lopopolo in #74 - Add missing Ruby lint and format job in CI workflow by @lopopolo in #75
- Fix
clippy::single_match_elsewarning on new stable 1.64.0 by @lopopolo in #76 - Bump rubocop from 1.36.0 to 1.38.0 by @dependabot in #77
- chore: Update
.github/workflows/rustdoc.yamlin `artichoke/strftime… by @lopopolo in #78 - Fix clippy warning by @x-hgg-x in #79
- Bump rubocop from 1.38.0 to 1.39.0 by @dependabot in #80
- Address clippy lint violations in Rust 1.66.0 by @lopopolo in #81
- chore: Update
.github/workflows/audit.yamlin `artichoke/strftime-r… by @lopopolo in #82 - chore: Update
.github/workflows/code-coverage.yamlin `artichoke/st… by @lopopolo in #83 - chore: Update
.github/workflows/code-coverage.yamlin `artichoke/st… by @lopopolo in #84 - Bump rubocop from 1.39.0 to 1.42.0 by @dependabot in #85
- Bump mheap/github-action-required-labels from 2 to 3 by @dependabot in #86
- Bump rubocop from 1.42.0 to 1.44.1 by @dependabot in #87
- Bump rubocop from 1.44.1 to 1.47.0 by @dependabot in #88
- Bump rubocop from 1.47.0 to 1.48.1 by @dependabot in #89
- Add tests for boundary conditions when computing ISO week number by @lopopolo in #90
- chore: Update
.github/workflows/rustdoc.yamlin `artichoke/strftime… by @lopopolo in #91 - Remove dependency on actions-rs organization GitHub Actions by @lopopolo in #92
- Upgrade Ruby version and bundler version by @lopopolo in #93
- Use stricter version pinning for GitHub Actions by @lopopolo in #94
- Bump ruby/setup-ruby from 1.147.0 to 1.148.0 by @dependabot in #96
- Bump rubocop from 1.48.1 to 1.50.2 by @dependabot in #95
- Stop monitoring Twitter links, fix markdown link check job by @lopopolo in #97
- chore: Update
.github/workflows/code-coverage.yamlin `artichoke/st… by @lopopolo in #98 - Bump ruby/setup-ruby from 1.148.0 to 1.150.0 by @dependabot in #101
- Bump aws-actions/configure-aws-credentials from 2.0.0 to 2.1.0 by @dependabot in #100
- Bump rubocop from 1.50.2 to 1.51.0 by @dependabot in #99
- Add no-std, no-alloc crates.io category metadata by @lopopolo in #102
Full Changelog: v1.0.0...v1.0.1
v1.0.0
Release 1.0.0 of strftime-ruby.
strftime-ruby is available on crates.io.
strftime-ruby is a Ruby 3.1.2 compatible implementation of the Time#strftime method. The strftime routines provided by this crate are POSIX-compatible, except for intentionally ignoring the E and O modified conversion specifiers.
API
There are 5 strftime functions in this crate which vary in the type of format specifier they take and how they write the formatted output:
strftime::buffered::strftime: Takes a&[u8]format specifier and writes to the provided byte slice.strftime::fmt::strftime: Takes a&strformat specifier and writes to the providedcore::fmt::Writeobject.strftime::bytes::strftime: Takes a&[u8]format specifier and writes to a newly allocatedVec, which is returned.strftime::string::strftime: Takes a&strformat specifier and writes to a newly allocatedString, which is returned.strftime::io::strftime: Takes a&[u8]format specifier and writes to the providedstd::io::Writeobject.
Allocations
The only routines that allocate in this crate are strftime::bytes::strftime and strftime::string::strftime. These routines use fallible allocation APIs from alloc and return errors to callers.
strftime::fmt::strftime and strftime::io::strftime perform no allocations on their own, but the provided writers may allocate.
Cargo Features
strftime-ruby has alloc and std features. All features are enabled by default.
strftime::buffered::strftime and strftime::fmt::strftime are available when this crate is compiled without any features and are usable in a no_std context.
The alloc feature enables strftime::bytes::strftime and strftime::string::strftime.
The std feature enables strftime::io::strftime.
Test Coverage
strftime-ruby has 100% line coverage, which is enforced by CI, and is fuzzed regularly.
Composition
strftime-ruby's APIs take an implementation of its Time trait to determine the values used with format specifiers. The intent is that time crates across the ecosystem can implement it, making this crate fully interoperable across all time implementations.