## elixir-lang/elixir — v1.20.2…v1.20.3

_22 commits._

### Features
- **Add missing `Of.reset_vars` call in receive/after `badtimeout` error path (#15527)** (2fbf952)
- **Add put_dynamic for proper dynamic insertion (#15520)** (05d0354)

### Fixes
- **Fix elixirc --profile time switch argv parsing (#15647)** (fa6205c)
- **Fix `tuple_insert_static` crash on non-normalized empty type (#15542)** (bfd4dd3)
- **Fix `IEx.__break__!/3` fallback clause arity (#15595)** (96f28d4)
- **Enable doctests on Descr, fix stale examples (#15528)** (be12347)

### Backend
- **Release v1.20.3** (6efe0fc)
- **Update CHANGELOG** (b3f2e0d)
- **Do not return `{:ok, _}` on maps with empty lines in `map_put_static_value` (#15597)** (ea1519b)
- **Improve send return type (#15644)** (0564a59)
- **Optimize tuple and map emptiness checks (#15619)** (eded624)
- **Update CHANGELOG** (6bb46c3)
- **Ensure %_{} is precise in guards, closes #15635** (aa3dbdb)
- **Improve coverage of defguards** (a55c1f7)
- **Split tuple_insert_static into two paths (#15518)** (76df4c6)
- **Provide proper signature for ++** (f894bc4)
- **Batch cachers in parallel checker (#15545)** (51d6cfd)
- **Clarify protocols come later, closes #15529** (83ae474)
- **Refer to the right function in remote_apply error on `:maps.values/1` (#15526)** (67772ad)
- **Thread full descr through fun_denormalize reduce (#15524)** (4918e2d)
- **Refine types for andalso/orelse in expressions, see #15450** (cbf3836)
- **Improve error returned from `fun_apply` (#15522)** (989165c)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/elixir-lang/elixir?utm_source=github-action)._