A fast EditorConfig linter written in Rust
Project description
edcfg-lint
A fast editorconfig linter written in Rust. It is many times faster than editorconfig-checker.
Still a work in progress, in particular the harness is mostly vibe-coded and needs a serious refresh. However, it already approaches the limits of what the hardware and OS can do despite this.
How it works inside
There honestly isn't a lot of magic: we use standard Rust crates.
ignoreis used for walking and parallelism.ec4rsis used as our EditorConfig core.memchris used for some fast (substring and character) searches.encoding_rsis used to handle charset detection and decoding.
edcfg-lint primarily comprises of:
- The harness (
src/main.rs) - The checker (
src/file.rs) - A caching version of
ec4rs::properties_of(src/ec.rs)
These crates are highly optimized (we're using a bunch of stuff that makes ripgrep so fast).
Performance
Benchmarked on an 16-inch MacBook Pro with M1 Max chip with 64 GB of memory and 4 TB SSD. Linting was done over home-assistant/core commit fc281b2faecdc86c0a716dfb4a1f243dde632297.
`.editorconfig` used
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.py]
indent_style = space
indent_size = 4
[*.{js,json,yml,yaml}]
indent_style = space
indent_size = 2
[*.md]
trim_trailing_whitespace = false
editorconfig-checker 3.6.0 (without -disable-indent-size, as edcfg-lint doesn't do this check at all):
Time (mean ± σ): 3.668 s ± 0.021 s [User: 18.099 s, System: 2.113 s]
Range (min … max): 3.655 s … 3.692 s 3 runs
edcfg-lint:
Time (mean ± σ): 432.1 ms ± 133.7 ms [User: 1394.8 ms, System: 2495.2 ms]
Range (min … max): 322.0 ms … 586.6 ms 5 runs
edcfg-lint is ~8x faster.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file edcfg_lint-0.1.1.tar.gz.
File metadata
- Download URL: edcfg_lint-0.1.1.tar.gz
- Upload date:
- Size: 24.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4b30f9da3c86de8ac68f7a303c1ad5d2a24a6b094e606e3d1d4de9d76befd39
|
|
| MD5 |
d2fd52104c4eccd0c56809a71afad30d
|
|
| BLAKE2b-256 |
ce321a133c5225ca6fea41dbb0e6b8246ccb21402c4b1fbe8ce9ebb27473a2d6
|
Provenance
The following attestation bundles were made for edcfg_lint-0.1.1.tar.gz:
Publisher:
release.yml on astei/edcfg-lint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edcfg_lint-0.1.1.tar.gz -
Subject digest:
b4b30f9da3c86de8ac68f7a303c1ad5d2a24a6b094e606e3d1d4de9d76befd39 - Sigstore transparency entry: 2208861377
- Sigstore integration time:
-
Permalink:
astei/edcfg-lint@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/astei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Trigger Event:
push
-
Statement type:
File details
Details for the file edcfg_lint-0.1.1-py3-none-win_amd64.whl.
File metadata
- Download URL: edcfg_lint-0.1.1-py3-none-win_amd64.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
038cc63ed9520bc84d8ae30f22923e6585cb8bf0588b9db04b0d864a923b9669
|
|
| MD5 |
b04e3eb9ae30d33f63a8404c7ac89bc8
|
|
| BLAKE2b-256 |
dd1c279f5ac67a6802b32b98cbea35455e9300ee542ecd63437b71a255d94e90
|
Provenance
The following attestation bundles were made for edcfg_lint-0.1.1-py3-none-win_amd64.whl:
Publisher:
release.yml on astei/edcfg-lint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edcfg_lint-0.1.1-py3-none-win_amd64.whl -
Subject digest:
038cc63ed9520bc84d8ae30f22923e6585cb8bf0588b9db04b0d864a923b9669 - Sigstore transparency entry: 2208862764
- Sigstore integration time:
-
Permalink:
astei/edcfg-lint@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/astei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Trigger Event:
push
-
Statement type:
File details
Details for the file edcfg_lint-0.1.1-py3-none-win32.whl.
File metadata
- Download URL: edcfg_lint-0.1.1-py3-none-win32.whl
- Upload date:
- Size: 1.2 MB
- Tags: Python 3, Windows x86
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af6a6c85997094e6aadf512c52677d7c38ec414638b0d73c385b0de2ece6b8b7
|
|
| MD5 |
b8e60df80807339f482b580f1b380bc5
|
|
| BLAKE2b-256 |
f7db82ab79111317815bcdbfadf9ff3e4022a4d85976339a5a40ee568ee452ee
|
Provenance
The following attestation bundles were made for edcfg_lint-0.1.1-py3-none-win32.whl:
Publisher:
release.yml on astei/edcfg-lint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edcfg_lint-0.1.1-py3-none-win32.whl -
Subject digest:
af6a6c85997094e6aadf512c52677d7c38ec414638b0d73c385b0de2ece6b8b7 - Sigstore transparency entry: 2208861564
- Sigstore integration time:
-
Permalink:
astei/edcfg-lint@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/astei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Trigger Event:
push
-
Statement type:
File details
Details for the file edcfg_lint-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: edcfg_lint-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fa6032fc8bab0012adbb8be3ee0e51fb97cb57d57d0d7756ee833b0f9b374b0
|
|
| MD5 |
55405b445f1b0d51d08e5e5ae1bbf5d4
|
|
| BLAKE2b-256 |
b267baf94f407ca853217049e1d44cc16a1cd83e3dc8c901517e495c328da58f
|
Provenance
The following attestation bundles were made for edcfg_lint-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on astei/edcfg-lint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edcfg_lint-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
9fa6032fc8bab0012adbb8be3ee0e51fb97cb57d57d0d7756ee833b0f9b374b0 - Sigstore transparency entry: 2208862298
- Sigstore integration time:
-
Permalink:
astei/edcfg-lint@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/astei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Trigger Event:
push
-
Statement type:
File details
Details for the file edcfg_lint-0.1.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: edcfg_lint-0.1.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 1.5 MB
- Tags: Python 3, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c85a3af0aed3b0f7ad2d8a1037bbf8a40e7f2de9eefa06d0211363296b0cba4
|
|
| MD5 |
968cfd130235008b73c6e3af8b0f4255
|
|
| BLAKE2b-256 |
6756f9dafb32ba2dbd7b0c76230941c5f790744d5e15601057545f5981851a82
|
Provenance
The following attestation bundles were made for edcfg_lint-0.1.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl:
Publisher:
release.yml on astei/edcfg-lint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edcfg_lint-0.1.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl -
Subject digest:
0c85a3af0aed3b0f7ad2d8a1037bbf8a40e7f2de9eefa06d0211363296b0cba4 - Sigstore transparency entry: 2208862969
- Sigstore integration time:
-
Permalink:
astei/edcfg-lint@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/astei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Trigger Event:
push
-
Statement type:
File details
Details for the file edcfg_lint-0.1.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: edcfg_lint-0.1.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d6206f4da4deefb31abf9dc24da5aa753681d51e4492d6287db5af4aa5293ae
|
|
| MD5 |
0254200e58e0e6cf80c1565668837e17
|
|
| BLAKE2b-256 |
d6bb0903eb48686c4ee162e0989ed21a151b0acbd293915968c51cf6c1adac0a
|
Provenance
The following attestation bundles were made for edcfg_lint-0.1.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl:
Publisher:
release.yml on astei/edcfg-lint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edcfg_lint-0.1.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl -
Subject digest:
1d6206f4da4deefb31abf9dc24da5aa753681d51e4492d6287db5af4aa5293ae - Sigstore transparency entry: 2208861885
- Sigstore integration time:
-
Permalink:
astei/edcfg-lint@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/astei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Trigger Event:
push
-
Statement type:
File details
Details for the file edcfg_lint-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: edcfg_lint-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09aa0e25a0db4b2a5bc90668a0f9479182c68b4d29e273fda4e93a10e3ee0564
|
|
| MD5 |
dd981d8986b0233ee10bc3f7acb88c2a
|
|
| BLAKE2b-256 |
8e6d1e9ebb03abe5515463268c119684f71a93e78933baf8dbd0cc64d0474453
|
Provenance
The following attestation bundles were made for edcfg_lint-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on astei/edcfg-lint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edcfg_lint-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
09aa0e25a0db4b2a5bc90668a0f9479182c68b4d29e273fda4e93a10e3ee0564 - Sigstore transparency entry: 2208862427
- Sigstore integration time:
-
Permalink:
astei/edcfg-lint@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/astei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Trigger Event:
push
-
Statement type:
File details
Details for the file edcfg_lint-0.1.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl.
File metadata
- Download URL: edcfg_lint-0.1.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
- Upload date:
- Size: 1.5 MB
- Tags: Python 3, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f978b0bb00731a00e7eec87ef07d7e97d0e913dd203eedaceb77f1d902ab2e60
|
|
| MD5 |
70a6b35467d66652d2dbfc8c6fd66a87
|
|
| BLAKE2b-256 |
c166e1df3fe1b1ad78553a8f0cb50a7b484b1c5f60518bbfd1a0e490ad6e1574
|
Provenance
The following attestation bundles were made for edcfg_lint-0.1.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl:
Publisher:
release.yml on astei/edcfg-lint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edcfg_lint-0.1.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl -
Subject digest:
f978b0bb00731a00e7eec87ef07d7e97d0e913dd203eedaceb77f1d902ab2e60 - Sigstore transparency entry: 2208862597
- Sigstore integration time:
-
Permalink:
astei/edcfg-lint@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/astei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Trigger Event:
push
-
Statement type:
File details
Details for the file edcfg_lint-0.1.1-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: edcfg_lint-0.1.1-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
187aa06aa33bbe7857e9ec2d6823c6beda62950e26dd9b1e302b283823ad4c24
|
|
| MD5 |
65672e8359e137733d10eab5f45a1add
|
|
| BLAKE2b-256 |
0f55cb5efe7cafa03a6a6d6f7a71c91c8d1482a8281a98b0544fe707746951f1
|
Provenance
The following attestation bundles were made for edcfg_lint-0.1.1-py3-none-macosx_11_0_arm64.whl:
Publisher:
release.yml on astei/edcfg-lint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edcfg_lint-0.1.1-py3-none-macosx_11_0_arm64.whl -
Subject digest:
187aa06aa33bbe7857e9ec2d6823c6beda62950e26dd9b1e302b283823ad4c24 - Sigstore transparency entry: 2208862025
- Sigstore integration time:
-
Permalink:
astei/edcfg-lint@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/astei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Trigger Event:
push
-
Statement type:
File details
Details for the file edcfg_lint-0.1.1-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: edcfg_lint-0.1.1-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e78eaec116a090eac75f0b4cd5cf5ac1792cd278e8d85a4239d32023b386fefc
|
|
| MD5 |
1d35d48571e1d83942a93134ee3f8715
|
|
| BLAKE2b-256 |
8ce366d992e8b7c48b250eec64c87fd331a7d801d32942d76771f371553212c8
|
Provenance
The following attestation bundles were made for edcfg_lint-0.1.1-py3-none-macosx_10_12_x86_64.whl:
Publisher:
release.yml on astei/edcfg-lint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edcfg_lint-0.1.1-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
e78eaec116a090eac75f0b4cd5cf5ac1792cd278e8d85a4239d32023b386fefc - Sigstore transparency entry: 2208862140
- Sigstore integration time:
-
Permalink:
astei/edcfg-lint@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/astei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d61468b8e1469dc65f9126d691e2fd098fe5653a -
Trigger Event:
push
-
Statement type: