You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+34Lines changed: 34 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -174,6 +174,33 @@ While fetching your dependencies and compiling an Elixir dependency in itself al
174
174
175
175
By setting `MIX_OS_DEPS_COMPILE_PARTITION_COUNT` to a number greater than 1, Mix will now compile multiple dependencies at the same time, using separate OS processes. Empirical testing shows that setting it to half of the number of cores on your machine is enough to maximize resource usage. The exact speed up will depend on the number of dependencies and the number of machine cores, although some reports mention up to 4x faster compilation times. If you plan to enable it on CI or build servers, keep in mind it will most likely have a direct impact on memory usage too.
176
176
177
+
## Improved pretty printing algorithm
178
+
179
+
Elixir v1.19 ships with a new pretty printing implementation that tracks limits as a whole, instead of per depth. Previous versions would track limits per depth. For example, if you had a list of lists of 4 elements and a limit of 5, it be pretty printed as follows:
180
+
181
+
```elixir
182
+
[
183
+
[1, 2, 3],
184
+
[1, 2, ...],
185
+
[1, ...],
186
+
[...],
187
+
...
188
+
]
189
+
```
190
+
191
+
While this allows for more information to be shown at different nesting levels, which is useful for complex data structures, it lead to some pathological cases where the `limit` option had little effect in actual filtering the amount of data shown. The new implementation decouples the limit handling from depth, decreasing it as it goes. Therefore, the list above with the same limit in Elixir v1.19 is now printed as:
192
+
193
+
```elixir
194
+
[
195
+
[1, 2, 3],
196
+
...
197
+
]
198
+
```
199
+
200
+
The outer list is the first element, the first nested list is the second, followed by three numbers, reaching the limit. This gives developers more precise control over pretty printing.
201
+
202
+
Given this may reduce the amount of data printed by default, the default limit has also been increased from 50 to 100. We may further increase it in upcoming releases based on community feedback.
203
+
177
204
## OpenChain certification
178
205
179
206
Elixir v1.19 is also our first release following OpenChain compliance, [as previously announced](https://elixir-lang.org/blog/2025/02/26/elixir-openchain-certification/). In a nutshell:
@@ -196,12 +223,15 @@ These additions offer greater transparency into the components and licenses of e
196
223
*[Code] Add `:indentation` option to `Code.string_to_quoted/2`
197
224
*[Code.Fragment] Preserve more block content around cursor in `container_cursor_to_quoted`
198
225
*[Code.Fragment] Add `:block_keyword_or_binary_operator` to `Code.Fragment` for more precise suggestions after operators and closing terminators
226
+
*[Code.Fragment] Add `Code.Fragment.lines/1`
199
227
*[Enum] Provide more information on `Enum.OutOfBoundsError`
200
228
*[Inspect] Allow `optional: :all` when deriving Inspect
201
229
*[Inspect.Algebra] Add optimistic/pessimistic groups as a simplified implementation of `next_break_fits`
230
+
*[IO.ANSI] Add ANSI codes to turn off conceal and crossed_out
202
231
*[Kernel] Allow controlling which applications are used during inference
203
232
*[Kernel] Support `min/2` and `max/2` as guards
204
233
*[Kernel.ParallelCompiler] Add `each_long_verification_threshold` which invokes a callback when type checking a module takes too long
234
+
*[Kernel.ParallelCompiler] Include lines in `== Compilation error in file ... ==` slogans
205
235
*[Macro] Print debugging results from `Macro.dbg/3` as they happen, instead of once at the end
206
236
*[Module] Do not automatically load modules after their compilation, guaranteeing a more consistent compile time experience and drastically improving compilation times
207
237
*[Protocol] Type checking of protocols dispatch and implementations
@@ -217,6 +247,7 @@ These additions offer greater transparency into the components and licenses of e
217
247
218
248
#### IEx
219
249
250
+
*[IEx] Support multi-line prompts (due to this feature, `:continuation_prompt` and `:alive_continuation_prompt` are no longer supported as IEx configuration)
220
251
*[IEx.Autocomplete] Functions annotated with `@doc group: "Name"` metadata will appear within their own groups in autocompletion
221
252
222
253
#### Mix
@@ -229,13 +260,15 @@ These additions offer greater transparency into the components and licenses of e
229
260
*[mix test] Allow to distinguish the exit status between warnings as errors and test failures
230
261
*[mix xref graph] Add support for `--format json`
231
262
*[mix xref graph] Emit a warning if `--source` is part of a cycle
0 commit comments