|
| 1 | ++++ |
| 2 | +title = "Release: v0.17.0" |
| 3 | ++++ |
| 4 | + |
| 5 | +## Macroverse |
| 6 | + |
| 7 | +### ✨ TL;DR |
| 8 | + |
| 9 | +This release supercharges the REPL with completions and precise error traces, introduces powerful new macros (`doto`, `time`, `if-let`, `when-let`), adds `macroexpand` support, enables native yield, improves string handling, and delivers broad performance gains and critical bug fixes. |
| 10 | + |
| 11 | +## Highlights |
| 12 | + |
| 13 | +### 🧠 Language Features |
| 14 | + |
| 15 | +- New macros: `doto`, `time`, `if-let`, `when-let` |
| 16 | +- `defexception` special form for custom exception types |
| 17 | +- Native `yield` support |
| 18 | +- Strings in output are now wrapped in quotes |
| 19 | +- Added `str\contains?` and `str\repeat` functions |
| 20 | +- New conversion functions: `phel->php` and `php->phel` |
| 21 | + |
| 22 | +### 🛠 Macro & Meta Programming |
| 23 | + |
| 24 | +- `macroexpand` functions for inspecting macros |
| 25 | +- Deprecated metadata is now visible in `doc` output |
| 26 | +- Macros now resolve correctly in namespaces with hyphens |
| 27 | +- Namespace encoding improved (hyphens converted to underscores) |
| 28 | + |
| 29 | +### 💻 REPL Improvements |
| 30 | + |
| 31 | +- REPL completion (auto-suggest) |
| 32 | +- REPL exceptions now show filename:line for better traceability |
| 33 | +- Namespace evaluation and re-definition fixes |
| 34 | +- Proper handling of global variables and re-definable bindings |
| 35 | + |
| 36 | +## Bug Fixes |
| 37 | + |
| 38 | +### 🧩 Core Language Fixes |
| 39 | + |
| 40 | +- Fixed `php/echo` not working |
| 41 | +- Fixed malfunctioning `hash-map` |
| 42 | +- Corrected behavior of multibyte string case functions |
| 43 | +- Resolved analyzer null checks and symbol resolution issues |
| 44 | +- Fixed private symbol resolution |
| 45 | + |
| 46 | +### 🧷 REPL Stability |
| 47 | + |
| 48 | +- Fixed global var handling |
| 49 | +- Allowed re-definitions in REPL |
| 50 | +- Fixed issues with `html` macro when used with when |
| 51 | +- Corrected bracket handling in multiline REPL strings |
| 52 | +- Fixed evaluation bugs in REPL namespaces |
| 53 | +- Fixed the inability to reload the user namespace |
| 54 | + |
| 55 | +### 🔐 Security |
| 56 | + |
| 57 | +- Patched header injection vulnerability |
| 58 | + |
| 59 | +## Performance & Internals |
| 60 | + |
| 61 | +- Optimized vector iteration and overall performance |
| 62 | +- Fixed test placeholders not being replaced in multiline strings |
| 63 | +- Clarified behavior of `all?` returning true for empty collections |
| 64 | +- Documented internals of the compiler |
| 65 | +- Fixed workflow cache usage in CI |
| 66 | +- Upgraded static analysis to PHPStan level 2 |
| 67 | + |
| 68 | +## Full list |
| 69 | + |
| 70 | +For a full list of changes, have a look at |
| 71 | +the [release notes](https://github.com/phel-lang/phel-lang/releases/tag/v0.17.0). |
0 commit comments