docs: Add section on advantages of using Nyx in README (#10)

* docs: Add section on advantages of using Nyx in README

* ci: Update branch references from 'main' to 'master' in CI configuration

* docs: Add third-party licenses documentation and update build process

* Update .github/workflows/release-build.yml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* docs: Add third-party licenses documentation and update build process

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Eli Peter 2025-06-25 01:42:10 +02:00 committed by GitHub
parent a614e157b3
commit d50684e31b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 6270 additions and 11 deletions

View file

@ -2,9 +2,9 @@ name: CI
on: on:
push: push:
branches: [main] branches: ["master"]
pull_request: pull_request:
branches: [main] branches: ["master"]
jobs: jobs:
test: test:

View file

@ -20,7 +20,7 @@ jobs:
- target: x86_64-pc-windows-msvc - target: x86_64-pc-windows-msvc
os: windows-latest os: windows-latest
- target: x86_64-apple-darwin - target: x86_64-apple-darwin
os: macos-14 os: macos-14
- target: aarch64-apple-darwin - target: aarch64-apple-darwin
os: macos-14 os: macos-14
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
@ -35,13 +35,19 @@ jobs:
toolchain: stable toolchain: stable
target: ${{ matrix.target }} target: ${{ matrix.target }}
cache: true cache: true
- name: Install target - name: Install target
run: rustup target add ${{ matrix.target }} run: rustup target add ${{ matrix.target }}
- name: Build - name: Build
run: cargo build --release --bin ${{ env.BIN_NAME }} --target ${{ matrix.target }} run: cargo build --release --bin ${{ env.BIN_NAME }} --target ${{ matrix.target }}
- name: Install cargo-about
run: cargo install cargo-about --locked
- name: Generate license bundle
run: cargo about generate --format html > THIRDPARTY-LICENSES.html
- name: Package - name: Package
shell: bash shell: bash
run: | run: |
@ -57,7 +63,7 @@ jobs:
fi fi
mkdir -p dist mkdir -p dist
ARCHIVE=$BIN-$TARGET.zip ARCHIVE=$BIN-$TARGET.zip
zip -9 "dist/$ARCHIVE" "$BIN_PATH" zip -9 "dist/$ARCHIVE" "$BIN_PATH" THIRDPARTY-LICENSES.html LICENSE* COPYING* || true
echo "ASSET=$ARCHIVE" >> "$GITHUB_ENV" echo "ASSET=$ARCHIVE" >> "$GITHUB_ENV"
- name: Upload to the release - name: Upload to the release

View file

@ -20,6 +20,19 @@
--- ---
## Why choose Nyx?
| Advantage | What it means for you |
|--------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Pure-Rust, single binary** | No JVM, Python, or server to install; drop the `nyx` executable into your `$PATH` and go. |
| **Massively parallel** | Uses Rayon and a thread-pool walker; scales to all CPU cores. Example: scanning the entire **rust-lang/rust** codebase (~53,000 files) on an M2 MacBook Pro takes **≈ 1 s**. |
| **Index-aware** | An optional SQLite index stores file hashes and findings, subsequent scans touch *only* changed files, slashing CI times. |
| **Offline & privacy-friendly** | Requires no login, cloud account, or telemetry. Perfect for air-gapped environments and strict compliance policies. |
| **Tree-sitter precision** | Parses real language grammars, not regexes, giving far fewer false positives than line-based scanners. |
| **Extensible** | Add new patterns with concise `tree-sitter` queries; no SaaS lock-in. |
---
## Installation ## Installation
### Build from source ### Build from source
@ -114,12 +127,13 @@ A fully documented `nyx.conf` is generated automatically on first run.
## Roadmap ## Roadmap
| Area | Planned Improvements | | Area | Planned Improvements |
|------------------------|---------------------------------------------------------------------------| |-----------------------|---------------------------------------------------------------------------|
| Controlflow analysis | Generation of CFGs for deeper reasoning about execution paths | | More language support | Plans to create rule sets for over 100 languages for maximum coverage |
| Taint tracking | Intra / interprocedural tracing of untrusted data from sources to sinks | | Controlflow analysis | Generation of CFGs for deeper reasoning about execution paths |
| Output formats | Full SARIF 2.1.0, JUnit XML, HTML report generator | | Taint tracking | Intra / interprocedural tracing of untrusted data from sources to sinks |
| Rule updates | Remote rule feed with signature verification | | Output formats | Full SARIF 2.1.0, JUnit XML, HTML report generator |
| Rule updates | Remote rule feed with signature verification |
Community feedback will help shape priorities; please open an issue to discuss proposed changes. Community feedback will help shape priorities; please open an issue to discuss proposed changes.

6146
THIRDPARTY-LICENSES.html Normal file

File diff suppressed because it is too large Load diff

70
about.hbs Normal file
View file

@ -0,0 +1,70 @@
<html>
<head>
<style>
@media (prefers-color-scheme: dark) {
body {
background: #333;
color: white;
}
a {
color: skyblue;
}
}
.container {
font-family: sans-serif;
max-width: 800px;
margin: 0 auto;
}
.intro {
text-align: center;
}
.licenses-list {
list-style-type: none;
margin: 0;
padding: 0;
}
.license-used-by {
margin-top: -10px;
}
.license-text {
max-height: 200px;
overflow-y: scroll;
white-space: pre-wrap;
}
</style>
</head>
<body>
<main class="container">
<div class="intro">
<h1>Third Party Licenses</h1>
<p>This page lists the licenses of the projects used in cargo-about.</p>
</div>
<h2>Overview of licenses:</h2>
<ul class="licenses-overview">
{{#each overview}}
<li><a href="#{{id}}">{{name}}</a> ({{count}})</li>
{{/each}}
</ul>
<h2>All license text:</h2>
<ul class="licenses-list">
{{#each licenses}}
<li class="license">
<h3 id="{{id}}">{{name}}</h3>
<h4>Used by:</h4>
<ul class="license-used-by">
{{#each used_by}}
<li><a href="{{#if crate.repository}} {{crate.repository}} {{else}} https://crates.io/crates/{{crate.name}} {{/if}}">{{crate.name}} {{crate.version}}</a></li>
{{/each}}
</ul>
<pre class="license-text">{{text}}</pre>
</li>
{{/each}}
</ul>
</main>
</body>
</html>

11
about.toml Normal file
View file

@ -0,0 +1,11 @@
accepted = [
"Apache-2.0",
"MIT",
"MIT-0",
"Unicode-3.0",
"BSD-2-Clause",
"Unlicense",
"Zlib",
"CC0-1.0",
"MPL-2.0"
]

12
deny.toml Normal file
View file

@ -0,0 +1,12 @@
[licenses]
allow = [
"Apache-2.0",
"MIT",
"MIT-0",
"Unicode-3.0",
"BSD-2-Clause",
"Unlicense",
"Zlib",
"CC0-1.0",
"MPL-2.0"
]