Skip to content

Commit 67356ca

Browse files
save
Signed-off-by: Nikola Hristov <Nikola@PlayForm.Cloud>
1 parent 2ff86df commit 67356ca

1 file changed

Lines changed: 67 additions & 45 deletions

File tree

README.md

Lines changed: 67 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,67 @@
1-
<table><tr>
2-
<td colspan="1"> <h3 align="center"> <picture>
1+
<table>
2+
<tr>
3+
<td align="left" valign="middle">
4+
<h3 align="left"> SideCar</h3>
5+
</td>
6+
<td align="left" valign="middle">
7+
<h3 align="left">
8+
 ⚙️
9+
</h3>
10+
</td>
11+
<td align="left" valign="middle">
12+
<h3 align="left">+</h3>
13+
</td>
14+
<td align="left" valign="middle">
15+
<h3 align="left">
16+
<a href="https://Editor.Land" target="_blank">
17+
<picture>
318
<source media="(prefers-color-scheme: dark)" srcset="https://PlayForm.Cloud/Dark/Image/GitHub/Land.svg">
419
<source media="(prefers-color-scheme: light)" srcset="https://PlayForm.Cloud/Image/GitHub/Land.svg">
520
<img width="28" alt="Land Logo" src="https://PlayForm.Cloud/Image/GitHub/Land.svg">
6-
</picture> </h3> </td> <td colspan="3" valign="top"> <h3 align="center"> Sidecar Runtimes ⚙️
7-
</h3> </td>
8-
</tr></table>
21+
</picture>
22+
</a>
23+
</h3>
24+
</td>
25+
<td align="left" valign="middle">
26+
<h3 align="left">
27+
<a href="https://Editor.Land" target="_blank">
28+
Land
29+
</a>
30+
</h3>
31+
</td>
32+
<td align="left" valign="middle">
33+
<h3 align="left">🏞️</h3>
34+
</td>
35+
</tr>
36+
</table>
937

1038
---
1139

12-
# **Sidecar Runtimes** ⚙️ Pre-Compiled Native Dependencies
40+
# **SideCar** ⚙️ Pre-Compiled Native Dependencies for Land 🏞️
41+
42+
Welcome to **SideCar**, the central repository for all pre-compiled,
43+
platform-specific sidecar binaries required by the **Land Code Editor**
44+
ecosystem. A "sidecar" is an external, standalone executable that runs alongside
45+
the main `Mountain` application to provide specialized functionality, such as
46+
the `Cocoon` extension host which runs on Node.js.
1347

14-
This directory serves as the central repository for all pre-compiled,
15-
platform-specific sidecar binaries required by the Land Code Editor ecosystem. A
16-
"sidecar" is an external, standalone executable that runs alongside the main
17-
`Mountain` application to provide specialized functionality, such as the
18-
`Cocoon` extension host which runs on Node.js.
48+
**SideCar** is engineered to:
1949

20-
## Purpose and Structure
50+
1. **Provide Portable Runtimes**: Vendored Node.js and other runtimes eliminate
51+
user dependency requirements.
52+
2. **Enable Deterministic Builds**: Organized by target triple for build-time
53+
binary selection.
54+
3. **Support Multiple Platforms**: Comprehensive matrix for macOS, Linux, and
55+
Windows on x86_64 and aarch64 architectures.
56+
4. **Automate Download Management**: Automated fetching, caching, and Git LFS
57+
management of runtime binaries.
58+
59+
---
2160

22-
To create a truly portable and self-contained application, we cannot rely on the
23-
user having pre-installed runtimes like Node.js. Instead, we "vendor" these
24-
runtimes by downloading their official, standalone distributions and storing
25-
them here.
61+
## Directory Structure 📁
2662

27-
The directory is organized to allow for deterministic selection by our build
28-
system:
63+
The SideCar directory is organized to allow for deterministic selection by the
64+
build system:
2965

