Skip to content

Update dependency peggy to v5 #47

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented May 3, 2025

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
peggy (source) ^2.0.1 -> ^5.0.0 age adoption passing confidence

Release Notes

peggyjs/peggy (peggy)

v5.0.0

Compare Source

Released: 2025-05-03

Major Changes
  • BREAKING: Generated code no longer supports ES5. You can still generate
    commonjs or es6 exports, but the code itself requires ES2020. If you need
    to support earlier runtimes, you should use a transpiler such as Babel.
    Generated code now uses const and let, but is still not strict about
    using const wherever possible, due to the complexities of code generation.
    Work-arounds and polyfills for class extension, padding, and Object.assign
    have been removed in favor of their ES2020 equivalents.
    #​593
  • BREAKING: Node.js v20+ is now required for the CLI tools. No testing is
    performed on earlier versions of Node, and no issues will be fixed for
    earlier versions. #​593
  • BREAKING: The SyntaxError class exported from generated parsers is now a
    proper subclass of the built-in ECMAscript SyntaxError class. The name of
    the type has changed to PeggySyntaxError, which may cause some slight need
    for rework in TypeScript-aware projects. This was the main driver behind
    moving away from ES5. #​593
  • BREAKING: The grammar parser now uses your JavaScript environment's understanding
    of Unicode classes, rather than a partial copy of Unicode 8 as before. This
    should be more correct and evolve over time while staying backward-compatible
    to the extent that the Unicode Consortium keeps to its goals. Because this
    might slightly affect what rule names are valid, we are marking this as a
    breaking change just in case.
    #​602
New features
  • Extend library mode to include a success flag and a function for throwing
    syntax errors when needed. Library mode is still intended as internal-only,
    and subject to backward-incompatible changes in future versions.
    #​501
  • Slightly better verbose output from the CLI, showing where files are written.
    #​601
  • Merged class rules (rules which consist of a character class like
    foo = [0-9] that are only called from a rule like bar = foo / [a-z], which
    merges the two classes together into a single rule like bar = [0-9a-z]),
    and which are not allowedStartRules, are no longer output into the generated
    parser, since there is no way for that code to be called. This has a chance
    of generating issues for people who are calling the internals of the
    generated parser using
    @​peggyjs/coverage, but that's a
    lightly-documented feature of that library.
    #​594
  • Superfluous rules (rules which cannot be reached from an allowedStartRule)
    no longer generate code into the parser. An INFO-level debug statement is
    generated for each of these removals. Like merged class rules above, this
    should only be removing dead code.
    #​594
  • Character classes now process characters not in the Basic Multi-Lingual
    Plane (BMP) correctly. This feature requires a JavaScript environment
    that supports the u flag to regular expressions. The u flag will only
    be used on character classes that make use of this new feature.
    #​602
  • Unicode characters may now be specified with the \u{hex} syntax, allowing
    easier inclusion of characters not in the BMP (such as newer emoji). This
    syntax works both in string literals and in character classes.
    #​602
  • Errors pointing to non-BMP characters as the "found" text will now show the
    full character and not the replacement character for the first surrogate in
    the UTF-16 representation.
    #​602
  • Character classes can now be annotated with the "u" flag, which will force
    the character class into Unicode mode, where one full Codepoint will be matched.
    For example, [^a]u will match 💪 (U+1F4AA). Without the "u" flag, [^a]
    would only match \uD83D, the first surrogate that makes up U+1F4AA in UTF-16
    encoding. #​602
  • Empty inverted character classes such as [^] or [^]u now match one
    character, because they match "not-nothing". Without the "u" flag, this is
    the same as .. With the "u" flag, this matches an entire codepoint that
    is not a lone surrogate, not just a single UTF-16 code unit (one or two JS
    characters). Previously, this expression compiled without the "u" flag, but
    was useless. #​602
  • String literals may now contain characters from outside the BMP.
    #​602
  • Character classes may now contain \p{} or \P{} escapes to match or
    inverted-match Unicode properties. See
    MDN
    for more details. If you are generating code for a non-JavaScript environment
    using a plugin, this may be somewhat challenging for the plugin author.
    Please file an issue on Peggy for help.
    #​602
  • A new "semantic" pass has been added to the compiler, which occurs after all
    transformations, but before code generation. Plugins in this pass can rely
    on annotations from previous passes to reason about the code.
    #​606
  • Unreachable code in rules like 'b'* / 'c', ![], &[], !('f'*), and
    &('f'*) now cause a semantic warning. This warning may be escalated to an
    error in a future release, once experience in the field has shown that the
    approach does not catch code that is valid.
    #​606
  • Globals, UMD, and CommonJS are now downloadable from the online version. The
    weird version of globals that was only available from the web download was
    removed. #​608
