Skip to content

0.12.0 - 2025-11-08

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Nov 11:05

Release Notes

New

  • RE2 flavor added

  • Intersection of character sets added, using the new & operator:

    [Thai] & [Nd] # equivalent to the regex [\p{Thai}&&\p{Nd}]
    

    Note that subtraction can be achieved by negating the character set to be subtracted:

    [Thai] & ![Nd] # equivalent to the regex [\p{Thai}--\p{Nd}]
    
  • Match Script Extensions, using the scx: or script_extensions: prefix:

    [scx:Syriac]
    

    Other Unicode properties also get optional prefixes:

    # old         # new         # alternative
    [Latin]       [sc:Latin]    [script:Latin]
    [InGreek]     [blk:Greek]   [block:Greek]
    [Letter]      [gc:Letter]   [general_category:Letter]
    

    Note that for the In prefix of Unicode blocks is omitted when the blk: or block: prefix is used. Unicode blocks with In instead of blk: will be deprecated.

  • pomsky test subcommand added to compile and test all *.pomsky files in a directory. This command ignores files matched by a .ignore or .gitignore file. For help, run pomsky test --help.

  • Unit tests can now be run with the Rust regex crate. To use it, specify --flavor=rust or --engine=rust.

  • Diagnostic to detect infinite recursion. If a recursive expression can never terminate, an error is shown.

Changes

  • lazy and unicode mode is no longer inherited when expanding variables.

    This changes the meaning of expressions such as this:

    let variable = 'test'*;
    enable lazy;
    variable
    

    Before Pomsky 0.12, the repetition was lazy, but now it isn't.

    The enable or disable statement has to appear before the repetition syntactically, it doesn't matter where the variable is used. The old behavior was too unintuitive and easy to mess up, so we fixed it.

  • Optimize single-character alternatives, and merge adjacent or overlapping ranges.

    For example, 'a' | ['bc'] | ['f'-'i'] is optimized to [a-cf-i].

    The order of character ranges in a set is no longer preserved. Currently, they are sorted in ascending order; for example, ['x' 'X' 'A'-'F' 'a'-'f'] becomes [A-FXa-fx].

  • No longer warn about lookbehind in JavaScript. Lookbehind is now widely supported.

  • Update Unicode support data for properties added in Unicode 15.x

Fixes

  • Allow supported Unicode binary properties in Java (previously, binary properties in Java were unsupported)

  • Link PCRE2 statically (previously it was linked dynamically, which doesn't work if PCRE2 isn't installed on the target system)

  • Allow Unicode blocks in Ruby, but not PCRE

  • Output [r] as \r, not as \n (this was a bug introduced by normalizing verbatim line endings in strings).

Install pomsky-bin 0.12.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/pomsky-lang/pomsky/releases/download/v0.12.0/pomsky-bin-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/pomsky-lang/pomsky/releases/download/v0.12.0/pomsky-bin-installer.ps1 | iex"

Install prebuilt binaries into your npm project

npm install @pomsky-lang/[email protected]

Download pomsky-bin 0.12.0

File Platform Checksum
pomsky-bin-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
pomsky-bin-x86_64-apple-darwin.tar.xz Intel macOS checksum
pomsky-bin-x86_64-pc-windows-msvc.zip x64 Windows checksum
pomsky-bin-x86_64-pc-windows-msvc.msi x64 Windows checksum
pomsky-bin-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
pomsky-bin-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
pomsky-bin-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum