ranger-compiler 3.5.0 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,103 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [3.5.1] - 2026-09-17
11
+
12
+ - **The npm README still said 3.3.0.** The package was 3.5.0; the first line
13
+ of `README.md` was never bumped with it, so the npm page advertised the
14
+ old version. npm does not rewrite a published tarball, so this is 3.5.1.
15
+ - **This file now dates 3.4.0 and 3.5.0.** Both shipped on npm with the
16
+ notes below still under Unreleased, so a reader of the package changelog
17
+ could not tell what was in the tarball.
18
+
19
+ ## [3.5.0] - 2026-09-17
20
+
21
+ ### Added
22
+
23
+ - **`rgrc install` fetches what `ranger.json` names.** `Import "pkg:…"`
24
+ used to resolve only against files already on disk, so a clean checkout
25
+ of a project that depends on `gallery/evg` had nothing to compile
26
+ against. The compiler now walks the graph, sparse-fetches each git
27
+ dependency at its pinned revision, writes it into the cache
28
+ (`RANGER_PKG_CACHE`, else `~/.cache/ranger/packages/<sha256>`), recurses
29
+ into each fetched package's own manifest, and records `rev` + `sha256`
30
+ in `ranger.lock`. A branch or tag is pinned to the commit it resolved
31
+ to. `-vendor` also writes `vendor/ranger/<name>` so a vendored project
32
+ needs no cache; `-frozen` fails rather than fetching what the lock does
33
+ not cover; `-force` refetches; `-cache=<dir>` overrides the default.
34
+
35
+ - **The Git pack client is MIT, and it runs inside `rgrc`.** It sat under
36
+ `gallery/` and was therefore AGPL, so the MIT compiler could resolve
37
+ `pkg:` but not fetch it — that split cost a second npm package
38
+ (`ranger-pkg`) and a shell-out. The client is a clean-room read of
39
+ published formats (pack layout, pkt-line, smart HTTP, FIPS 180-1 SHA-1,
40
+ RFC 1950/1951), which is how you use the language, not an application
41
+ built with it. `gallery/pkg` moved to `pkg/`. `gallery/zip/Inflate.rgr`
42
+ and `ZipBuffer.rgr` moved to `lib/zip/` (MIT) because DEFLATE is a
43
+ published format and the pack needs it; the ZIP container, the writer
44
+ and CRC32 stay in `gallery/zip`. `compiler/PkgFetch.rgr` drives the
45
+ client: advertisement, want, side-band demux, pack v2 with deltas, the
46
+ tree walk and the content cache. `bin/git-http.mjs` is the only Node
47
+ left — GET and POST of bytes, because Node has no synchronous HTTPS and
48
+ this compiler is synchronous — and it ships in `dist/` beside `rgrc.js`.
49
+ `ranger-pkg` and `tools/install.mjs` are gone.
50
+
51
+ - **The site root is a page about the language.** It was the playground.
52
+ It now says what Ranger is, what it compiles to, which platforms it
53
+ reaches, how the portability claims are checked, and what is in the
54
+ gallery. The playground moved to `/playground/`. `landing/` is plain
55
+ HTML, one stylesheet and one module: the logo is the bitmap tracer
56
+ walking the project's mark into three paths, the backdrop is an EVG
57
+ display list drawn on the GPU by the same painter the editors use, and
58
+ `landing/examples/Cart.rgr` is recompiled for Swift, Kotlin, JavaScript,
59
+ TypeScript, C#, C++, PHP and Rust when the site is built, so the code
60
+ beside each tab is what that commit's compiler writes.
61
+
62
+ ### Changed
63
+
64
+ - **A lock entry whose checkout is still in the cache is not fetched
65
+ again.** A sha256 names content and the content at a commit does not
66
+ move. treeni-week's install went from 10s to 0.12s and needs no
67
+ network. `--frozen` makes the cache the only answer; `--force` ignores
68
+ it; a `git` or `rev` repointed in `ranger.json` still outranks the lock.
69
+
70
+ - **PkgImport falls back to `ranger.lock` for a package the manifest does
71
+ not declare.** The lock is the whole graph; `ranger.json` is only its
72
+ first row. A path dependency inside a fetched package is resolved
73
+ against the origin that package came from (`gallery/statechart` plus
74
+ `../vela` is `gallery/vela` in the same repo at the same revision).
75
+ Imports dedup on the folded path as well as the string, so
76
+ `../../evg/X.rgr` and `pkg:evg/X.rgr` are one file.
77
+
78
+ - **Getting started leads, not the playground.** The front page's "three
79
+ ways in" is a numbered path: clone and build, point the agent at
80
+ `AGENTS.md`, start from a gallery project, compile for the target you
81
+ are shipping to. The playground keeps a link in the navigation.
82
+
83
+ ### Fixed
84
+
85
+ - **`-d=/absolute/path` wrote the tree under cwd + that path**, because
86
+ the working directory was joined onto it unconditionally.
87
+ - **`compiler/bin/api.ts` is not in the tree.** It is the TypeScript
88
+ `build:dist:module` hands to tsc on the way to `dist/api.js`, 77k
89
+ generated lines that had never been tracked and went in with the 3.5.0
90
+ build. `dist/api.js` and `dist/api.d.ts` are what ships.
91
+
92
+ ## [3.4.0] - 2026-09-17
93
+
94
+ The last package on npm before this one was **3.2.0**. 3.2.1, 3.3.0 and
95
+ 3.3.1 were already dated in this file and never published there, so this
96
+ tarball is the first that carries them.
97
+
98
+ On the compiler: generic classes (`class History @params(Op)`), expanded
99
+ into ordinary classes before any writer runs; a dotted call in return
100
+ position now parses (`return this.helper()`); Swift string operators
101
+ walk UTF-16 in amortised constant time; Kotlin emits `open class` for
102
+ the header form of inheritance; a Python empty constructor writes
103
+ `pass`; the C++ `Any` union only names classes the program actually
104
+ emits. The gallery grew in the same window — EVG, Office, the book
105
+ engine, Mermaid, Figma, CodeGraph, Rave — and is not in the npm tarball.
106
+
10
107
  - **All thirty-eight of Mermaid's header keywords are drawn.** The matrix in
