Release: 0.26.0 - Seqable Strings

Released

String iteration + lazy file IO + more lazy seq functions + mocking framework + compiler optimizations

🎉 New Features

String Iteration & UTF-8 Support

  • Basic string iteration support (#1047)
  • Strings now work directly in foreach, count, frequencies, and all sequence functions
  • Sequence functions work directly on strings without explicit conversion
  • Added seq and phel\str/chars for explicitly converting strings to character vectors when needed
  • Full UTF-8 / multibyte iteration support

Lazy File & Directory Processing

  • Added partition-all for lazy partitioning with infinite sequence support (#1034)
  • Added line-seq for lazy line-by-line file reading with auto-cleanup (#1035)
  • Added file-seq for lazy recursive directory traversal (#1036)
  • Added read-file-lazy for lazy chunked file reading (#1037)
  • Added csv-seq for lazy CSV parsing (#1038)

More Fully Lazy Sequence Functions

  • concat (#1028)
  • interpose (#1029)
  • map-indexed (#1030)
  • interleave (#1031)
  • Variadic map (#1033)
  • partition (#1034)
  • Added lazy-seq and lazy-cat macros (#1043)

Core Library Improvements

  • Added mocking framework under phel\mock (#1042)
  • Added URL support to slurp (http/https/ftp) (#1040)
  • Added conj and deprecated push (#1046)
  • Added string index support to contains? (#1052)

✨ Developer Experience

  • Renamed collection args xs → coll for consistency (#1039)
  • Promoted assoc / dissoc, deprecated put / unset (#1041)
  • Improved docblocks across namespaces with examples (#1044)
  • Optimized compiler with multilevel caching (~25–35% faster, ~10% less memory) (#1045)

🐛 Bug Fixes

  • Fixed into for PersistentList and other ConcatInterface types lacking PushInterface
  • Fixed contains? to use character count instead of byte count for multibyte UTF-8 strings (#1053)
  • Prevent random failures in RunCommandTest with isolated cache (#1049)
  • Cleanup / rename generator classes (#1050)

Downloads


View release on GitHub