Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
6d2e620
bender-slang: Initial `slang` bindings
fischeti Jan 28, 2026
a6d3f63
pickle: Add initial command
fischeti Jan 28, 2026
fe68c78
ci: Clone slang submodule and bump checkout action
fischeti Jan 29, 2026
baf8a89
bender-slang(build): Fix Linux builds
fischeti Jan 29, 2026
9b13ca7
bender-slang(build): Provide config template for IIS env
fischeti Jan 29, 2026
c784c3a
Add slang feature to disable slang build
micprog Jan 29, 2026
a0d785c
bender-slang(build): Link libc++ statically on linux and windows
fischeti Jan 29, 2026
32fae34
ci: Enable `slang` for Windows again
fischeti Jan 29, 2026
3bb1777
bender-slang(build): Fix `fmt` library in release builds
fischeti Jan 31, 2026
f065f4f
bender-slang(build): Clean up
fischeti Jan 31, 2026
4af95ea
bender-slang(build): Enable `mimalloc` library again
fischeti Jan 31, 2026
3b56691
bender-slang(build): Fix windows build
fischeti Jan 31, 2026
d1541c5
bender-slang(build): Don't use system-installed slang dependencies
fischeti Jan 31, 2026
0e8e0df
bender-slang(ffi): Refactor interface
fischeti Feb 1, 2026
d195c07
bender-slang(build): Align defines and flags in library and bridge build
fischeti Feb 2, 2026
6f0ed9b
bender-slang(bridge): Add SyntaxTree rewriter for module name prefixe…
fischeti Feb 4, 2026
fb9a076
bender-slang(build): Add include guard to slang_bridge.h
fischeti Feb 4, 2026
e3414de
bender-slang(ffi): Refactor interface (once again)
fischeti Feb 5, 2026
79af609
pickle: Bender integration
fischeti Feb 11, 2026
5d82fa5
pickle: Filter non-verilog files and emit warnings
fischeti Feb 12, 2026
60a6643
bender-slang: Allow dumping AST as JSON
fischeti Feb 12, 2026
ace8130
bender-slang(rewriter): Handle package imports, virtual interfaces an…
fischeti Feb 12, 2026
e84defc
pickle: Allow to exclude names from renaming
fischeti Feb 12, 2026
7c8ccf2
pickle: Clean up CLI
fischeti Feb 12, 2026
56ef0db
bender-slang: Emit error when parsing fails
fischeti Feb 16, 2026
8b423bd
Wrap FFI types with safe wrappers
fischeti Feb 16, 2026
681794b
pickle: Filter out unreachable SyntaxTrees
fischeti Feb 16, 2026
abe16d8
bender-slang: Use typed errors with `thiserror`
fischeti Feb 16, 2026
a42d446
bender-slang: Unwrap instead of expect
fischeti Feb 16, 2026
3d2cf05
bender-slang: Add documentation
fischeti Feb 16, 2026
dc4610c
pickle: Actually include additional sourcefiles
fischeti Feb 16, 2026
ff4a930
bender-slang: Fix windows build
fischeti Feb 16, 2026
9bc1f24
bender-slang: Clippy fixes and clean up
fischeti Feb 17, 2026
e989272
bender-slang(lib): Refactor to respect lifetime of C++ objects
fischeti Feb 18, 2026
1a04ee9
bender-slang: Cannonicalize include paths on windows
fischeti Feb 22, 2026
3092bc8
Add .clang-format and update .gitignore
fischeti Feb 4, 2026
1cfc3de
tests: Add pickle testing repo
fischeti Feb 12, 2026
01020d1
bender-slang: Add unit and integration tests
fischeti Feb 16, 2026
46f3254
bender-slang: Add `.clangd` file for IDE support
fischeti Feb 16, 2026
0486a58
ci: Add clang-format check + separate rustfmt
fischeti Feb 16, 2026
4aa7806
ci: Run on PRs to non-main branches
fischeti Feb 17, 2026
8831a93
ci: Add release build jobs
fischeti Feb 17, 2026
2fb5ce8
ci(release): Clone recursively, use all features, allow dry-run workf…
fischeti Feb 17, 2026
524e56c
ci(release): Add separate builds for slang and non-slang versions
fischeti Feb 17, 2026
4e9d9dc
ci: Cache rust builds
fischeti Feb 17, 2026
b73a33f
ci: Cancel ongoing workflows
fischeti Feb 17, 2026
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
6 changes: 6 additions & 0 deletions .cargo/config.toml.iis
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[target.x86_64-unknown-linux-gnu]
linker = "/usr/pack/gcc-14.2.0-af/bin/gcc"