Bug fixes
  • Switch to pnpm-action instead of corepack for GitHub Actions. Ensure that help text always wraps the same in tests, no matter the actual terminal width. #​588
  • All libraries used in the web site brought up-to-date, versioned with all
    other dependencies, and served locally. (TODO: Old version of CodeMirror to
    be replaced with Monaco). #​593
  • Code coverage increased for Peggy Grammar parser.
    #​593
  • Minor changes in code generation for parsers. More consistent indentation,
    trailing commas (for consistency with the Peggy house style).
    #​593
  • Avoid performance cliff for deeply-nested grammars when checking for
    infinite recursion. Previously, nesting more than about 30 layers deep
    caused drastically increasing processing time. Now, nesting more than 700
    layers deep causes "Maximum call stack size exceeded"; hopefully this is
    deep enough in practice. #​600
  • Small measures to try to get deno run -A npm:peggy to work. We will not
    know if these were successful until the package is published next. Testing
    with --format es -t foo will still not work in Deno.
    #​603
  • Fix a bug with named NEVER_MATCH expressions.
    #​454
  • Warnings from grammar parsing are now presented more fully to the user in
    the CLI. Info messages from grammar parsing are presented the same if in
    verbose mode. #​605
  • One of the intermediate files that is generated in tests was not getting
    a warning when it was unexpectedly found on test start.
    #​604
Documentation
  • Link to browserlist support matrix in documentation.
    #​593
  • When clicking on the link to the examples grammar, do not download the
    .peggy file, but instead show a .peggy.txt file in a browser window.
    #​595
  • Set a minimum height for the editors in the online version.
    #​596
  • Update the docs for newly-created compiler passes. Make pluck and literal
    syntax use the new "dim" approach for optional bits.
    $612

v4.2.0

Compare Source

Released: 2024-11-19

New features
  • #​568 Upgrading to TypeScript 5.6 allowed for generating parser.d.ts, which should may help people that use Peggy programmatically in nonstandard ways.
Bug fixes
  • #​567 Load config files and plugins correctly on Windows by using file: URIs in import().
Documentation
  • #​566 Slight tweaks to document generation.

v4.1.1

Compare Source

v4.1.0 did not actually get published due to a workflow issue that should
be sorted out now.

New features
  • #​477 Option to output .d.ts files next to .js from CLI.
  • #​530 Allow es6 plugins from CLI
  • #​532 Allow es6 options files from the CLI
Bug fixes
  • #​531 Clean up rollup hacks from CLI code.
  • #​514 Allow execution of the peggy binary on Windows by handling node runtime flags manually, executing a sub-instance of node to actually run peggy.
  • #​538 Fixed error in TS types for peg$maxFailExpected and peg$maxFailPos.
  • #​551 Moved to package-extract instead of a custom script for version file generation.

v4.0.3

Compare Source

Released: 2024-06-19

New features
  • #​509 Add and implement ES6 export button
