Skip to content

Changelog

All notable changes to the fnmatch-regex project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

0.3.0 - 2026-02-19

Semi-incompatible changes

  • Bump MSRV to 1.85.
  • Add the regex feature, enabled by default; it enables:
    • the dependency on the regex crate
    • the glob_to_regex function
    • the Error::InvalidRegex enum value
  • Add the std feature, enabled by default; it enables a no-std build, but we still use the alloc crate.

Fixes

  • Also escape closing ] and } characters outside of a character class or alternation; some regular expression parsers consider unescaped ones invalid.
  • Fix a list item indentation in a docstring.

Additions

  • Add the glob_to_regex_pattern function that converts the glob pattern to a regular expression pattern, and use it internally in glob_to_regex.
  • Dependencies:
    • allow itertools 0.14.x and rstest 0.24.x - 0.26.x with no changes
  • Test suite:
    • check that the glob pattern is converted into the correct regular expression pattern
    • add a couple of execline tools to run the build and the test suite
    • add a dependency on roundlet and use its test-log-simple feature
  • Add GitLab CI configuration; thanks, Iohann Rabeson, for the base definition!

Other changes

  • Assorted fixes suggested by Clippy.
  • Drop the thiserror dependency, derive Error and Display ourselves.
  • Bump the minimal versions of crates we depend on to correspond to the ones available in Debian 13 (trixie).
  • With MSRV 1.62, derive Default for an internal enum.
  • With MSRV 1.81, convert #[allow(...)] directives to #[expect(...)] ones and specify the reason.
  • With MSRV 1.85, switch to the 2024 Rust edition.
  • Move the SPDX reuse overrides from .reuse/dep5 to REUSE.toml.
  • Documentation:
    • switch from the unsupported mkdocs 1.x to a pre-release version of the zensical tool; adapt the ReadTheDocs configuration

0.2.1 - 2024-10-12

MSRV declaration

  • Declare MSRV 1.58 and use inline format string arguments.

Fixes

  • Allow literal matching of characters that do not have any special meaning in the glob context, but may have special meaning as regular expression metacharacters, such as ( or ). Thanks, Christoph Heer!
  • Convert an unreachable panic message to an internal error; now the code should really never panic.
  • Add a docstring to the unit tests top-level module.

Additions

  • Add the InternalError value to the Error enum.
  • Start some MkDocs documentation.

Other changes

  • Move the Clippy configuration to a run-clippy.sh tool.
  • Keep the Cargo.lock file under version control.
  • Switch from quickerror to thiserror for the Error enum.
  • Use itertools 0.13 and rstest 0.23 with no changes.
  • Insist that all public and private items be documented.
  • Specify minimum versions for the dependencies as found in the Debian stable distribution.
  • Mark the Itertools trait as unused by name.
  • Drop mkdocstrings and mkdocstrings-python from the documentation pip requirements file, we do not use them.

0.2.0 - 2022-06-11

INCOMPATIBLE CHANGES

  • The fnmatch_regex::error::Error class is now an enum that uses the quick-error library, not our own hand-rolled struct any more.
  • The glob_to_regex() function returns a plain error object now, not a boxed one.

Fixes

  • Refactor the code to follow Rust best practices and some Clippy suggestions; among other things, the code will no longer panic.

Additions

  • Add an EditorConfig definitions file.
  • Add the categories and keywords Cargo package attributes.

Other changes

  • Switch to Rust 2021 edition.
  • Refactor the code to avoid pushing to strings and vectors, using some internal iterator/adapter structs instead. Thanks to Kevin Reid for a couple of iterator-related suggestions!
  • Use the rstest library for data-driven testing instead of doing it by ourselves.
  • Use the itertools library to simplify some operations a whole lot. Thanks again to Kevin Reid for pointing it out to me!

0.1.0 - 2021-06-22

Started

  • First public release.