Commit Graph
12807 Commits
Author SHA1 Message Date
Łukasz Samson 784db65375 Fix missed optimization of Kernel.put_elem/3 (#15480)
?reorder added in 87582af54 used wrong arity and wrong erlang call
2026-06-15 12:16:54 +02:00
Jean Klingler 2421be6732 Fix bin comprehensions when option is used (#15473)
* Fix bin comprehensions - static size

* Fix bin comprehensions - pinned var size

* Fix bin comprehensions - operations

* Add tests for nested generators
2026-06-15 17:32:26 +09:00
Barna Kovacs d5e131623d Optimize behaviour_defined? (#15478) 2026-06-15 10:19:03 +02:00
Barna Kovacs 9046a2fe72 Optimize URI.to_string/1 (#15477) 2026-06-15 00:20:48 +02:00
Barna Kovacs 1796733076 Optimize unpercent with guard and by avoiding with clause (#15476) 2026-06-14 21:46:02 +02:00
Barna Kovacs c958e540e9 Optimize bag_distance by calling bag_difference only once 2026-06-14 20:31:27 +02:00
José Valim 36f272cdf0 Raise better error messages when expected structs disappear, closes #15472 2026-06-14 13:55:28 +02:00
Barna Kovacs efcdfb8eca Optimize MapSet.symmetric_difference/2 when sizes mismatched (#15471) 2026-06-14 12:58:17 +02:00
Jean Klingler df9d1d6e52 Cleaner error message for unquote when quote is used in a pattern (#15469) 2026-06-13 21:15:55 +09:00
José Valim 09e1448710 Simplify precision tracking in bitstrings 2026-06-13 12:11:14 +02:00
José Valim 47b762b4f1 Track reused variables in bitstring patterns 2026-06-13 11:17:26 +02:00
Barna Kovacs b48221d221 Optimize Keyword.pop/3, pop!/2, and pop_lazy/3 (#15466)
Eliminate redundant list traversal by calling :lists.keyfind + delete_key
directly instead of going through fetch/2 + delete/2.

The old code performed 3 traversals when the key was present:
1. :lists.keyfind (inside fetch)
2. :lists.keymember (inside delete — redundant)
3. delete_key (inside delete)

The new code performs 2 traversals:
1. :lists.keyfind (find the value)
2. delete_key (remove all matching entries)

Benchmark shows ~1.15x speedup on avg (noisy system)
2026-06-12 21:02:13 +02:00
José Valim 82fa62d0a5 Use cyclic instead of recursive, add more examples, closes #15462 2026-06-12 18:50:54 +02:00
José Valim 83ac4fe29c Ignore additional callbacks in protocol implementation, closes #15456 2026-06-12 18:45:43 +02:00
José Valim 6a14c55681 Warn on unaligned binary segments
Closes #15465.
2026-06-12 18:06:05 +02:00
José Valim 3ba669da3e Log times to type check modules when profiling 2026-06-12 13:57:16 +02:00
Barna Kovacs 7ad36f1bcc Correct :as_list typo to :as_lists in inspect examples (#15464)
Fixes occurrences where :as_list was used instead of :as_lists
for the :charlists option in List documentation and the getting
started guide.
2026-06-12 13:15:13 +02:00
José Valim 9f24a452f8 Provide bare and opt set operations (#15433) 2026-06-10 19:37:25 +02:00
Łukasz Samson fcf47f34ab Add missing required key to __info__(:struct) type (#15453) 2026-06-10 16:41:15 +02:00
José Valim f8ffaf01b5 Document false positives, closes #15451 2026-06-10 09:27:32 +02:00
Alexander Gubarev bb8480fc3c Typo fixes (#15447) 2026-06-10 00:25:22 +02:00
José Valim c64417d72f Limit version numbers to 14 bytes
This avoids parsing too large integers.

CVE-2026-49762
GHSA-w2h8-8x3g-278p
2026-06-09 15:25:57 +02:00
José Valim eacf0a9baf Add docs about URI encoding/to_string 2026-06-09 14:20:41 +02:00
José Valim eab32c2797 Cap width in strftime to 1024 characters 2026-06-09 13:25:55 +02:00
José Valim 65e6b08576 Tag lists member as returning boolean 2026-06-07 11:07:14 +02:00
Gary Rennie 9ee4bcf564 Add support for erlc_options and beam_debug_info chunk to support edb (#15438) 2026-06-07 10:53:57 +02:00
Łukasz Samson 8a8fbcf2b1 Add capture_arg to Code.Fragment.cursor_context spec (#15441) 2026-06-06 18:31:28 +02:00
Andrea LeopardiandJosé Valim 45fc548139 Add more docs to System.otp_release/0 (#15440)
Co-authored-by: José Valim <jose.valim@dashbit.co>
2026-06-06 13:45:16 +02:00
José Valim 9b65902446 Deal with empty canonical on doc generation 2026-06-05 15:08:18 +02:00
José Valim b897da7b4c require_file releases the file if compilation fails 2026-06-04 19:42:34 +02:00
José Valim d44ad8142a Do not discard metadata when proxying to elixir typespecs 2026-06-04 19:29:50 +02:00
aeturnumfluctus 7ff272706a Remove pluralization in RuntimeError documentation (#15435) 2026-06-03 16:17:25 +02:00
José Valim fa1ff52c39 Clarify registry docs, closes #15431 2026-06-02 10:28:15 +02:00
Raymond Loranger 55da97b9a3 Remove qualified call in IO.ANSI (#15430) 2026-06-01 21:49:25 +02:00
Jonatan Männchen b5f1864d4e Use package.hexdocs.pm URL format instead of hexdocs.pm/package (#15429) 2026-05-30 22:19:31 +02:00
José Valim f781a02a24 Unify reverse_arrow/guard_context handling 2026-05-27 11:10:16 +02:00
Guillaume Duboc 91e622889d Refine static predicate branches (#15426) 2026-05-27 10:48:55 +02:00
Jean Klingler db6e80277d Never suggest back invalid characters in tokenizer hint (#15421) 2026-05-27 10:23:12 +02:00
José Valim 23a431223b Optimize Registry exact key matching
Assisted-by: ChatGPT-5.5/Codex for test case generation.

Closes #15418.
2026-05-26 12:31:47 +02:00
Jean Klingler 571c108503 Inline in empty list in erlang pass (#15413) 2026-05-24 09:05:42 +09:00
Łukasz Samson 209b0b31ff Fix typo in JSON.Encoder moduledoc (#15416) 2026-05-23 19:33:39 +09:00
Łukasz Samson 274dbb6e10 Fix trapped signal documentation (#15415)
`sigstop` is untrappable on POSIX
`erl_signal_handler` implementation confirms that `sigterm` is trapped
https://github.com/erlang/otp/blob/bf6adb8744a589c89eb79c8ae9c49ca348f325fd/lib/kernel/src/erl_signal_handler.erl#L39
2026-05-23 10:05:26 +02:00
José Valim e17cb856a0 Avoid false positives on cascading warnings
Only emit warnings for missing exports in defined
modules to avoid false positives with modules from
the current project which may not have been defined
yet.
2026-05-22 10:41:13 +02:00
José Valim 32d5bf3f18 Improve tracking of g df within the type system 2026-05-22 10:14:30 +02:00
José Valim c494891344 Avoid warnings when generating docs 2026-05-22 10:05:14 +02:00
José Valim 5337ab8716 Revert expansion of or/and in guards
This partially reverts aad63173 as it caused
massive AST to generate when expanding guards
with `expr in [...]` checks in them, as each
`or` became a full-blown case expression.

Alternative approaches will be explored in
future releases.
2026-05-22 09:51:09 +02:00
José Valim 8336f33263 Wrap quote in a function that will implement recursive types
Closes #15410.
2026-05-22 09:51:09 +02:00
José Valim b08f6fa3e2 Avoid redundant emptiness checks on list/tuple emptiness (#15412) 2026-05-22 09:08:19 +02:00
Kevin Schweikert 97abb54442 Colorize CLI error banner (#15408)
The script-crash path in Kernel.CLI.print_error/3 now renders the
exception banner (e.g. "** (ArgumentError) ...") in red when
IO.ANSI.enabled?/0 is true. The stacktrace stays plain.

Assisted-by: claude-code:claude-opus-4-7
2026-05-21 15:05:13 +02:00
José Valim 07e34342da Deprecate Macro.Env.fetch_alias/2 and Macro.Env.fetch_macro_alias/2 2026-05-21 13:52:13 +02:00