[env]
CC = "/usr/pack/gcc-14.2.0-af/bin/gcc"
CXX = "/usr/pack/gcc-14.2.0-af/bin/g++"
18 changes: 18 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
Language: Cpp
BasedOnStyle: LLVM

# 4 spaces everywhere
IndentWidth: 4
TabWidth: 4
UseTab: Never
ContinuationIndentWidth: 4

# Modern C++ style
Standard: c++20
ColumnLimit: 120
PointerAlignment: Left

# Organize includes
SortIncludes: true
IncludeBlocks: Regroup
15 changes: 15 additions & 0 deletions .clangd
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
If:
PathMatch: (^|.*/)crates/bender-slang/cpp/.*\.(h|hpp|hh|c|cc|cpp|cxx)$
CompileFlags:
Add:
- -std=c++20
- -fno-cxx-modules
- -I.
- -I../../../crates
- -I../vendor/slang/include
- -I../vendor/slang/external
- -I../../../target/slang-generated-include
- -I../../../target/cxxbridge
- -DSLANG_USE_MIMALLOC=1
- -DSLANG_USE_THREADS=1
- -DSLANG_BOOST_SINGLE_HEADER=1
58 changes: 0 additions & 58 deletions .github/scripts/gen_dockerfile.sh

This file was deleted.

82 changes: 67 additions & 15 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ on:
push:
branches: [master]
pull_request:
branches: [master]
workflow_dispatch:

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

jobs:
test:
runs-on: ubuntu-latest
Expand All @@ -20,70 +23,119 @@ jobs:
- 1.87.0 # minimum supported version
continue-on-error: ${{ matrix.rust == 'nightly' }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust}}
components: rustfmt
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-test-${{ runner.os }}-${{ matrix.rust }}
cache-workspace-crates: "true"
- name: Build
run: cargo build
run: cargo build --all-features
- name: Cargo Test
run: cargo test --all
- name: Format (fix with `cargo fmt`)
run: cargo fmt -- --check
run: cargo test --workspace --all-features
- name: Run unit-tests
run: tests/run_all.sh
shell: bash

test-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-test-windows-${{ runner.os }}-stable
cache-workspace-crates: "true"
- name: Build
run: cargo build
run: cargo build --all-features
- name: Cargo Test
run: cargo test --all
run: cargo test --workspace --all-features
- name: Run unit-tests
run: tests/run_all.sh
shell: bash

test-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-test-macos-${{ runner.os }}-stable
cache-workspace-crates: "true"
- name: Build
run: cargo build
run: cargo build --all-features
- name: Cargo Test
run: cargo test --all
run: cargo test --workspace --all-features
- name: Run unit-tests
run: tests/run_all.sh
shell: bash

release-build:
name: Release Build (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-release-build-${{ runner.os }}-stable
cache-workspace-crates: "true"
- name: Build (release)
run: cargo build --release --all-features

clippy_check:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
components: clippy
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-clippy-${{ runner.os }}-stable
cache-workspace-crates: "true"
- run: cargo clippy --all-features

unused-deps:
name: Unused Dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-unused-deps-${{ runner.os }}-stable
cache-workspace-crates: "true"
- name: Install machete
run: cargo install cargo-machete
- name: Check for unused dependencies
Expand Down
22 changes: 16 additions & 6 deletions .github/workflows/cli_regression.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,39 +4,49 @@ on:
pull_request:
workflow_dispatch:

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

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Run CLI Regression
run: cargo test --test cli_regression -- --ignored
run: cargo test --all-features --test cli_regression -- --ignored
env:
BENDER_TEST_GOLDEN_BRANCH: ${{ github.base_ref }}

test-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Run CLI Regression
run: cargo test --test cli_regression -- --ignored
run: cargo test --all-features --test cli_regression -- --ignored
env:
BENDER_TEST_GOLDEN_BRANCH: ${{ github.base_ref }}

test-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Run CLI Regression
run: cargo test --test cli_regression -- --ignored
run: cargo test --all-features --test cli_regression -- --ignored
env:
BENDER_TEST_GOLDEN_BRANCH: ${{ github.base_ref }}
35 changes: 35 additions & 0 deletions .github/workflows/formatting.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: formatting

on:
push:
branches: [master]
pull_request:
branches: [master]
workflow_dispatch:

jobs:
rustfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
components: rustfmt
- name: Check Rust formatting
run: cargo fmt -- --check

clang-format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Check C/C++ formatting
uses: DoozyX/clang-format-lint-action@v0.18
with:
source: "."
extensions: "h,hpp,c,cc,cpp,cxx"
exclude: "./crates/bender-slang/vendor"
Loading