Bug fixes
  • #​493 Allow use of an empty
    array, null, or undefined as allowedStartRules option
  • #​505 Fix vscode-eslint settings
    to work with eslint flat config
  • #​507 Remove stray semicolon in CSS
  • #​508 Fix broken text input in
    web version
  • #​512 Add "StartRules" to peg.d.ts
  • #​513 Allow whitespace between
    plucked word and its pattern.
  • #​520 Grammar with token "constructor" fails to generate
  • #​522 Switched from puppeteer
    to playwright for web tests, and added them to CI.
Documentation

v4.0.2

Compare Source

Released: 2024-02-26

Bug fixes
  • #​490 Throw error when imports are used in unsupported formats. Supported formats are now only "es" and "commonjs".
  • #​494 Updated docs to make --allowedRules * more clear
  • #​495 from-mem inadvertantly
    made the minimum supported node version v20.8. Updated to latest from-mem.

v4.0.1

Compare Source

Released: 2024-02-23

Bug fixes

v4.0.0

Compare Source

Released: 2024-02-13

Major Changes
  • #​379 Fix infinite recursion
    issue by moving reportInfiniteRecursion to the new prepare pass, and having
    it fail after finding the first issue. This will require plugin authors
    to ensure that reportInfiniteRecursion is in the new pass correctly.
  • #​417 BREAKING: change to AST to
    allow topLevelInitializer and initializer to be arrays, in support of
    multi-file inputs. This will require plugin updates. The CLI and API now
    take multiple files as input, where the first file is your main library, and
    subsequent files consist of a library of other rules. The CLI can take file
    names of the form npm:<package-name>/<filename> to load library rules from
    an NPM package that is installed relative to the previous non-npm file name,
    or to the current working directory if this is the first file name.
  • #​420 BREAKING: Node v16+ is now
    required for running the CLI or using Peggy as a library. Generated code
    still targets older runtimes.
  • #​456 BREAKING: Allow imports
    from external compiled grammars inside a source grammar, using import {rule} from "external.js". Note that this syntax will generate either
    import or require in the JavaScript output, depending on the value of
    the format parameter. This will need explicit support from
    plugins, with a few new AST node types and a few visitor changes.
  • #​463 Drop support for
    Internet Explorer. Move to eslint flat configs in order to lint minimized
    browser code for compatibility with
    defaults, maintained node versions, not op_mini all.
Minor Changes
  • #​400 Use @generated in generated
    code
  • #​404 Add support for -w/--watch
    to the command line interface.
  • #​415 Added browser key to package.json, pointing to Webpack output.
  • #​420 Updated dependencies to
    avoid audit warnings.
  • #​425 Add a pass to simplify single-character choices
  • #​427 Avoid double extraction of
    substrings in various MATCH_ bytecodes
  • #​430 Make generate-js.js ts clean
  • #​432 Add peggy.code-workspace
  • #​435 Setup tsconfig to detect use of library functions from es6 or later
  • #​436 Get rid of tsd
  • #​437 Better type checking for visitor
  • #​438 Make test build deterministic
  • #​439 Make peg$computePosDetails a little faster
  • #​440 Create directories for
    output and source-map if they do not exist, rather than erroring.
  • #​446 Add a right-associative ExponentiationExpression rule (operator **) to javascript.pegjs example grammar.
  • #​451 Make stack.js ts clean
  • #​452 Fixes to prepare generate-bytecode.js for ts-check
  • #​453 Make generate-bytecode.js ts-clean
  • #​460 Allow -t and -T testing
    from the CLI with --format es.
Bug Fixes
  • #​405 Doc example doesn't correspond to code example. From @​hildjj
  • #​415 Make docs match reality with import.
  • #​426 Fix typo in XML example.
  • #​434 Fixed bad example in docs.
  • #​445 Fix indentation in examples/javascript.pegjs.
  • #​450 Fixed misleading documentation.
  • #​466 Add docs for developers.

v3.0.2

Compare Source

Released: 2023-03-21

Minor Changes
  • #​392 Removed the --optimize
    command line argument, which has been invalid since v1.2. From @​hildjj.
Bug Fixes

v3.0.1

Compare Source

Released: 2022-03-05

