|
21 | 21 | * [Code.Formatter] Add a `:migrate_atom_interpolations` option |
22 | 22 | * [Kernel] Improve performance of type constructors and complex intersections |
23 | 23 | * [Kernel] Warn on binary patterns with segments that are not byte-aligned |
| 24 | + * [Kernel.ParallelCompiler] Add a hint when spawned processes cannot load modules defined during compilation |
24 | 25 | * [Keyword] Optimize `Keyword.pop/3`, `Keyword.pop!/2`, and `Keyword.pop_lazy/3` |
25 | 26 | * [List] Add `List.to_existing_atom/2` and `List.to_unsafe_atom/1` |
26 | 27 | * [MapSet] Optimize `MapSet.symmetric_difference/2` when set sizes differ |
|
37 | 38 |
|
38 | 39 | #### Elixir |
39 | 40 |
|
| 41 | + * [Calendar] Fix `Calendar.strftime/3` formatting of negative years with `%y` |
| 42 | + * [Calendar] Fix rounding for `:day`, `:hour`, and `:minute` units in `DateTime.diff/3`, `NaiveDateTime.diff/3`, and `Time.diff/3` |
| 43 | + * [Calendar.ISO] Fix `Calendar.ISO.valid_time?/4` to reject non-integer microsecond precision |
| 44 | + * [Calendar.ISO] Reject negative zero UTC offsets in basic formats |
40 | 45 | * [Code.Fragment] Fix cursor completion when operator keywords such as `in`, `when`, `and`, `or`, and `not` follow another operator |
41 | 46 | * [Date.Range] Fix slicing date ranges with stepped ranges |
42 | 47 | * [Duration] Reject duplicate seconds in `Duration.from_iso8601/1` |
43 | 48 | * [Enum] Fix `Enum.min/2,3` and `Enum.max/2,3` with custom sorters on ranges |
44 | 49 | * [IO.ANSI.Docs] Recognize additional punctuation delimiters when rendering Markdown |
45 | 50 | * [Kernel] Fix expansion of rebound variables in bitstring size expressions |
46 | 51 | * [Kernel] Expand `defguard` macros separately in guard and body contexts, preserving `and`/`or` error semantics outside guards |
| 52 | + * [Kernel] Fix map field type inference in the presence of empty map types |
| 53 | + * [Kernel] Fix tuple fetch and deletion type operations across equivalent tuple types |
47 | 54 | * [Kernel] Fix variables defined in one default argument leaking into subsequent default arguments |
48 | 55 | * [Kernel.Typespec] Preserve metadata when proxying to Elixir typespecs |
49 | 56 | * [Keyword] Delete duplicate keys when `Keyword.get_and_update/3` and `Keyword.get_and_update!/3` return `:pop` |
50 | 57 | * [NaiveDateTime] Fix `NaiveDateTime.diff/3` over-counting incomplete units |
51 | 58 | * [Range] Fix `Range.disjoint?/2` for single-element ranges with a negative step |
| 59 | + * [String] Fix `String.reverse/1` grapheme ordering around invalid UTF-8 bytes |
52 | 60 | * [String] Return `1.0` from `String.bag_distance/2` for two empty strings |
53 | 61 |
|
54 | 62 | #### ExUnit |
|
59 | 67 | #### IEx |
60 | 68 |
|
61 | 69 | * [IEx.Autocomplete] Fix completion crashes on maps with non-atom keys |
62 | | - * [IEx.Evaluator] Recognize `**` as a continuation operator |
| 70 | + * [IEx.Evaluator] Recognize `**` and `not in` as continuation operators |
63 | 71 | * [IEx.Helpers] Fix `r/1` when multiple modules are defined in the same file |
64 | 72 | * [IEx.Helpers] Fix heap and stack memory calculations in `process_info/1` |
65 | 73 |
|
|
70 | 78 | * [mix deps] Recompile path and fetchable dependencies when one of the dependencies they were compiled with is removed |
71 | 79 | * [mix deps] Mark fetchable dependencies for compilation when their build exists but their SCM manifest is missing |
72 | 80 | * [mix deps.compile] Preserve code paths and compiler options across OS partitions |
| 81 | + * [mix format] Pass `:sigils` to plugins invoked for sigils, allowing nested sigils to be formatted |
| 82 | + * [mix new] Avoid trailing whitespace in generated files |
73 | 83 |
|
74 | 84 | ### 3. Hard deprecations |
75 | 85 |
|
|
0 commit comments