Calendrical version 1.0.0
[1.0.0] — 2026-07-31
The first stable release, built on Localize 1.0.
Fixed
-
Calendrical.Persian.date_from_iso_days/1computed the month with:math.ceil/1in one branch andKernel.ceil/1in the other, so any date after the 186th day of the Persian year carried a float month back intodate_to_iso_days/3. The returned month was truncated and therefore correct, but the intermediate arithmetic ran on floats. -
Specifications that omitted error returns the function can actually make are corrected, so a caller reading the spec now sees every value it can receive.
Calendrical.next/3andprevious/3return{:error, :not_defined};Calendrical.Julian.year/1,quarter/2andmonth/2return{:error, :invalid_date};Calendrical.Interval.week/1returns{:error, :not_defined};Calendrical.Composite.new/2returns{:error, :must_be_a_list_of_dates | :no_calendars_configured}; and the astronomical Ecclesiastical functions return{:error, :year_out_of_range}.
Changed
-
Requires
localize ~> 1.0. -
Year-conversion helpers (
Calendrical.Roc.gregorian_year/1,Calendrical.Buddhist.buddhist_year/1, the Indian and Ethiopic equivalents) and the per-calendardate_to_iso_days/3implementations now guard their arguments withis_integer/1. A non-integer argument raisesFunctionClauseErrorrather than silently computing a float result. -
Dialyzer runs with the Localize flag set (
:error_handling,:unknown,:underspecs,:extra_return,:missing_return). The exclusions in.dialyzer_ignore.exsare documented individually.