Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 29 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,35 @@ executable runs without Chromium, WebView2 or Node.js.

Download a build from the [releases](../../releases) page.

## Compared with the Electron build

MarkText v0.20.0 native release against the official Electron build
(`marktext-win-x64-0.20.0`):

| Metric | Electron | Native | Change |
|---|---:|---:|---:|
| Download (ZIP) | 176.0 MB | 91.4 MB | 48% smaller |
| Installed folder | 458.7 MB | 285.2 MB | 38% smaller |
| Files on disk | 108 | 23 | 79% fewer |
| Time to window | 782 ms | 161 ms | 4.9× faster |
| Time to open a document | 1,399 ms | 1,000 ms | 29% faster |
| CPU time to start | 2.92 s | 0.84 s | 71% less |
| CPU when idle | 0.23% | 0.00% | 100% less |
| Processes | 5 | 1 | 80% fewer |
| Memory (working set) | 451.1 MB | 280.2 MB | 38% less |
| Memory (private bytes) | 285.9 MB | 208.2 MB | 27% less |
| Threads | 111 | 8 | 93% fewer |
| Handles | 2,194 | 227 | 90% fewer |

The native build also ships as a single `.exe` that runs on its own, while
the Electron build needs its whole folder.

Measured on Windows 10 22H2 with an Intel Core i7-8750H and 8 GB of RAM,
opening a short Markdown file. Each figure is the median of three runs.
Memory, threads and handles are summed over all of the app's processes,
15 seconds after the document opened; idle CPU is averaged over the next
10 seconds.

## How it is built

The [Build native MarkText](.github/workflows/build.yml) workflow:
Expand All @@ -18,13 +47,3 @@ The [Build native MarkText](.github/workflows/build.yml) workflow:
[NativeBoat Build action](https://github.com/XTSoftwareLabs/nativeboat-action),
4. uploads the executable, a ZIP of the full output folder and
`SHA256SUMS.txt` as a workflow artifact.

It runs on pushes to `main` and on pull requests, and publishes nothing.

## Releasing

Run the [Release native MarkText](.github/workflows/release.yml) workflow from
the Actions tab. Set `marktext-ref` to the MarkText tag to build and
`nativeboat-version` to a NativeBoat release tag or `latest`. It runs the build
above, then publishes its files to a release named after the MarkText tag.
Running it again for the same tag replaces that release's files.
Loading