|
25 | 25 | * [Keyword] Optimize `Keyword.pop/3`, `Keyword.pop!/2`, and `Keyword.pop_lazy/3` |
26 | 26 | * [List] Add `List.to_existing_atom/2` and `List.to_unsafe_atom/1` |
27 | 27 | * [MapSet] Optimize `MapSet.symmetric_difference/2` when set sizes differ |
| 28 | + * [Path] Add `Path.safe_join/2` |
28 | 29 | * [Registry] Optimize exact key matching in lookups |
29 | 30 | * [String] Optimize `String.bag_distance/2` |
30 | 31 | * [String] Add `String.to_existing_atom/2` and `String.to_unsafe_atom/1` |
|
42 | 43 | * [Calendar] Fix rounding for `:day`, `:hour`, and `:minute` units in `DateTime.diff/3`, `NaiveDateTime.diff/3`, and `Time.diff/3` |
43 | 44 | * [Calendar.ISO] Fix `Calendar.ISO.valid_time?/4` to reject non-integer microsecond precision |
44 | 45 | * [Calendar.ISO] Reject negative zero UTC offsets in basic formats |
| 46 | + * [Code.Formatter] Fix rendering calls where `do` is followed by non-block keyword arguments |
45 | 47 | * [Code.Fragment] Fix cursor completion when operator keywords such as `in`, `when`, `and`, `or`, and `not` follow another operator |
| 48 | + * [Date] Preserve the `:format` option in `Date.to_iso8601/2` with custom calendars |
46 | 49 | * [Date.Range] Fix slicing date ranges with stepped ranges |
47 | 50 | * [Duration] Reject duplicate seconds in `Duration.from_iso8601/1` |
48 | 51 | * [Enum] Fix `Enum.min/2,3` and `Enum.max/2,3` with custom sorters on ranges |
49 | 52 | * [IO.ANSI.Docs] Recognize additional punctuation delimiters when rendering Markdown |
50 | 53 | * [Kernel] Fix expansion of rebound variables in bitstring size expressions |
51 | 54 | * [Kernel] Expand `defguard` macros separately in guard and body contexts, preserving `and`/`or` error semantics outside guards |
| 55 | + * [Kernel] Fix inferred stacktrace types to allow arbitrary keyword metadata |
| 56 | + * [Kernel] Fix inferred types for functions with non-returning clauses |
52 | 57 | * [Kernel] Fix map field type inference in the presence of empty map types |
53 | 58 | * [Kernel] Fix tuple fetch and deletion type operations across equivalent tuple types |
54 | 59 | * [Kernel] Fix variables defined in one default argument leaking into subsequent default arguments |
| 60 | + * [Kernel] Improve the error message for non-atom struct keys |
| 61 | + * [Kernel] Raise when `|` is used in guards |
55 | 62 | * [Kernel.Typespec] Preserve metadata when proxying to Elixir typespecs |
56 | 63 | * [Keyword] Delete duplicate keys when `Keyword.get_and_update/3` and `Keyword.get_and_update!/3` return `:pop` |
| 64 | + * [Macro] Properly escape C1 control characters and Unicode noncharacters |
57 | 65 | * [NaiveDateTime] Fix `NaiveDateTime.diff/3` over-counting incomplete units |
| 66 | + * [Range] Fix `Range.disjoint?/2` for ranges beyond floating-point precision |
58 | 67 | * [Range] Fix `Range.disjoint?/2` for single-element ranges with a negative step |
59 | 68 | * [String] Fix `String.reverse/1` grapheme ordering around invalid UTF-8 bytes |
60 | 69 | * [String] Return `1.0` from `String.bag_distance/2` for two empty strings |
| 70 | + * [Time] Validate microseconds in `Time.from_seconds_after_midnight/3` |
61 | 71 |
|
62 | 72 | #### ExUnit |
63 | 73 |
|
|
73 | 83 |
|
74 | 84 | #### Mix |
75 | 85 |
|
| 86 | + * [Mix] Prevent synchronization lock files from being overwritten with empty contents |
76 | 87 | * [Mix.Release] Accept chardata paths in `Mix.Release.make_boot_script/4` |
77 | 88 | * [Mix.SCM.Git] Raise if Git refspecs start with `-` |
78 | 89 | * [mix deps] Recompile path and fetchable dependencies when one of the dependencies they were compiled with is removed |
|
0 commit comments