iso-weekAdded ISO week pattern
iso_week_pattern, iso_years, iso_year_ranges, iso_weeks, iso_week_rangesPattern resolver optimization
Fixed handling of length in deduce_child_result_space_bound_from_parent
Moved to using hand rolled parser for tzdb and related parsing
timedesc-sexp to further reduce core dependenciesSignificantly reduced number of dependencies, and moved JS, JSON code into separate packages
fmt, containers, oseqtimedesc-json package along with Yojson dependencytzlocal and tzdb stuff into their own separate packages (timedesc-tzlocal and timedesc-tzdb respectively)timedesc-tzlocal-js packageAdjusted Time_zone.Db.Compressed API to remove use of Marshal
timedesc-tzdb.full to not depend on timedesc as the compressed copy is stable and can be stored in repo directlytzlocal.js backend for js_of_ocamlAdded compressed binary encoding of time zone
tzdb-full now only considers 1970 to 2040 to further cut down sizeUpdated string conversion functions based on pretty printers which raise Date_time_cannot_deduce_offset_from_utc to raise the exception instead of returning None
string.Added ISO8601 printing facilities to Timestamp module for consistency
CCOpt with CCOption (this bumps dependency of Containers to >= 3.6)Main breaking changes:
_date suffix in names of Date.Ymd_date and Date.ISO_ord_dateCCOpt with CCOption (this bumps dependency of Containers to >= 3.6)Added "partial date" modules with ISO8601 parsing and printing facilities
ISO_weekYmAdded additional ISO8601 printing facilities for all three calendar systems
Date.Ymd.pp/to_iso8601 (these are just aliases to the RFC3339 printers)Date.ISO_week_date.pp/to_iso8601Date.ISO_ord.pp/to_iso8601Added additional ISO8601 parsing facilities for all three calendar systems
Date.Ymd.of_iso8601[_exn]Date.ISO_week_date.of_iso8601[_exn]Date.ISO_ord.of_iso8601[_exn]Added additional comparison functions to Date
lt, le, gt, ge, compareDatepp/to_iso8601 functions as aliases to the rfc3339 functions to TimedescPatched ISO8601 parsers and RFC3339/ISO8601 printers to handle second level time zone offset
Added additional date conversion functions to Utils
ymd_of_jdweekday_of_jddoy_of_ymdjd_of_ydoyTime_zone.recorded_offsetsTimere_parse.duration to Timere_parse.spanTimedesc.Date.of_iso8601Timedesc.Time.of_iso8601_exn variants of ISO8601 parsing functionspp_rfc3339 and to_rfc3339 to Timedesc.Date and Timedesc.Time modulesTimedesc.Date and Timedesc.TimeAdded inc_exc argument to bounded_intervals
bounded_intervals to pattern_intervalsinc_exc for hms_intervals APIpattern and Points.tTimere.resolve_exnresolve for edge casesTimere.Points.make to do a lot more deduction of missing arguments& to &&&Timere.Hms module, replaced use of Timere.Hms.t with Timedesc.Time.tTimedesc.Span.t abstractget_s, get_ns_offset and conversion function to_s_ns to Timedesc.Span moduleTimedesc.Time_zone_info.t abstracttz and fixed_offset_from_utc to Timedesc.Time_zone_info moduleTimedesc.Span.For_human.pp and to_stringAdded following to Timedesc.Utils
jd_of_ymdjd_of_datejd_of_unix_epochjd_span_of_unix_epochAdded Zoneless module
Zoneless moduleZoneless also includes extra ISO8601 parsing functions for handling ISO8601 strings with no time zone designatorsTime_zone.equal and Time_zone.utcAdded comparison functions
compare_chrono_mincompare_chrono_maxcompare_structTimedesc.Span.make handling of ns when ns = Int.min_intTimedesc.Span.Out_of_range exception for when it is not possible represent the value even after normalizationPattern_resolver.Branch.to_date_timeResolver.timestamp_safe_subpattern_resolver and resolver for edge cases nearing Timedesc.Timestamp.min_val and Timedesc.Timestamp.max_valBumped Timedesc dep to 0.3.0 for easier to handle time zone transitions (due to the updated definition of Timedesc.Timestamp.max_val)
Points.to_date_time by changing to simply return None if date time conversion failsbounded_intervalsresolverceil, floor and round to Timedesc.Span (and also re-exported them in Timedesc.Timestamp)Timedesc.Timestamp.max_val to closest integerinter [] to mean always instead of emptyFixed overapproximate_search_space_bottom_up handling of bounded intervals
weekdayTimedesc.Date.day accessor, which is used by Timedesc.dayweek to iso_week for ISO week date APICCOpt.get_exn with CCOpt.get_exn_orTimedesc.Time.t abstractTimedesc.Time.t underlying representationTimedesc.Time.make to handle 24:00:00 "properly" by rewriting it to 23:59:59.999_999_999Changes to date time components
Timere.Time_zone.makeTimere.Time_zone.make for handling time zones with UTC prefixTTimere.Time_zone.make_offset_only*Invalid_argument outside of Timere combinators, pp* and some *_exn functionsPoints.make error checkingHms moduleTimere.Week_date_time module for handling ISO week date timemonth, replaced use of it with just intDocumentation overhaul with readability improvement and introduction to date time handling added
Timere.Date_time.to_weekday to Timere.Date_time.weekdayUnified Duration and Span module. Now there is only Span module with human friendly constructors and view type in Timere.Span.For_human
Timere.Span.make_smallTimere.Date_time.of_iso8601make_hms to replace second with 59 when 60 is providedDate_time.make_precise to Date_time.make_unambiguousDate_timeTimere.Date_time.of_iso8601 due to failed date time constructionTime_zone.make_offset_only APItz_info and Time_zone.t definition to remove overlap of functionality for representing time zone with only constant offsetmin and max to min_val and max_val for Timere.Timestamp and Timere.Date_timesince and since_timestampResolver search space slicing fix in
slice_search_spaceoverapproximate_search_space_bottom_uprestrict_search_space_top_down{mday:...} to {day:...} in format string systemTimere.Timestamp moduleSpan.of_float handling of negative floatsprecision to frac_s for RFC3339 related functionsmake_hms to accept second field to be 60Timere.Date_time.make and Timere.Date_time.make_exn typesTimere.Date_time API tuningInt module with CCInt for building in version 4.06.1Fixed following functions which may exception when tzlocal.none backend is used
Timere.intervalsTimere.resolvetzlocal.utc backendinter resolution caused by incorrect batch and search space slicing logicsexp_of_timestamp which previously did not specify time zone explicitly as UTC after the default time zone parameter change in APIDate_time'.of_timestamp at places by specifying the time zone explicitly as UTCbounded_intervals to try to avoid constructing terms that result in (almost) non-terminationhmsTime.pattern for Range.Range_is_invalidTimere.Time_zone.local)Timere.Date_time APIDate_time and Duration modulesTimere.hms