Skip to content

Releases: streetsidesoftware/cspell

v8.3.1

01 Jan 12:01
Compare
Choose a tag to compare

Changes

Fixes

fix: Improve Trace Results (#5133)

fix: Improve Trace Results (#5133)


fix: Workflow Bot -- Update Dictionaries (main) (#5131)

fix: Workflow Bot -- Update Dictionaries (main) (#5131)

Update Dictionaries (main)

Summary

 packages/cspell-bundled-dicts/package.json | 2 +-
 pnpm-lock.yaml                             | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#5131)

fix: Workflow Bot -- Update Dictionaries (main) (#5131)

Update Dictionaries (main)

Summary

 packages/cspell-bundled-dicts/package.json | 2 +-
 pnpm-lock.yaml                             | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

v8.3.0

30 Dec 09:13
Compare
Choose a tag to compare

Changes

Features

feat: Add untrusted mode to the config loader (#5127)

feat: Add untrusted mode to the config loader (#5127)

There are times it is necessary to prevent loading JavaScript based configuration.

It is now possible to switch the config loader into untrusted mode. In this mode, the loader will not load JavaScript files outside of the CSpell configuration.

This is to support: Workspace Trust Extension Guide | Visual Studio Code Extension API


feat: Support calling a function to get the config (#5126)

feat: Support calling a function to get the config (#5126)

With the release of v8.3.0 it will be possible to return a function from cspell.config.js files. This function will be called to get the configuration. It can return a Config Object or Promise that resolves to a Config Object.

Example:

cspell.config.mjs

import { readFile } from 'node:fs/promises';

/**
 * @returns {Promise<import('@cspell/cspell-types').CSpellUserSettings>}
 */
export default async function getConfig() {
    const words = (await readFile(new URL('requirements.txt', import.meta.url), 'utf8'))
        .replace(/[.,]|([=<>].*)/g, ' ')
        .split(/\s+/g);
    return { id: 'python-imports', words };
}

Dictionary Updates

fix: Upgrade dictionaries (cryptocurrencies) (#5128)

fix: Upgrade dictionaries (cryptocurrencies) (#5128)


v8.2.4

28 Dec 11:15
Compare
Choose a tag to compare

Changes

Fixes

fix: handle symbolic links to config files (#5122)

fix: handle symbolic links to config files (#5122)

fixes #5120


fix: API: Update DocValidator (#5115)

fix: API: Update DocValidator (#5115)

Add/expose:

  • trace - to trace a word to a dictionary
  • getCheckedTextRanges

fix: Workflow Bot -- Update Dictionaries (main) (#5114)

fix: Workflow Bot -- Update Dictionaries (main) (#5114)

Update Dictionaries (main)

Summary

 packages/cspell-bundled-dicts/package.json         | 10 ++---
 .../cspell/src/app/__snapshots__/app.test.ts.snap  |  1 +
 pnpm-lock.yaml                                     | 43 +++++++++++++---------
 3 files changed, 31 insertions(+), 23 deletions(-)

fix: Improve caching of dictionaries (#5105)

fix: Improve caching of dictionaries (#5105)

This change reduces dictionary reload for long running processes.

The dictionary loader uses a WeakMap to keep dictionaries. This is very effective for keeping the memory size down when using the command-line tool. But, it also throws out dictionaries too soon when the spell checker is used as part of a server. To address this, the dictionary loader keep the most recent 10-20 loaded dictionaries in memory.


Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#5114)

fix: Workflow Bot -- Update Dictionaries (main) (#5114)

Update Dictionaries (main)

Summary

 packages/cspell-bundled-dicts/package.json         | 10 ++---
 .../cspell/src/app/__snapshots__/app.test.ts.snap  |  1 +
 pnpm-lock.yaml                                     | 43 +++++++++++++---------
 3 files changed, 31 insertions(+), 23 deletions(-)

v8.2.3

22 Dec 07:36
Compare
Choose a tag to compare

Changes

Fixes

fix: Improve performance by reducing FS requests (#5103)

fix: Improve performance by reducing FS reqeusts (#5103)


fix: correct the URI encoding (#5102)

fix: correct the URI encoding (#5102)

The uri encoding was overly aggressive.

This change only has an impact if there are special characters in the path.
Like: @$&+,=.


fix: Workflow Bot -- Update Dictionaries (main) (#5096)

fix: Workflow Bot -- Update Dictionaries (main) (#5096)

Update Dictionaries (main)

Summary

 .../Azure/azure-rest-api-specs/report.yaml         |   5 +-
 .../Azure/azure-rest-api-specs/snapshot.txt        |   3 +-
 .../snapshots/django/django/report.yaml            |   3 +-
 .../snapshots/django/django/snapshot.txt           |   3 +-
 .../snapshots/eslint/eslint/report.yaml            |  16 +--
 .../snapshots/eslint/eslint/snapshot.txt           |   4 +-
 .../iluwatar/java-design-patterns/report.yaml      |   3 +-
 .../iluwatar/java-design-patterns/snapshot.txt     |   3 +-
 .../snapshots/ktaranov/sqlserver-kit/report.yaml   |   6 +-
 .../snapshots/pagekit/pagekit/report.yaml          |   4 +-
 .../snapshots/pagekit/pagekit/snapshot.txt         |   4 +-
 .../snapshots/sveltejs/svelte/report.yaml          | 155 ++++++++++-----------
 .../snapshots/sveltejs/svelte/snapshot.txt         |   3 +-
 packages/cspell-bundled-dicts/package.json         |   8 +-
 pnpm-lock.yaml                                     |  32 ++---
 15 files changed, 117 insertions(+), 135 deletions(-)

fix: Use the VFS for all IO (#5095)

fix: Use the VFS for all IO (#5095)


Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#5096)

fix: Workflow Bot -- Update Dictionaries (main) (#5096)

Update Dictionaries (main)

Summary

 .../Azure/azure-rest-api-specs/report.yaml         |   5 +-
 .../Azure/azure-rest-api-specs/snapshot.txt        |   3 +-
 .../snapshots/django/django/report.yaml            |   3 +-
 .../snapshots/django/django/snapshot.txt           |   3 +-
 .../snapshots/eslint/eslint/report.yaml            |  16 +--
 .../snapshots/eslint/eslint/snapshot.txt           |   4 +-
 .../iluwatar/java-design-patterns/report.yaml      |   3 +-
 .../iluwatar/java-design-patterns/snapshot.txt     |   3 +-
 .../snapshots/ktaranov/sqlserver-kit/report.yaml   |   6 +-
 .../snapshots/pagekit/pagekit/report.yaml          |   4 +-
 .../snapshots/pagekit/pagekit/snapshot.txt         |   4 +-
 .../snapshots/sveltejs/svelte/report.yaml          | 155 ++++++++++-----------
 .../snapshots/sveltejs/svelte/snapshot.txt         |   3 +-
 packages/cspell-bundled-dicts/package.json         |   8 +-
 pnpm-lock.yaml                                     |  32 ++---
 15 files changed, 117 insertions(+), 135 deletions(-)

v8.2.1

20 Dec 17:48
Compare
Choose a tag to compare

Changes

Fixes

fix: Export types used by the VFS (#5093)

fix: Export types used by the VFS (#5093)


v8.2.0

20 Dec 14:20
Compare
Choose a tag to compare

Changes

docs: Fix typo in cspell.schema.json (#5051)

docs: Fix typo in cspell.schema.json (#5051)

I'm not sure if this is the meaning of the sentence, but at least it alerts you to the apparent typo.


Features

feat: Support `${env:NAME}` in paths (#5078)

feat: Support ${env:NAME} in paths (#5078)

Related to #924


feat: Support loading remote configuration. (#5075)

feat: Support loading remote configuration. (#5075)

This PR is to add support for reading cspell configuration over https or a virtual file system used by VSCode.

It is not possible to load JavaScript files remotely until it is supported by NodeJS.


feat: create a redirect provider (#5071)

feat: create a redirect provider (#5071)

Make it easy to alias URLs.


feat: Use VirtualFS to read config files. (#5067)

feat: Use VirtualFS to read config files. (#5067)


Fixes

fix: Protect against missing sourceCode (#5091)

fix: Protect against missing sourceCode (#5091)

fixes: #5085


fix: Issue 4811 (#5087)

fix: Issue 4811 (#5087)

fixes #4811


fix: Add endpoints to VirtualFS (#5065)

fix: Add endpoints to VirtualFS (#5065)

Add:

  • writeFile
  • getCapabilities

fix: Workflow Bot -- Update Dictionaries (main) (#5064)

fix: Workflow Bot -- Update Dictionaries (main) (#5064)

Update Dictionaries (main)

Summary

 integration-tests/snapshots/ktaranov/sqlserver-kit/report.yaml  | 6 +-----
 integration-tests/snapshots/ktaranov/sqlserver-kit/snapshot.txt | 6 +-----
 packages/cspell-bundled-dicts/package.json                      | 2 +-
 pnpm-lock.yaml                                                  | 8 ++++----
 4 files changed, 7 insertions(+), 15 deletions(-)

fix: Add VFS API to cspel-io (#5055)

fix: Add VFS API to cspel-io (#5055)


fix: support non-file URLs when calculating GlobRoot (#5054)

fix: support non-file URLs when calculating GlobRoot (#5054)


fix: Workflow Bot -- Update Dictionaries (main) (#5049)

fix: Workflow Bot -- Update Dictionaries (main) (#5049)

Update Dictionaries (main)

Summary

 .../snapshots/alexiosc/megistos/report.yaml        |  3 +-
 .../snapshots/alexiosc/megistos/snapshot.txt       |  3 +-
 .../aspnetboilerplate/report.yaml                  |  5 ++-
 .../aspnetboilerplate/snapshot.txt                 |  5 ++-
 .../snapshots/django/django/report.yaml            | 12 +++----
 .../snapshots/django/django/snapshot.txt           |  6 ++--
 .../snapshots/eslint/eslint/report.yaml            |  6 ++--
 .../snapshots/eslint/eslint/snapshot.txt           |  3 +-
 .../googleapis/google-cloud-cpp/report.yaml        | 20 ++++--------
 .../googleapis/google-cloud-cpp/snapshot.txt       |  8 +----
 .../iluwatar/java-design-patterns/report.yaml      |  5 +--
 .../iluwatar/java-design-patterns/snapshot.txt     |  5 +--
 integration-tests/snapshots/mdx-js/mdx/report.yaml |  3 +-
 .../snapshots/mdx-js/mdx/snapshot.txt              |  3 +-
 .../snapshots/neovim/nvim-lspconfig/report.yaml    |  5 +--
 .../snapshots/neovim/nvim-lspconfig/snapshot.txt   |  5 +--
 .../snapshots/php/php-src/report.yaml              | 17 +++++-----
 .../snapshots/php/php-src/snapshot.txt             | 13 ++++----
 .../snapshots/sveltejs/svelte/report.yaml          | 38 ++++++++++------------
 .../snapshots/sveltejs/svelte/snapshot.txt         | 36 ++++++++++----------
 .../typescript-cheatsheets/react/report.yaml       |  7 ++--
 .../typescript-cheatsheets/react/snapshot.txt      |  3 +-
 packages/cspell-bundled-dicts/package.json         |  2 +-
 pnpm-lock.yaml                                     |  8 ++---
 24 files changed, 88 insertions(+), 133 deletions(-)

fix: Make sure virtual configs do not appear as source files (#5048)

fix: Make sure virtual configs do not appear as source files (#5048)


Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#5064)

fix: Workflow Bot -- Update Dictionaries (main) (#5064)

Update Dictionaries (main)

Summary

 integration-tests/snapshots/ktaranov/sqlserver-kit/report.yaml  | 6 +-----
 integration-tests/snapshots/ktaranov/sqlserver-kit/snapshot.txt | 6 +-----
 packages/cspell-bundled-dicts/package.json                      | 2 +-
 pnpm-lock.yaml                                                  | 8 ++++----
 4 files changed, 7 insertions(+), 15 deletions(-)

fix: Workflow Bot -- Update Dictionaries (main) (#5049)

fix: Workflow Bot -- Update Dictionaries (main) (#5049)

Update Dictionaries (main)

Summary

 .../snapshots/alexiosc/megistos/report.yaml        |  3 +-
 .../snapshots/alexiosc/megistos/snapshot.txt       |  3 +-
 .../aspnetboilerplate/report.yaml                  |  5 ++-
 .../aspnetboilerplate/snapshot.txt                 |  5 ++-
 .../snapshots/django/django/report.yaml            | 12 +++----
 .../snapshots/django/django/snapshot.txt           |  6 ++--
 .../snapshots/eslint/eslint/report.yaml            |  6 ++--
 .../snapshots/eslint/eslint/snapshot.txt           |  3 +-
 .../googleapis/google-cloud-cpp/report.yaml        | 20 ++++--------
 .../googleapis/google-cloud-cpp/snapshot.txt       |  8 +----
 .../iluwatar/java-design-patterns/report.yaml      |  5 +--
 .../iluwatar/java-design-patterns/snapshot.txt     |  5 +--
 integration-tests/snapshots/mdx-js/mdx/report.yaml |  3 +-
 .../snapshots/mdx-js/mdx/snapshot.txt              |  3 +-
 .../snapshots/neovim/nvim-lspconfig/report.yaml    |  5 +--
 .../snapshots/neovim/nvim-lspconfig/snapshot.txt   |  5 +--
 .../snapshots/php/php-src/report.yaml              | 17 +++++-----
 .../snapshots/php/php-src/snapshot.txt             | 13 ++++----
 .../snapshots/sveltejs/svelte/report.yaml          | 38 ++++++++++------------
 .../snapshots/sveltejs/svelte/snapshot.txt         | 36 ++++++++++----------
 .../typescript-cheatsheets/react/report.yaml       |  7 ++--
 .../typescript-cheatsheets/react/snapshot.txt      |  3 +-
 packages/cspell-bundled-dicts/package.json         |  2 +-
 pnpm-lock.yaml                                     |  8 ++---
 24 files changed, 88 insertions(+), 133 deletions(-)

v8.1.3

06 Dec 13:32
Compare
Choose a tag to compare

Changes

Fixes

fix: Resolve relative imports without a leading `./` or `../`. (#5035)

fix: Resolve relative imports without a leading ./ or ../. (#5035)

So far it is not possible to reproduce.

Added tests for #5034


fix: Workflow Bot -- Update Dictionaries (main) (#5042)

fix: Workflow Bot -- Update Dictionaries (main) (#5042)

Update Dictionaries (main)

Summary

 .../snapshots/neovim/nvim-lspconfig/report.yaml          |  2 +-
 .../snapshots/neovim/nvim-lspconfig/snapshot.txt         |  2 +-
 packages/cspell-bundled-dicts/package.json               |  4 ++--
 pnpm-lock.yaml                                           | 16 ++++++++--------
 4 files changed, 12 insertions(+), 12 deletions(-)

fix: Make sure issues are reported relative to the specified root (#5043)

fix: Make sure issues are reported relative to the specified root (#5043)


Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#5042)

fix: Workflow Bot -- Update Dictionaries (main) (#5042)

Update Dictionaries (main)

Summary

 .../snapshots/neovim/nvim-lspconfig/report.yaml          |  2 +-
 .../snapshots/neovim/nvim-lspconfig/snapshot.txt         |  2 +-
 packages/cspell-bundled-dicts/package.json               |  4 ++--
 pnpm-lock.yaml                                           | 16 ++++++++--------
 4 files changed, 12 insertions(+), 12 deletions(-)

v8.1.2

04 Dec 15:17
Compare
Choose a tag to compare

Changes

Fixes

fix: expose ConfigLoader API (#5032)

fix: expose ConfigLoader API (#5032)


v8.1.1

04 Dec 10:50
Compare
Choose a tag to compare

Changes

Fix several typos in docs/configuration/language-settings.md (#5027)

Fix several typos in docs/configuration/language-settings.md (#5027)

Fixed several typos


Fixes

fix: Set `"sideEffects": false` in package.json (#5030)

fix: Set "sideEffects": false in package.json (#5030)

Since CSpell does not change any global state, try to encourage tree-shaking.


v8.1.0

01 Dec 13:04
Compare
Choose a tag to compare

Changes

This is a minor update for CSpell command line tool.

  • ESM Configuration Support (.mjs files).
  • Speed improvements
  • Dictionary Updates

Breaking API Changes

In order to support ESM configuration files, it was necessary to stop supporting sync configuration endpoints. As a result, many endpoint now return promises.

Features

feat: Support ESM configuration (#4995)

feat: Support ESM configuration (#4995)

ESM Configuration support

This is an important step towards running the spell checker in the browser.

With this feature, all synchronous APIs are deprecated or have been removed. This is a BREAKING change to API users.

fix: #4719
fix: #4868


feat: Remove support for Sync methods (#4989)

feat: Remove support for Sync methods (#4989)


feat: convert `@cspell/cspell-resolver` to ESM module (#4973)

feat: convert @cspell/cspell-resolver to ESM module (#4973)


feat: Change CSpellIO library to return file references when writing. (#4968)

feat: Change CSpellIO library to return file references when writing. (#4968)


Fixes

fix: Workflow Bot -- Update Dictionaries (main) (#5017)

fix: Workflow Bot -- Update Dictionaries (main) (#5017)

Update Dictionaries (main)

Summary

 .../aspnetboilerplate/report.yaml                  |  6 ++--
 .../aspnetboilerplate/snapshot.txt                 |  4 +--
 .../snapshots/caddyserver/caddy/report.yaml        |  4 +--
 .../snapshots/caddyserver/caddy/snapshot.txt       |  4 +--
 .../snapshots/django/django/report.yaml            |  8 ++---
 .../snapshots/django/django/snapshot.txt           |  4 +--
 .../snapshots/eslint/eslint/report.yaml            |  4 +--
 .../snapshots/eslint/eslint/snapshot.txt           |  3 +-
 .../googleapis/google-cloud-cpp/report.yaml        |  6 ++--
 .../googleapis/google-cloud-cpp/snapshot.txt       |  4 +--
 .../snapshots/php/php-src/report.yaml              |  8 +----
 .../snapshots/php/php-src/snapshot.txt             | 10 ++-----
 .../snapshots/wireapp/wire-webapp/report.yaml      |  3 +-
 .../snapshots/wireapp/wire-webapp/snapshot.txt     |  3 +-
 packages/cspell-bundled-dicts/package.json         |  8 ++---
 pnpm-lock.yaml                                     | 34 ++++++++++++++--------
 16 files changed, 45 insertions(+), 68 deletions(-)

perf: Speed up determining which files to check (#5008)

perf: Speed up determining which files to check (#5008)


fix: Improve fetching/caching config files (#5004)

fix: Improve fetching/caching config files (#5004)


fix: reduce duplicate config file reads. (#5002)

fix: reduce duplicate config file reads. (#5002)


fix: Workflow Bot -- Update Dictionaries (main) (#4986)

fix: Workflow Bot -- Update Dictionaries (main) (#4986)

Update Dictionaries (main)

Summary

 .../snapshots/RustPython/RustPython/report.yaml    |  6 ++--
 .../snapshots/RustPython/RustPython/snapshot.txt   |  4 +--
 .../snapshots/django/django/report.yaml            |  3 +-
 .../snapshots/django/django/snapshot.txt           |  3 +-
 .../snapshots/eslint/eslint/report.yaml            |  6 +---
 .../snapshots/eslint/eslint/snapshot.txt           |  8 ++----
 .../googleapis/google-cloud-cpp/report.yaml        |  4 +--
 .../googleapis/google-cloud-cpp/snapshot.txt       |  4 +--
 integration-tests/snapshots/mdx-js/mdx/report.yaml |  6 ++--
 .../snapshots/mdx-js/mdx/snapshot.txt              |  4 +--
 .../snapshots/neovim/nvim-lspconfig/report.yaml    |  3 +-
 .../snapshots/neovim/nvim-lspconfig/snapshot.txt   |  7 ++---
 .../snapshots/php/php-src/report.yaml              |  4 +--
 .../snapshots/php/php-src/snapshot.txt             |  4 +--
 .../snapshots/sveltejs/svelte/report.yaml          | 10 ++-----
 .../snapshots/sveltejs/svelte/snapshot.txt         |  8 ++----
 .../snapshots/wireapp/wire-webapp/report.yaml      |  5 ++--
 .../snapshots/wireapp/wire-webapp/snapshot.txt     |  3 +-
 packages/cspell-bundled-dicts/package.json         |  8 +++---
 pnpm-lock.yaml                                     | 32 +++++++++++-----------
 20 files changed, 47 insertions(+), 85 deletions(-)

refactor(cspell-io): URLs must be URLs and not filenames (#4984)

refactor(cspell-io): URLs must be URLs and not filenames (#4984)


dev: prevent writing to readonly config (#4983)

dev: prevent writing to readonly config (#4983)


refactor: Work towards supporting ESM config files as well as remote config files. (#4980)

refactor: Work towards supporting ESM config files as well as remote config files. (#4980)


refactor: Refactor cspell-config-lib (#4978)

refactor: Refactor cspell-config-lib (#4978)

This is a breaking API change.


Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#5017)

fix: Workflow Bot -- Update Dictionaries (main) (#5017)

Update Dictionaries (main)

Summary

 .../aspnetboilerplate/report.yaml                  |  6 ++--
 .../aspnetboilerplate/snapshot.txt                 |  4 +--
 .../snapshots/caddyserver/caddy/report.yaml        |  4 +--
 .../snapshots/caddyserver/caddy/snapshot.txt       |  4 +--
 .../snapshots/django/django/report.yaml            |  8 ++---
 .../snapshots/django/django/snapshot.txt           |  4 +--
 .../snapshots/eslint/eslint/report.yaml            |  4 +--
 .../snapshots/eslint/eslint/snapshot.txt           |  3 +-
 .../googleapis/google-cloud-cpp/report.yaml        |  6 ++--
 .../googleapis/google-cloud-cpp/snapshot.txt       |  4 +--
 .../snapshots/php/php-src/report.yaml              |  8 +----
 .../snapshots/php/php-src/snapshot.txt             | 10 ++-----
 .../snapshots/wireapp/wire-webapp/report.yaml      |  3 +-
 .../snapshots/wireapp/wire-webapp/snapshot.txt     |  3 +-
 packages/cspell-bundled-dicts/package.json         |  8 ++---
 pnpm-lock.yaml                                     | 34 ++++++++++++++--------
 16 files changed, 45 insertions(+), 68 deletions(-)

fix: Workflow Bot -- Update Dictionaries (main) (#4986)

fix: Workflow Bot -- Update Dictionaries (main) (#4986)

Update Dictionaries (main)

Summary

 .../snapshots/RustPython/RustPython/report.yaml    |  6 ++--
 .../snapshots/RustPython/RustPython/snapshot.txt   |  4 +--
 .../snapshots/django/django/report.yaml            |  3 +-
 .../snapshots/django/django/snapshot.txt           |  3 +-
 .../snapshots/eslint/eslint/report.yaml            |  6 +---
 .../snapshots/eslint/eslint/snapshot.txt           |  8 ++----
 .../googleapis/google-cloud-cpp/report.yaml        |  4 +--
 .../googleapis/google-cloud-cpp/snapshot.txt       |  4 +--
 integration-tests/snapshots/mdx-js/mdx/report.yaml |  6 ++--
 .../snapshots/mdx-js/mdx/snapshot.txt              |  4 +--
 .../snapshots/neovim/nvim-lspconfig/report.yaml    |  3 +-
 .../snapshots/neovim/nvim-lspconfig/snapshot.txt   |  7 ++---
 .../snapshots/php/php-src/report.yaml              |  4 +--
 .../snapshots/php/php-src/snapshot.txt             |  4 +--
 .../snapshots/sveltejs/svelte/report.yaml          | 10 ++-----
 .../snapshots/sveltejs/svelte/snapshot.txt         |  8 ++----
 .../snapshots/wireapp/wire-webapp/report.yaml      |  5 ++--
 .../snapshots/wireapp/wire-webapp/snapshot.txt     |  3 +-
 packages/cspell-bundled-dicts/package.json         |  8 +++---
 pnpm-lock.yaml                                     | 32 +++++++++++-----------
 20 files changed, 47 insertions(+), 85 deletions(-)

Documentation

docs: Update README.md (#4966)

docs: Update README.md (#4966)


doc: Update Supported versions (#4964)

doc: Update Supported versions (#4964)