11
108
  `docs/MERMAID_PARITY.md` is read off Mermaid's own detector registry — the
12
109
  record its parser itself consults. It used to say thirty of thirty, and both
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Ranger cross language compiler
2
2
 
3
- **Version 3.3.0** | Status: `experimental`
3
+ **Version 3.5.1** | Status: `experimental`
4
4
 
5
5
  **Licensing:** Ranger-authored compiler and language sources are MIT licensed,
6
6
  unless a file says otherwise. Ranger-authored applications and technology
package/dist/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Ranger Compiler
2
2
 
3
- **Version 3.0.0-beta.1** | Cross-language compiler - compile once, run anywhere
3
+ **Version 3.5.1** | Cross-language compiler - compile once, run anywhere
4
4
 
5
5
  Ranger is a self-hosting cross-language compiler that lets you write code once and compile to multiple target languages including JavaScript, TypeScript, Python, Go, Rust, Swift, C++, Java, Kotlin, C#, PHP, and Scala.
6
6
 
package/dist/api.js CHANGED
@@ -69858,7 +69858,7 @@ class CLIProgress {
69858
69858
  this.inputFile = "";
69859
69859
  this.outputFile = "";
69860
69860
  this.targetLanguage = "";
69861
- this.compilerVersion = "3.5.0";
69861
+ this.compilerVersion = "3.5.1";
69862
69862
  this.useColors = ((typeof process !== "undefined" && process.stdout && process.stdout.isTTY) || false);
69863
69863
  this.startTime = Date.now();
69864
69864
  }
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ranger-compiler",
3
- "version": "3.5.0",
3
+ "version": "3.5.1",
4
4
  "description": "Ranger cross-language compiler - compile once, run anywhere. Write code in Ranger and compile to JavaScript, TypeScript, Python, Go, Rust, Swift, C++, Java, Kotlin, C#, PHP, and Scala.",
5
5
  "main": "api.js",
6
6
  "types": "api.d.ts",
package/dist/rgrc.js CHANGED
@@ -69418,7 +69418,7 @@ RangerProcessProcSend.collectProcessClasses = function(ctx) {
69418
69418
  this.inputFile = "";
69419
69419
  this.outputFile = "";
69420
69420
  this.targetLanguage = "";
69421
- this.compilerVersion = "3.5.0";
69421
+ this.compilerVersion = "3.5.1";
69422
69422
  this.useColors = ((typeof process !== "undefined" && process.stdout && process.stdout.isTTY) || false);
69423
69423
  this.startTime = Date.now();
69424
69424
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ranger-compiler",
3
- "version": "3.5.0",
3
+ "version": "3.5.1",
4
4
  "description": "Ranger cross-language compiler - compile once, run anywhere",
5
5
  "main": "dist/api.js",
6
6
  "types": "dist/api.d.ts",