Release: 0.17.0 - Macroverse
What's Changed
TL;DR: 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.
https://phel-lang.org/blog/release-0-17/
🥇 New features
- Add
dotomacro (#791) - Add
timemacro (#792) - Add
if-letandwhen-letmacros (#795) - Add native yield support (#802)
- Strings in output are wrapped with quotes (#806)
- Add
macroexpandfunctions (#810) - Add source filename:line on REPL exceptions (#812)
- Implement
defexceptionspecial form (#819) - Add REPL completion (#821)
- Add
phel->phpandphp->phelfunctions (#829) - Add public Repl completer and
ApiFacade::replComplete(#830) - Add
str\contains?function (#833) - Display deprecated metadata on doc (#834)
- Add
phel/str/repeat
🐛 Bug fixes
- Fix
php/echodoes not work (#729) - Fix
hash-mapmalfunction notice (#786) - Fix header injection vulnerability (#803)
- Fix multibyte string case functions (#805)
- Fix null checks on Analyzer forms (#807)
- Fix
RangeIteratorrewind state reset (#808) - Fix immutable global binding (#811)
- Fix private symbol refer resolution (#813)
- Fix global var handling in REPL (#814)
- Fix allow re-def bindings on REPL (#815)
- Fix
htmlmacro when usingwhenforms (#817) - Fix REPL multi-line string brackets (#818)
- Fix REPL namespace evaluation (#820)
- Resolve macros in namespaces with hyphens (#824)
- Fix
macroExpandto encode ns by replacing - with _ (#828) - Fix cannot reload user namespace (#832)
🏗️ Miscellaneous
- Use PHPStan level 2 (#785)
- Document
all?returns true for empty collection (#787) - Fix workflow cache (#797)
- Document internals compiler (#804)
- Optimize vector iteration (#809)
- Improve vector performance (#823)
- Test placeholder not replaced in multiline strings (#827)
- Improve
DependenciesForNamespaceperformance
Contributors
- @Chemaclass
- @smeghead
- @jasalt made their first contribution in https://github.com/phel-lang/phel-lang/pull/787
Full Changelog: v0.16.1...v0.17.0