Rosie the Riveter icon

Rosie Pattern Language

Modern text pattern matching to replace regex

Rosie Interface Libraries

Last updated on 23 Feb 2019

The first release candidate for Rosie v1.1.0 is in the dev branch of the Rosie repository on GitLab. Among other changes, we have moved the code that interfaces between librosie and languages like Python, Go, C, and Haskell. Those interface libraries are now in the Clients subgroup of the Rosie Community group.

Please try out these clients if you program in one of the supported languages! The clients should work with the current Rosie v1.0.0 as well as the forthcoming v1.1.0. Thanks in advance for bug reports, enhancement suggestions, and pull requests!

Repository organization

Rosie Pattern Language group on GitLab

The main Rosie repository contains the CLI, librosie, and librosie.h. These are built from source by running make, and installed with make install.

The default destination, /usr/local, is customized by setting DESTDIR, e.g.

make install DESTDIR=/opt

Both the CLI, DESTDIR/bin/rosie, and librosie require the files in DESTDIR/lib/rosie to run.

In v1.0, this repository also contained the interface libraries needed to write programs that use librosie. We’ve been calling these libraries (like rosie.py) clients of librosie. Including them in the same repository as Rosie itself was a temporary convenience, and it’s time to move them out on their own.

Note: The other repositories in the Rosie Pattern Language group are submodules of the Rosie project. These will undergo some simplification in the coming months, but their structure should be irrelevant to Rosie users.

Rosie Community group on GitLab

The repositories in the Rosie Community group are meant to be maintained by users/contributors. Today there are a few repositories there:

  • rawdata: a small collection of patterns for destructuring raw text data.
  • lang: patterns for extracting interesting features from source code in a variety of languages. Inexplicably, the README contains instructions on how to create and use a ~/.rosierc file. (This should be part of the Rosie documentation.)
  • Packages is a group of different packagings of Rosie:
  • Clients is a group of repositories for librosie clients, so that Rosie can be used in Python, Haskell, Go, and other languages.

Edit August 15, 2023: A talented and generous contributor created a Rust interface to Rosie.

As you can infer from the list above, the Rosie Community repositories can be used to share RPL packages, to collect various packaging recipes, and to collect the librosie client libraries.

Current status

As of 23 February 2019, we have a first release candidate for v1.1.0 at the HEAD of the dev branch. This release is the first to have the librosie client libraries in separate repositories.

If you would like to run the bleeding edge version of Rosie, please try out this release candidate. And please try the various client libraries. We welcome issues to report bugs or suggest enhancements, and pull requests as well.


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

Edit August 15, 2023: You can find my contact information, including Mastodon and LinkedIn coordinates, on my personal blog.