Skip to content
Merged
Show file tree
Hide file tree
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
45 changes: 45 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
version: 2
updates:
# Enable version updates for cargo
- package-ecosystem: "cargo"
directory: "/"
schedule:
interval: "weekly"
timezone: "Europe/Berlin"
day: "monday"
time: "04:00"
open-pull-requests-limit: 5
labels:
- "chore"
commit-message:
prefix: "chore(deps)"
prefix-development: "chore(deps-dev)"
rebase-strategy: "auto"
versioning-strategy: "auto"
# Group patch and minor updates together to reduce PR noise
groups:
rust-dependencies:
patterns:
- "*"
update-types:
- "minor"
- "patch"

# Version updates for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
timezone: "Europe/Berlin"
day: "monday"
time: "04:00"
open-pull-requests-limit: 5
labels:
- "chore"
commit-message:
prefix: "chore(actions)"
# Group all GitHub Actions updates together to reduce PR noise
groups:
github-actions:
patterns:
- "*"
101 changes: 101 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Build

on:
push:
branches: [main, release]
paths:
- "crates/**"
- "Cargo.toml"
- "Cargo.lock"
- "rustfmt.toml"
- ".github/workflows/build.yml"
pull_request:
branches: [main, release]
paths:
- "crates/**"
- "Cargo.toml"
- "Cargo.lock"
- "rustfmt.toml"
- ".github/workflows/build.yml"
workflow_dispatch:

env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
fmt:
name: Format
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Rust nightly
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt

- name: Check formatting
run: cargo +nightly fmt --all -- --check

check:
name: Check & Clippy
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy

- name: Cache dependencies
uses: Swatinem/rust-cache@v2

- name: Check
run: cargo check --all-features --workspace

- name: Clippy
run: cargo clippy --all-targets --all-features --workspace -- -D warnings

test:
name: Test
runs-on: ubuntu-latest
needs: check
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Cache dependencies
uses: Swatinem/rust-cache@v2

- name: Run tests
run: cargo test --all-features --workspace

docs:
name: Docs
runs-on: ubuntu-latest
needs: check
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Cache dependencies
uses: Swatinem/rust-cache@v2

- name: Build docs
run: cargo doc --no-deps --all-features --workspace
env:
RUSTDOCFLAGS: "-D warnings"
61 changes: 61 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Release

on:
push:
tags:
- "v*"

env:
CARGO_TERM_COLOR: always

jobs:
create-release:
name: Create Release
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false

publish-crates:
name: Publish to crates.io
needs: create-release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: 1.89

- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2

- name: Publish nvisy-core
run: cargo publish -p nvisy-core --token ${{ secrets.CARGO_TOKEN }}
continue-on-error: true

- name: Wait for nvisy-core
run: sleep 30

- name: Publish nvisy-archive
run: cargo publish -p nvisy-archive --token ${{ secrets.CARGO_TOKEN }}
continue-on-error: true

- name: Wait for nvisy-archive
run: sleep 30

- name: Publish nvisy-engine
run: cargo publish -p nvisy-engine --token ${{ secrets.CARGO_TOKEN }}
continue-on-error: true
46 changes: 46 additions & 0 deletions .github/workflows/security.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Security

on:
push:
branches: [main, release]
paths:
- "crates/**"
- "Cargo.toml"
- "Cargo.lock"
- "deny.toml"
- ".github/workflows/security.yml"
pull_request:
branches: [main, release]
paths:
- "crates/**"
- "Cargo.toml"
- "Cargo.lock"
- "deny.toml"
- ".github/workflows/security.yml"
schedule:
- cron: "0 6 * * 1" # Weekly on Monday at 6 AM
workflow_dispatch:

env:
CARGO_TERM_COLOR: always

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
deny:
name: Deny
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Install cargo-binstall
uses: cargo-bins/cargo-binstall@main

- name: Install cargo-deny
run: cargo binstall cargo-deny --no-confirm --no-symlinks

- name: Run deny
run: cargo deny check all
58 changes: 42 additions & 16 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,21 +1,47 @@
# Generated by Cargo
# will have compiled files and executables
debug
target
# OS
Thumbs.db
.DS_Store

# These are backup files generated by rustfmt
**/*.rs.bk
# IDE and Editors
.vs/
.vscode/
.idea/
.zed/

# MSVC Windows builds of rustc generate these, which store debugging information
# Rust
debug/
target/
**/*.rs.bk
*.pdb

# Generated by cargo mutants
# Contains mutation testing data
**/mutants.out*/
# Generated files
*.backup
coverage/
*.lcov

# Build output
dist/
build/
output/

# Environment files
.env*
!.env.example

# Logs
logs/
*.log
*.log*

# Backup and temporary files
*.bak
*.backup
*.tmp
tmp/
temp/

# RustRover
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
# Other
.ignore*/
LLM.md
.claude
CLAUDE.md
44 changes: 44 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Added

### Changed

### Fixed

### Removed

## [0.1.0] - 2025-10-21

### Added

- Initial release of the Nvisy Runtime
- Full Tokio async runtime integration
- Memory-mapped file processing for large datasets
- Parallel processing capabilities with Rayon

### Features

- High-performance async I/O with Tokio
- Modular crate architecture for optimal compilation
- Comprehensive error handling with structured diagnostics
- Zero-copy operations for improved performance

### Architecture

- Workspace-based multi-crate organization
- Shared dependency management across crates
- Clean separation of concerns (core, engine, archive)
- Rust 2024 edition with modern language features
- Strict type safety with no unsafe code by default

[Unreleased]: https://github.com/nvisycom/runtime/compare/v0.1.0...HEAD
[0.1.0]: https://github.com/nvisycom/runtime/releases/tag/v0.1.0
Loading