3066
```
3167
SideCar/
@@ -48,22 +84,9 @@ SideCar/
4884

4985
The
5086
[`Download`](https://github.com/CodeEditorLand/SideCar/tree/Current/Source/Download.rs)
51-
Rust binary in this directory is responsible for populating this structure. It
52-
fetches the official distributions for various sidecars and platforms and
53-
organizes them according to the convention above.
54-
55-
The download tool provides:
56-
57-
- **Concurrent Downloads**: Parallel downloading of multiple binaries using
58-
Tokio
59-
- **Intelligent Caching**: Maintains a [`Cache.json`](Cache.json) file to track
60-
downloaded versions
61-
- **Version Resolution**: Automatically resolves major versions to latest patch
62-
from nodejs.org
63-
- **Git LFS Management**: Automatically updates
64-
[`.gitattributes`](.gitattributes) for large binary tracking
65-
- **Platform Matrix**: Supports multiple target triples (x86_64, aarch64 for
66-
macOS, Linux, Windows)
87+
Rust binary is responsible for populating this structure. It fetches the
88+
official distributions for various sidecars and platforms and organizes them
89+
according to the convention above.
6790

6891
During the application build, the main `Build.rs` orchestrator uses this
6992
repository as a source. Based on build flags (e.g., `--node-version=22`), it
@@ -74,15 +97,15 @@ bundling into the final application installer.
7497

7598
## Key Features 🔐
7699

77-
- **Concurrent Downloads:** Parallel downloading of multiple runtime binaries
100+
- **Concurrent Downloads**: Parallel downloading of multiple runtime binaries
78101
using Tokio for maximum throughput.
79-
- **Intelligent Caching:** Maintains a `Cache.json` file to track downloaded
102+
- **Intelligent Caching**: Maintains a `Cache.json` file to track downloaded
80103
versions and avoid redundant downloads.
81-
- **Version Resolution:** Automatically resolves major versions to latest patch
104+
- **Version Resolution**: Automatically resolves major versions to latest patch
82105
from nodejs.org and other sources.
83-
- **Git LFS Management:** Automatic `.gitattributes` updates for large binary
106+
- **Git LFS Management**: Automatic `.gitattributes` updates for large binary
84107
tracking in Git LFS.
85-
- **Platform Matrix:** Comprehensive support for x86_64 and aarch64
108+
- **Platform Matrix**: Comprehensive support for x86_64 and aarch64
86109
architectures across macOS, Linux, and Windows.
87110

88111
---
@@ -97,7 +120,7 @@ bundling into the final application installer.
97120

98121
---
99122

100-
## `SideCar` in the Land Ecosystem ⚙️ + 🏞️
123+
## `SideCar` in the Land Ecosystem⚙️ + 🏞️
101124

102125
| Component | Role & Key Responsibilities |
103126
| :---------------- | :-------------------------------------------------------------------- |
@@ -127,7 +150,7 @@ cargo build --release
127150
- `serde`/`serde_json`: Cache.json serialization
128151
- `git2`: Git LFS management
129152

130-
### Usage Pattern
153+
### Usage Pattern 🚀
131154

132155
The SideCar directory is populated once during project setup:
133156

@@ -174,7 +197,7 @@ NodeJSOrg["nodejs.org"]:::external
174197
OtherRuntimes["Other Runtime Sources"]:::external
175198
end
176199
177-
subgraph "SideCar ⚙️ (Download Tool)"
200+
subgraph "SideCar ⚙️ (Download Tool)"
178201
DownloadBin["Download Binary"]:::sidecar
179202
CacheJSON["Cache.json"]:::sidecar
180203
GitLFS[".gitattributes (LFS)"]:::sidecar
@@ -199,9 +222,8 @@ DownloadBin --> TargetTriple
199222
200223
---
201224

202-
## Deep Dive & Component Breakdown 🔬
225+
## Deep Dive & Component Breakdown 🔬 To understand how `SideCar`'s download tool works, see the following source
203226

204-
To understand how `SideCar`'s download tool works, see the following source
205227
files:
206228

207229
- **[`Source/Download.rs`](https://github.com/CodeEditorLand/SideCar/tree/Current/Source/Download.rs)** -
@@ -220,7 +242,7 @@ nodejs.org, and automatic Git LFS management for tracking large binary files.
220242
| **Related Directory**:
221243
[`Binary`](https://github.com/CodeEditorLand/Mountain/tree/Current/Binary/README.md)
222244

223-
## License ⚖️
245+
## License⚖️
224246

225247
This project is released into the public domain under the **Creative Commons CC0
226248
Universal** license. You are free to use, modify, distribute, and build upon

0 commit comments

Comments
 (0)