Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
bb81295
bender-slang: Initial `slang` bindings
fischeti Jan 28, 2026
16a6080
pickle: Add initial command
fischeti Jan 28, 2026
59782f0
ci: Clone slang submodule and bump checkout action
fischeti Jan 29, 2026
ba6b4ea
bender-slang(build): Fix Linux builds
fischeti Jan 29, 2026
87c41ad
bender-slang(build): Provide config template for IIS env
fischeti Jan 29, 2026
defdead
Add slang feature to disable slang build
micprog Jan 29, 2026
a34070f
bender-slang(build): Link libc++ statically on linux and windows
fischeti Jan 29, 2026
a842cf3
ci: Enable `slang` for Windows again
fischeti Jan 29, 2026
500bf29
bender-slang(build): Fix `fmt` library in release builds
fischeti Jan 31, 2026
2cf2a7c
bender-slang(build): Clean up
fischeti Jan 31, 2026
863c2f8
bender-slang(build): Enable `mimalloc` library again
fischeti Jan 31, 2026
58e209f
bender-slang(build): Fix windows build
fischeti Jan 31, 2026
efce5e6
bender-slang(build): Don't use system-installed slang dependencies
fischeti Jan 31, 2026
5c81446
bender-slang(ffi): Refactor interface
fischeti Feb 1, 2026
170351c
bender-slang(build): Align defines and flags in library and bridge build
fischeti Feb 2, 2026
7ce9f86
Add .clang-format and update .gitignore
fischeti Feb 4, 2026
4df0edc
bender-slang(bridge): Add SyntaxTree rewriter for module name prefixe…
fischeti Feb 4, 2026
2731734
bender-slang(build): Add include guard to slang_bridge.h
fischeti Feb 4, 2026
46d2793
bender-slang(ffi): Refactor interface (once again)
fischeti Feb 5, 2026
a9c1f16
pickle: Bender integration
fischeti Feb 11, 2026
1fbe606
pickle: Filter non-verilog files and emit warnings
fischeti Feb 12, 2026
6d768f2
bender-slang: Allow dumping AST as JSON
fischeti Feb 12, 2026
25d33da
tests: Add pickle testing repo
fischeti Feb 12, 2026
8cc68dd
bender-slang(rewriter): Handle package imports, virtual interfaces an…
fischeti Feb 12, 2026
dfd5516
pickle: Allow to exclude names from renaming
fischeti Feb 12, 2026
021e586
pickle: Clean up CLI
fischeti Feb 12, 2026
461ef7a
bender-slang: Emit error when parsing fails
fischeti Feb 16, 2026
cf37c3e
Wrap FFI types with safe wrappers
fischeti Feb 16, 2026
f549fc7
pickle: Filter out unreachable SyntaxTrees
fischeti Feb 16, 2026
861b6ab
bender-slang: Use typed errors with `thiserror`
fischeti Feb 16, 2026
d2a3d28
bender-slang: Unwrap instead of expect
fischeti Feb 16, 2026
1dbe291
bender-slang: Add unit and integration tests
fischeti Feb 16, 2026
b777423
bender-slang: Add `.clangd` file for IDE support
fischeti Feb 16, 2026
12e785b
ci: Add clang-format check + separate rustfmt
fischeti Feb 16, 2026
31618c4
bender-slang: Add documentation
fischeti Feb 16, 2026
58f51d3
pickle: Actually include additional sourcefiles
fischeti Feb 16, 2026
c35bffb
bender-slang: Fix windows build
fischeti Feb 16, 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
33 changes: 19 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,47 +20,50 @@ 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
- 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
- name: Build
run: cargo build
run: cargo build --all-features --release
- name: Cargo Test
run: cargo test --all
run: cargo test --workspace --all-features --release
- 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
- 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
Expand All @@ -69,7 +72,9 @@ jobs:
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
Expand All @@ -80,7 +85,7 @@ jobs:
name: Unused Dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
Expand Down
18 changes: 12 additions & 6 deletions .github/workflows/cli_regression.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,35 +8,41 @@ 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 --release -- --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"
10 changes: 5 additions & 5 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ jobs:
-v "$GITHUB_WORKSPACE/target/$platform/$tgtname:/source/target" \
--platform $full_platform \
$tgtname-$platform \
cargo build --release;
cargo build --release --all-features;
shell: bash
- name: OS Create Package
run: |
Expand Down Expand Up @@ -121,7 +121,7 @@ jobs:
-v "$GITHUB_WORKSPACE/target/$platform/$tgtname:/source/target" \
--platform $full_platform \
$tgtname-$platform \
cargo build --release;
cargo build --release --all-features;
shell: bash
- name: OS Create Package
run: |
Expand Down Expand Up @@ -170,7 +170,7 @@ jobs:
-v "$GITHUB_WORKSPACE/target/amd64:/source/target" \
--platform linux/amd64 \
manylinux-amd64 \
cargo build --release;
cargo build --release --all-features;
- name: GNU Create Package
run: .github/scripts/package.sh amd64
shell: bash
Expand Down Expand Up @@ -215,7 +215,7 @@ jobs:
-v "$GITHUB_WORKSPACE/target/arm64:/source/target" \
--platform linux/arm64 \
manylinux-arm64 \
cargo build --release;
cargo build --release --all-features;
- name: GNU Create Package
run: .github/scripts/package.sh arm64
shell: bash
Expand All @@ -240,7 +240,7 @@ jobs:
rustup target add aarch64-apple-darwin
cargo install universal2
- name: MacOS Build
run: cargo-universal2 --release
run: cargo-universal2 --release --all-features
- name: Get Artifact Name
run: |
if [[ "$GITHUB_REF" =~ ^refs/tags/v.*$ ]]; then \
Expand Down
15 changes: 9 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
.*
!/.ci/
!.git*
!.travis.yml
/target
/tests/tmp
# Cargo build files
target

# Temporary test files
tests/**/tmp
tests/**/.bender

# clangd
.cache/clangd
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "crates/bender-slang/vendor/slang"]
path = crates/bender-slang/vendor/slang
url = https://github.com/MikePopoloski/slang.git
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## Unreleased
### Added
- Add new `crates/bender-slang` crate that integrates the vendored Slang parser via a Rust/C++ bridge.
- Add new `pickle` command (behind feature `slang`) to parse and re-emit SystemVerilog sources.

## 0.30.0 - 2026-02-12
### Added
Expand Down
Loading
Loading