Minor Changes
  • #​329 Allow plugin options in
    generate. This change loosens type checking strictness to allow for options
    unknown to Peggy, but used by plugins such as ts-pegjs. From @​hildjj.
Bug Fixes
  • #​329 Allow type definition for ParserBuildOptions to include plugin options. From @​hildjj.
  • #​346 Allow extra semicolons
    between rules. From @​hildjj.
  • #​347 Disallow '$' as an initial
    character in identifiers. This is not a breaking change because no grammar
    could have successfully used these in the past. From @​hildjj.
  • #​354 Various minor nits in the
    docs, including indentation and ensuring that the CNAME file is correct.
  • #​357 Fix infinite recursion
    possibility in repetition delimeters. From @​hildjj and @​Mingun.
  • #​359 Do not treat as many
    words as reserved. Clarify the documentation about identifiers. Ensure
    that it is more clear that the target language being generated determines
    what words are reserved. Clarify that reserved word checking is only
    done for labels. From @​nene.
  • #​364 Fix passing an incorrect
    external label to the expression inside the repeated node. From @​Mingun.

v3.0.0

Compare Source

Released: 2023-02-21

Major Changes
  • #​280 Add inline examples to
    the documentation, from @​hildjj
  • #​240 Generate SourceNodes for
    bytecode, from @​hildjj
  • #​338 BREAKING CHANGE. Update
    dependencies, causing minimum supported version of node.js to move to 14.
    Generated grammar source should still work on older node versions and some
    older browsers, but testing is currently manual for those. from @​hildjj
  • #​291: Add support for
    repetition operator expression|min .. max, delimiter|, from @​Mingun
  • #​339: BREAKING CHANGE. Updated
    the list of JavaScript reserved words. This will break existing grammars
    that use any of the new words in their rule or label names. from @​hildjj

Important information for plug-in authors: PR #​291 added 4 new opcodes to the bytecode:

  • IF_LT
  • IF_GE
  • IF_LT_DYNAMIC
  • IF_GE_DYNAMIC

and added a new AST node and a visitor method repeated. Do not forget to update your plug-ins.

Important information for grammar authors: the following words, which used to
be valid identifiers for rules and labels, are now treated as JavaScript
reserved words, and will cause errors at compile time if you are using them:

  • abstract
  • arguments
  • as
  • async
  • boolean
  • byte
  • char
  • double
  • eval
  • final
  • float
  • from
  • get
  • goto
  • int
  • long
  • native
  • of
  • set
  • short
  • synchronized
  • throws
  • transient
  • volatile
Minor Changes
  • #​274 "*" is now a valid allowedStartRule, which means all rules are allowed, from @​hildjj
  • #​229 new CLI option
    -S <rule> or --start-rule <rule> to specify the start rule when testing,
    from @​hildjj
  • #​236 Website: show line numbers
    in parser input textarea, from @​Mingun
  • #​280 new output type
    source-with-inline-map, which generates source text with an inline map,
    from @​hildjj
  • #​285 Require that a non-empty
    string be given as a grammarSource if you are generating a source map, from
    @​hildjj
  • #​206: New output type ast and
    an --ast flag for the CLI to get an internal grammar AST for investigation
    (can be useful for plugin writers), from @​Mingun
  • #​294 Website: show errors in the
    editors, from @​Mingun
  • #​297 Website: add Discord widget,
    from @​hildjj
  • #​299 Add example grammar for a
    SemVer.org semantic version string, from @​dselman
  • #​307 Allow grammars to have
    relative offsets into their source files (e.g. if embedded in another doc),
    from @​hildjj.
  • #​308 Add support for reading test
    data from stdin using -T -, from @​hildjj.
  • #​313 Create the website using
    eleventy, from @​camcherry
Bug Fixes
  • #​283 Fix incorrect type
    information for DiagnosticCallback, from @​hildjj
  • #​287 Allow large outputs
    to be received without blocking on the CLI tests, from @​hildjj

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants