Skip to content

Commit c519936

Browse files
committed
Update CHANGELOG
1 parent 97b44f1 commit c519936

1 file changed

Lines changed: 40 additions & 1 deletion

File tree

‎CHANGELOG.md‎

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,19 @@
1919
* [Access] Add support for keyword lists in `Access.key/2` and `Access.key!/1`
2020
* [Code] Add support for the `:erlc_options` compiler option
2121
* [Code.Formatter] Add a `:migrate_atom_interpolations` option
22+
* [File] Accept an open IO device in `File.stat/2`, `File.stat!/2`, `File.regular?/2`, `File.dir?/2`, and `File.exists?/2`
23+
* [IO.ANSI] Add `bold/0`, `bold_off/0`, `dim/0`, `dim_off/0`, `blink/0`, `invisible/0`, `invisible_off/0`, `strikethrough/0`, `strikethrough_off/0`, `italic_off/0`, `underline_off/0`, `overline/0`, `overline_off/0`, `cursor_forward/0`, `cursor_backward/0`, and `cursor_home/0`, aligning names with Erlang/OTP
2224
* [Kernel] Improve performance of type constructors and complex intersections
25+
* [Kernel] Warn on aliases that are never used because a later alias shadows them
2326
* [Kernel] Warn on binary patterns with segments that are not byte-aligned
2427
* [Kernel.ParallelCompiler] Add a hint when spawned processes cannot load modules defined during compilation
2528
* [Keyword] Optimize `Keyword.pop/3`, `Keyword.pop!/2`, and `Keyword.pop_lazy/3`
2629
* [List] Add `List.to_existing_atom/2` and `List.to_unsafe_atom/1`
2730
* [MapSet] Optimize `MapSet.symmetric_difference/2` when set sizes differ
2831
* [Path] Add `Path.safe_join/2`
32+
* [Protocol] Add the `:skip_consolidated` option to `Protocol.extract_protocols/2`
33+
* [Protocol] Warn when implementing a protocol for a module that does not define a struct
34+
* [Registry] Add the `:spawn_opt` option to `Registry.start_link/1`
2935
* [Registry] Optimize exact key matching in lookups
3036
* [String] Optimize `String.bag_distance/2`
3137
* [String] Add `String.to_existing_atom/2` and `String.to_unsafe_atom/1`
@@ -34,6 +40,11 @@
3440
#### ExUnit
3541

3642
* [ExUnit.Assertions] Add `trace/3` helper
43+
* [ExUnit.CLIFormatter] Improve rendering of test locations in some terminals
44+
45+
#### Mix
46+
47+
* [mix test] Add `--coverage-format` to emit coverage reports as `html` (the default) or `text`
3748

3849
### 2. Bug fixes
3950

@@ -44,9 +55,12 @@
4455
* [Calendar.ISO] Fix `Calendar.ISO.valid_time?/4` to reject non-integer microsecond precision
4556
* [Calendar.ISO] Reject negative zero UTC offsets in basic formats
4657
* [Code.Formatter] Fix rendering calls where `do` is followed by non-block keyword arguments
58+
* [Code.Formatter] Keep comments written after do-end block keywords (such as `rescue` and `after`) or after the right side of an operator close to where they were written, instead of moving them before the whole expression
4759
* [Code.Fragment] Fix cursor completion when operator keywords such as `in`, `when`, `and`, `or`, and `not` follow another operator
4860
* [Date] Preserve the `:format` option in `Date.to_iso8601/2` with custom calendars
4961
* [Date.Range] Fix slicing date ranges with stepped ranges
62+
* [DateTime] Keep the calendar of the given map in `DateTime.convert/2` and `DateTime.truncate/2`
63+
* [DateTime] Truncate fractional differences towards zero in `DateTime.diff/3`
5064
* [Duration] Reject duplicate seconds in `Duration.from_iso8601/1`
5165
* [Enum] Fix `Enum.min/2,3` and `Enum.max/2,3` with custom sorters on ranges
5266
* [IO.ANSI.Docs] Recognize additional punctuation delimiters when rendering Markdown
@@ -59,12 +73,26 @@
5973
* [Kernel] Fix variables defined in one default argument leaking into subsequent default arguments
6074
* [Kernel] Improve the error message for non-atom struct keys
6175
* [Kernel] Raise when `|` is used in guards
62-
* [Kernel.Typespec] Preserve metadata when proxying to Elixir typespecs
76+
* [Kernel] Raise on duplicate keys in `@enforce_keys`
77+
* [Kernel] Fix parsing precedence of unary operators applied to do-end blocks, such as `!if a do b end || c`
78+
* [Kernel] Do not accept empty tuples in `elem/2` and other tuple operations during type checking
79+
* [Kernel] Fix inferred types of comprehensions using `:into` with binaries and bitstrings
80+
* [Kernel] Fix type checker crash on functions with impossible clauses
81+
* [Kernel] Fix type checker crash on `defimpl` for modules that are not Elixir structs
82+
* [Kernel] Fix unsound type refinement of `min/2` and `max/2` arguments
83+
* [Kernel] Improve type precision of `--/2`
84+
* [Kernel] Improve type precision of `case` when some of its clauses always raise
85+
* [Kernel] Make pin patterns with singleton types precise, so subsequent redundant clauses are detected
86+
* [Kernel] Report applying empty function types as bad functions instead of bad arities
6387
* [Keyword] Delete duplicate keys when `Keyword.get_and_update/3` and `Keyword.get_and_update!/3` return `:pop`
6488
* [Macro] Properly escape C1 control characters and Unicode noncharacters
89+
* [Macro] Respect the disabled ANSI setting in `Macro.dbg/3`
90+
* [Macro] Return `true` from `Macro.quoted_literal?/1` for literals wrapped in `__block__`
6591
* [NaiveDateTime] Fix `NaiveDateTime.diff/3` over-counting incomplete units
92+
* [OptionParser] Report missing and invalid arguments for switches with `:keep`
6693
* [Range] Fix `Range.disjoint?/2` for ranges beyond floating-point precision
6794
* [Range] Fix `Range.disjoint?/2` for single-element ranges with a negative step
95+
* [Regex] Escape U+0085, U+200E, U+200F, U+2028, and U+2029 in `Regex.escape/1`, as Erlang/OTP 28+ ignores them in extended mode
6896
* [String] Fix `String.reverse/1` grapheme ordering around invalid UTF-8 bytes
6997
* [String] Return `1.0` from `String.bag_distance/2` for two empty strings
7098
* [Time] Validate microseconds in `Time.from_seconds_after_midnight/3`
@@ -73,35 +101,46 @@
73101

