About Ur
Ur is a universal formatter and linter for every programming language. It formats each file as the formatter its language’s projects already use, such as Black, Prettier, and rustfmt, and lints every language with the same rules, finding the duplicated code and data, expressions that do nothing, and tests that cannot fail that formatters and most linters miss.
One tool for every language
A project in several languages usually brings a formatter and a linter for each, every one
installed, configured, and run its own way. Ur is one binary with nothing else to install: one
command formats a project, one check lints it, and one ur.toml configures both for every language
in it. It needs no account and runs entirely on your machine; a check makes no network connections.
Good, fast, cheap
The motto on Ur’s badge is a promise.
- Good. Ur parses every language it supports, in each of its versions and dialects, into
lossless syntax trees, and its grammars are tested against each language’s reference parser on
large real-world codebases.
ur format --verifychecks that each formatted file parses as the original did and differs from it only in layout. The linter lowers every language to one intermediate form and normalizes it, so code that does the same thing comes out the same however it is written, and its clone engine finds every copy. - Fast. Ur caches its results by file content in a store every checkout shares, so later runs
redo the work only for files that changed, and
ur checkreports only the files changed since its last clean check. - Cheap. Preview builds are free for Linux, macOS, and Windows.
Where it stands
Ur is in preview. It has no release yet, and its code isn’t public; the install scripts fetch the newest build of its main branch. Expect rough edges, and please tell us what breaks, or which language you want next.
Who makes it
Ur is made by Powderworks. The parsers and analyzers Ur is built on are also available for your own tools, as the Powderworks Language SDK. Write to info@powderworks.dev about anything else.