Rosie the Riveter icon

Rosie Pattern Language

Modern text pattern matching to replace regex

Release plan

Last updated on 8 Dec 2018

In August of 2018, I left IBM and joined the faculty of Computer Science at NCSU. I was a professor before my IBM career, and it’s wonderful to be a professor again. This change has some positive implications for the Rosie project: We are building a small group of researchers and developers who will use and contribute to the project.

Another consequence is that the Rosie release schedule will likely follow the academic calendar. The next release, version 1.1.0, is planned for the end of this year (2018). Except for bug fixes, which can be released more often, we are planning subsequent releases for June and August.

I am committed to supporting users and to evolving the project. Please do report bugs and suggest enhancements on GitLab. And comments are welcome on the Rosie subreddit or directly by email. (See the left side menu for an email link.)

Release v1.1 plan (end of 2018)

Recent contributions include:

  • Haskell library
  • (Forthcoming) Python library for Rosie that presents a very similar API to the existing re module.
  • An RPL library which redefines ., ^, and $ such that:
    • Dot . will not match newline
    • Caret ^ will match the start of input or newline
    • Dollar $ will match the end of input or newline
    This library is imported like any other RPL library, and provides the ability to use these alternate definitions of builtins within the scope of the RPL code that imports it.
* Install script for Windows Subsystem for Linux

Functional enhancements:

  • The librosie ability to measure the time needed to perform a match will be exposed through the CLI. Two metrics will be reported, both are CPU time used by the Rosie process (user time) and are reported in microseconds: time spent within the matching vm, and total time. The total time is the sum of the time in the matching vm and the time needed to encode the output.

Internal changes:

  • In preparation for ahead-of-time compilation of arbitrary RPL patterns written by users, as well as the ones in the standard library, the patterns needed by Rosie internally have been pre-compiled. This set of pre-compiled patterns will be loaded from files at startup instead of being compiled from RPL source.
  • Ahead-of-time compilation, when delivered in a 2019 release, will reduce startup time, according to tests already conducted. It will also enable the Rosie binary to be split into a compiler component and a run-time component. When matching against a pre-compiled pattern, only the run-time binary is involved. Early experiments suggest that this binary will be less than 100Kb in size. The next Rosie release will be based on the refactoring that we have done to prepare for separate binaries.

In summary, the coming Rosie v1.1.0 release will contain fixes for reported bugs, several user contributions, one functional enhancement, and some internal changes.

Questions and feedback are welcome

Edit to contact information, August 15, 2023.

We welcome feedback and contributions. Please open issues (or merge requests) on GitLab, or get in touch by email.

You can find my contact information, including Mastodon and LinkedIn coordinates, on my personal blog. The mailing list has fallen out of use since we mostly use Slack, but perhaps it will be revived.