74102
* [ExUnit.Assertions] Fix `refute_in_delta/4` at the delta boundary and with negative deltas
75103
* [ExUnit.CaptureIO] Stop `StringIO` processes when capturing a named device fails
104+
* [ExUnit.CLIFormatter] Report failures whose messages contain invalid UTF-8
105+
* [ExUnit.FailuresManifest] Do not overlap failures of sibling parameterized tests
106+
* [ExUnit.Runner] Give each parameter set of parameterized tests its own random seed
107+
* [ExUnit.Runner] Preserve the order of async modules across `--repeat-until-failure` runs
76108

77109
#### IEx
78110

79111
* [IEx.Autocomplete] Fix completion crashes on maps with non-atom keys
112+
* [IEx.Autocomplete] Do not split Unicode codepoints when completing map keys
80113
* [IEx.Evaluator] Recognize `**` and `not in` as continuation operators
81114
* [IEx.Helpers] Fix `r/1` when multiple modules are defined in the same file
82115
* [IEx.Helpers] Fix heap and stack memory calculations in `process_info/1`
116+
* [IEx.Helpers] Fix showing macro specs in `h/1`
83117

84118
#### Mix
85119

86120
* [Mix] Prevent synchronization lock files from being overwritten with empty contents
87121
* [Mix.Release] Accept chardata paths in `Mix.Release.make_boot_script/4`
88122
* [Mix.SCM.Git] Raise if Git refspecs start with `-`
123+
* [mix compile] Compile optional dependencies that non-optional dependencies require when `--no-optional-deps` is given
89124
* [mix deps] Recompile path and fetchable dependencies when one of the dependencies they were compiled with is removed
90125
* [mix deps] Mark fetchable dependencies for compilation when their build exists but their SCM manifest is missing
91126
* [mix deps.compile] Preserve code paths and compiler options across OS partitions
92127
* [mix format] Pass `:sigils` to plugins invoked for sigils, allowing nested sigils to be formatted
128+
* [mix local.hex] Install Hex with `--if-missing` when the installed version is older than the requested one
93129
* [mix new] Avoid trailing whitespace in generated files
130+
* [mix release] Keep `:erts` in the release applications
94131

95132
### 3. Hard deprecations
96133

97134
#### Elixir
98135

99136
* [Macro.Env] `Macro.Env.fetch_alias/2` and `Macro.Env.fetch_macro_alias/2` are deprecated, use `Macro.Env.expand_alias/4` instead
137+
* [Path] `Path.safe_relative_to/2` is deprecated, use `Path.safe_relative/2` instead
100138

101139
### 4. Soft deprecations
102140

103141
#### Elixir
104142

143+
* [IO.ANSI] `blink_slow/0`, `conceal/0`, `crossed_out/0`, `cursor_left/0`, `cursor_right/0`, `home/0`, `no_underline/0`, `not_crossed_out/0`, `not_italic/0`, `not_overlined/0`, `overlined/0`, `reveal/0`, `reverse/0`, and `reverse_off/0` are deprecated in favor of the names aligned with Erlang/OTP
105144
* [Kernel] Atom interpolation (`:"foo_#{bar}"`) is deprecated in favor of explicit `String.to_unsafe_atom/1`
106145
* [List] `List.to_atom/1` is deprecated in favor of `List.to_unsafe_atom/1`
107146
* [String] `String.to_atom/1` is deprecated in favor of `String.to_unsafe_atom/1`

0 commit comments

Comments
 (0)