ExUnit seeds each test process with {phash2(module), phash2(name), seed}.
parameterize re-runs the module per parameter set without changing the
test name, so every parameter set of a test started from the same :rand
state and drew the same random sequence.
Hash the parameters together with the name when they are present. Tests
without parameters keep their previous seed, so existing --seed
reproductions are unaffected.
Assisted-by: Claude Code:claude-fable-5-1
Signed-off-by: Jechol Lee <mr.jechol@gmail.com>
A required unmatched key cannot occur in the other closed map, even when
the remaining unmatched keys include optional fields. Recognize this
case early to avoid retaining unnecessary BDD nodes during subtraction.
Assisted-by: Codex:GPT-6
Pattern matching on "-" and "+" binary prefixes directly across the
public function heads of parse_date/2, parse_naive_datetime/2, and
parse_utc_datetime/2 eliminates the need for parse_date_guarded/2,
parse_naive_datetime_guarded/2, and parse_utc_datetime_guarded/2.
This removes an intermediate function dispatch on every date and
datetime parsing call and removes 9 lines of code.
Assisted-by: Antigravity:Gemini-3.7-Flash
Branching on the step sign rather than `first_days <= last_days` eliminates
the need for `empty?/1` because the interval bounding checks inherently
guarantee non-emptiness. This aligns `Enumerable.Date.Range` with
`Enumerable.Range`, eliminates a private function call per membership
check, and removes 27 lines of redundant code.
Assisted-by: Antigravity:Gemini-3.7-Flash
Do not refine both operands from the result expectation because either operand may be discarded by term ordering. Apply the expectation only to the result and cover escaping operand bindings.
Assisted-by: Codex:GPT-5
This improves the runtime of `Enum.dedup_by/2` on lists by replacting the generic `reduce/3` implementation with a hand-rolled version similar in spirit to the `dedup_list/1` optimization. In my benchmarking, the magnitude of the improvement depends heavily on the size and shape of the data, but it looks roughly like this:
| List length | Duplicates | Speedup |
| 10 | 0 | +140% |
| 1,000 | 0 | +81% |
| 1,000,000 | 0 | +7% |
| 10 | 20% | +116% |
| 1,000 | 20% | +64% |
| 1,000,000 | 20% | +2% |
| 10 | 50% | +45% |
| 1,000 | 50% | +62% |
| 1,000,000 | 50% | +12% |
Align the Windows argument splitting warning with Erlang/OTP's
open_port/2 documentation by including .cmd in the list of affected
extensions alongside .bat and .com, and fixing a missing final period.
Also polish the mitigation advice grammar to maintain parallelism
(double-checking).
Assisted-by: Antigravity:Gemini-3.7-Flash
U+055F ARMENIAN ABBREVIATION MARK has Word_Break=MidLetter and is
Case_Ignorable in the UCD, but it was missing from the hardcoded list,
so the Greek final sigma context scan stopped at it instead of skipping
it. This affects String.downcase/2 and String.capitalize/2 in :greek
mode on both sides of the Final_Sigma rule.
Assisted-by: Claude Code:claude-opus-5
Signed-off-by: jaideeppyne <jaideeppyne1997@gmail.com>