novos 0.1.526

Build at the speed of thought - a self-contained, high-performance SSG
<div align="center">

# **novos**
###### ( aka 'novos omits very old standards' )
<img src="./assets/icon.png" alt="novos logo" width="250" height="250">

**Build at the speed of thought.**


![License](https://img.shields.io/github/license/novos-org/novos)
![Rust](https://img.shields.io/badge/rust-2024%20edition-orange)
</div>

> [!WARNING]
> **novos** is currently beta software. Expect frequent updates and potential breaking changes as we approach v1.0.
> 
> **We are currently changing to Tera. For the meantime, the default template partially works. Same with the official website**

## What is novos?
novos is a lightning-fast static site generator (SSG) built in Rust. It takes your Markdown files and turns them into a website in milliseconds.

## Features
- **Sass transpilation** via native `grass` (no C++ or Node.js required)
- **Fast Parallelism** utilizing `Rayon` for multi-core page generation
- **Self-Contained** binary with embedded assets via `rust-embed`
- **Shortcodes, Includes, & Variables** for flexible templating
- **RSS** generation baked-in
- **search.json**, so you can search
- **syntect**, because who hates colors?
- **minification**, because you want speed, right?
- **Axum**, for a stellar webserver + WebSockts.
- [**Tera**]https://keats.github.io/terasample, because who loves repeating themselves?

## Supported OSes

| Tier | Operating System | Notes |
| :--- | :--- | :--- |
| **Tier 1** | **OmniOS CE** | Primary development |
| **Tier 1** | **FreeBSD** | Primary development  |
| **Tier 2** | Ubuntu LTS (Noble) | Verified compatibility |
| **Tier 2** | Arch Linux | Verified compatibility |
| **Tier 2** | Void Linux | Verified compatibility |
| **Tier 3** | macOS (intel/Sillicon) | *"CI compiled it"* |
| **Tier 3** | Windows | *"Wine said it worked"* |

## Roadmap
- [X] Parallel page generation
- [X] Live reload inside dev server
- [X] Theme: Nord-ish
- [ ] Plugin API (WASM + .so)
- [ ] Taxonomies
- [ ] Pagination

## Themes
- Solarnight (sass/solarnight.scss)
  - Solarnight is a Rose Pine inspired theme. 
- Nordish
    - A Nord inspired color palette.
  
## Documentation
Documentation is available at [docs/](./docs)
- [**Get Started**]./docs/SETUP.md: Setup guide for novos
- [**Installation**]./docs/INSTALL.md: Install guide for novos

## Backend
- **Language:** Rust (2024 Edition)
- **Markdown:** `pulldown-cmark` (CommonMark compliant, yay!)
- **License:** 3-Clause BSD

# Performance Benchmarks
(The stress test was generated by [./stress.sh](./stress.sh))

### In text form

```bash
~/dev/stress/sitez $ hyperfine --warmup 3 "zola build"
Benchmark 1: zola build
  Time (mean ± σ):      4.874 s ±  0.014 s    [User: 3.949 s, System: 1.354 s]
  Range (min … max):    4.852 s …  4.895 s    10 runs
~/dev/stress/siten $ hyperfine --warmup 3 "novos build"
Benchmark 1: novos build
  Time (mean ± σ):     675.7 ms ±  14.4 ms    [User: 844.4 ms, System: 1722.4 ms]
  Range (min … max):   660.9 ms … 706.1 ms    10 runs
~/dev/stress/siteh $ hyperfine --warmup 3 "hugo"
Benchmark 1: hugo
00:00:05   Time (mean ± σ):      1.929 s ±  0.018 s    [User: 4.377 s, System: 0.529 s]
  Range (min … max):    1.910 s …  1.966 s    10 runs
```

### In a bar chart
```mermaid
xychart-beta
    title "Build Time (seconds) - Lower is Better"
    x-axis [Zola, Hugo, novos]
    y-axis "Time (s)" 0 --> 5
    bar [4.87, 1.93, 0.68]
```

#### How novos achieves < 1s builds:
- **Zero-Copy Parsing**: Leveraging pulldown-cmark's event-based parser.
- **Work-Stealing Parallelism**: Rayon dynamically balances page rendering across all available CPU threads.
- **Sass compilation techniques**: Using native grass avoids the overhead of external process calls to Node or Dart.




Commits prior to 2d1acf1be5fb605694cc2f95c5efe8dad0b35de0 are three clause BSD. Commits after that point are Apache-2.0 OR MIT