vole
Clone
Read only, no credentials:
https://rodent.software/git/vole.git
Write over SSH with a registered key:
git clone ssh://git@0.0.0.0:2222/vole.git
A free and open-source forge that lives in your Git repo.
Load a Prism grammar only when a blob names it
1b8675b19e70346d6d02d5fc0c10538f50bf94b2 · Keenan Nemetz · 9d ago · parent 11720250
Load a Prism grammar only when a blob names it The worker imported prism-languages.min.js — every grammar Prism ships — on every code page. That is 546 KB to evaluate before the first token, and a page showing one Go file paid it for all 293 components. Each component is now vendored as its own file, and prism-manifest.js maps a language name to the files that define it in dependency order. The worker starts with Prism's core and the manifest and imports a language's files the first time a job names it, remembering what it has run so a file is never imported twice. A Go blob loads 30 KB instead of 564 KB; a .tsx blob, the widest common entry at 8 files, loads 49 KB. The manifest also carries the components that register no language of their own but change one: css-extras, js-extras, js-templates, php-extras, xml-doc. Each is placed after the grammar it rewrites and included in the entries that inherit it, so a language that extends javascript now gets js-extras' arrow and maybe-class-name tokens too. The old bundle's order handed those to some inheriting languages and not others; nothing loses a token. scripts/vendor-prism.py writes the grammars and the manifest, and --check compares them byte for byte with cdnjs. TestPrismLanguagesAreVendored, TestPrismGrammarsMatchTheManifest and TestPrismWorkerLoadsGrammarsOnDemand hold the server's extension table, the vendored set and the worker's lazy import together.
docs/operations.md +3−3
| @@ -202,9 +202,9 @@ the linked sections explain each in full. | |||
| 202 | 202 | - **Compression is already here.** Forge pages, hosted sites, the stylesheet, | |
| 203 | 203 | scripts and source blobs are gzipped when the client asks for it, so a proxy in | |
| 204 | 204 | front should not compress them again: double compression costs CPU and hides | |
| 205 | the `ETag` revalidation that keeps the 545 KB Prism bundle to one download per | ||
| 206 | browser. Archives, LFS objects, Git responses and ranged downloads are passed | ||
| 207 | through untouched. | ||
| 205 | the `ETag` revalidation that keeps the shared scripts and each Prism grammar to | ||
| 206 | one download per browser. Archives, LFS objects, Git responses and ranged | ||
| 207 | downloads are passed through untouched. | ||
| 208 | 208 | - **SSH firewalled.** The SSH listener is the only write transport and the only | |
| 209 | 209 | place an account is authenticated. Expose it to the people who push, not to the | |
| 210 | 210 | internet at large, and leave it on a port other than 22 unless you also run | |