Skip to content

Upgrading to 1.4.0 ​

Release 1.4.0 makes the string methods linear in time and memory and fixes their edge cases. Three changes can alter the results of existing programs:

  • replace is not recursive. The replaced text is not searched again, as in Python str.replace: 'aaaa' with 'aa' replaced by 'a' gives 'aa' (it gave 'a'), and a new containing old no longer loops forever. count=0 replaces nothing (it replaced one occurrence).
  • Unformatted I/O of a string stores its length. write(unit) astring writes the length (an I8P integer) then the characters, and read reads them back exactly; strings were truncated at 100 characters. Unformatted files written by an earlier version are not readable.
  • Defined results on edge cases. to_number on a string that is not a number gives 0 (integer kinds) or a quiet NaN (real kinds), it was undefined; split of a string made only of separators gives no tokens, it gave the string itself; count (of characters) no longer undercounts; count('') and unique('') no longer loop forever.

Changelog ​

All notable changes to this project are documented here. Versions follow Semantic Versioning. Format follows Keep a Changelog.

[1.8.0] — 2026-10-04 ​

Added ​

  • string_t: Fast exact number casting, count/index/strip options

Documentation ​

  • Cover the new methods in tutorial, cookbook and home pages

[1.7.0] — 2026-10-04 ​

Added ​

  • string_t: Add character classes, tr-like and padding methods

[1.6.0] — 2026-10-03 ​

Added ​

  • string_t: Add read_number with an error status, keep empty fields in split

[1.5.0] — 2026-10-03 ​

Added ​

  • string_t: Add match of wildcard patterns, make glob safe

[1.4.0] — 2026-10-03 ​

Documentation ​

  • Add the 1.4.0 upgrade notes, sync run_tests.sh and release.sh

Performance ​

  • string_t: Make split, replace, unique, escape, join and read_* linear

[1.3.1] — 2026-10-03 ​

Changed ​

  • cmake: Find PENF and FACE by their standard config names

Fixed ​

  • makefile: Repair the make build and keep the doctests in sync

  • cmake: Make the installed package usable by find_package

  • string_t: Return a not allocated string for an unknown codec

  • release: Sync fpm.toml version on release, unblock docs build

[1.3.0] — 2026-10-02 ​

Added ​

  • string_t: Add six string methods from the issue #3 wishlist

Documentation ​

  • Rebuild README and site on compiled examples, fix I/O bugs

Fixed ​

  • string_t: Prevent out-of-bounds on blank and null strings

  • fobos: Repair makecoverage rule and adopt double-dash fobis CLI

  • string_t: Correct is_real and base64 decode, extend slice/strip

[1.2.0] — 2026-10-02 ​

Fixed ​

  • docs: Untrack package-lock and pin esbuild for lock-free vite build

  • string_t: Guard R16P generic bindings with PENF_R16P macro

[1.1.6] — 2026-02-18 ​

Fixed ​

  • docs: Correct project name casing to StringiFor throughout

[1.1.5] — 2026-02-18 ​

Documentation ​

  • Add VitePress site, rework CI/CD, and refactor README

[1.1.4] — 2026-02-18 ​

Fixed ​

  • Fix GNU gfortran issue with recursive procedure