Skip to content

Breaking change wish-list #650

Open
Open
@jhpratt

Description

@jhpratt

Note: There is no breaking change current planned. This issue is to keep track of things that may happen when there is a breaking change at some undetermined point in the future. Items are in no particular order.


Potential changes

These are mostly things that I have thought about at some point, with varying levels of certainty.

  • Eliminate large-dates feature flag. Support the ±999,999 range of years unconditionally, adding a modifier to the [year] component to solve the issue of ambiguity.
  • Remove the serde-well-known feature flag, which is already deprecated in favor of using the relevant flags (serde, formatting, and/or parsing) directly.
  • Simplify error handling. Anonymous enums would be wonderful but are not required. In particular, the large number of conversions should be cut down, as many of them exist when they can already be performed transitively. The amount of information exposed should be restricted to as little as necessary, as this has caused issues in the past.
  • Remove anything deprecated. This is currently minimal.
  • Make FormatItem opaque and require FormatItem::Literal to be valid UTF-8. Likewise for OwnedFormatItem.
  • Remove Copy implementation for Parsed.
  • Use ranged integers in public APIs. This would currently require adding countless new methods.
  • Rename Duration to SignedDuration or something else.
  • Make Duration::seconds generic over i64, f32, and f64. Similarly for saturaturating_seconds_* and checked_seconds_*. Alternatively, have a seconds_float method that is generic while keeping the integer case separate.
  • Remove Duration::time_fn. This is a carry-over from time 0.1 and was presumably meant as a poor man's benchmarking tool. Instant is not meant to be used in that manner.
  • Remove time::Instant in favor of an extension trait on std::time::Instant. This would reduce the number of trait implementations needed. The extension trait was added in v0.3.35, with time::Instant being deprecated at the same time.
  • Semantically permit modifiers on [optional] and [first] (needed for Permit skipping [optional] values when formatting #708)

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-breakingCategory: breaking changeC-tracking-issueCategory: tracking issue for a feature/release

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions