Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 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
ef5dd65
pickle: Filter non-verilog files and emit warnings
fischeti Feb 12, 2026
a587c43
bender-slang: Allow dumping AST as JSON
fischeti Feb 12, 2026
6add624
tests: Add pickle testing repo
fischeti Feb 12, 2026
52dc7a0
bender-slang(rewriter): Handle package imports, virtual interfaces an…
fischeti Feb 12, 2026
2d1fa9f
pickle: Allow to exclude names from renaming
fischeti Feb 12, 2026
baa235b
pickle: Clean up CLI
fischeti Feb 12, 2026
12b51b5
bender-slang: Emit error when parsing fails
fischeti Feb 16, 2026
dddb8e7
Wrap FFI types with safe wrappers
fischeti Feb 16, 2026
bc2567f
pickle: Filter out unreachable SyntaxTrees
fischeti Feb 16, 2026
7edee63
bender-slang: Use typed errors with `thiserror`
fischeti Feb 16, 2026
f6fb05e
bender-slang: Unwrap instead of expect
fischeti Feb 16, 2026
4f9e1f4
bender-slang: Add unit and integration tests
fischeti Feb 16, 2026
dd5e767
bender-slang: Add `.clangd` file for IDE support
fischeti Feb 16, 2026
875cdfc
ci: Add clang-format check + separate rustfmt
fischeti Feb 16, 2026
b81a4db
bender-slang: Add documentation
fischeti Feb 16, 2026
0dd58a6
pickle: Actually include additional sourcefiles
fischeti Feb 16, 2026
9ed2027
bender-slang: Fix windows build
fischeti Feb 16, 2026
4094dcf
ci: Add release build jobs
fischeti Feb 17, 2026
1feb1b5
ci(release): Clone recursively, use all features, allow dry-run workf…
fischeti Feb 17, 2026
d58af79
ci(release): Install cmake in container
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
15 changes: 8 additions & 7 deletions .github/scripts/gen_dockerfile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,25 +26,27 @@ if [ $(echo $full_tgtname | cut -d ':' -f 1) = "centos" ]; then

echo "RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*" >> $filename
echo "RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*" >> $filename
echo 'RUN yum group install "Development Tools" -y && yum clean all' >> $filename
echo 'RUN yum group install "Development Tools" -y && (yum install -y cmake3 || yum install -y cmake) && yum clean all' >> $filename
echo 'RUN [ -x /usr/bin/cmake ] || ln -s /usr/bin/cmake3 /usr/bin/cmake' >> $filename
fi
if [ $(echo $full_tgtname | cut -d ':' -f 1) = "ubuntu" ]; then
echo 'RUN apt update && apt -y install build-essential curl' >> $filename
echo 'RUN apt update && apt -y install build-essential curl cmake' >> $filename
fi
if [ $(echo $full_tgtname | cut -d ':' -f 1) = "fedora" ]; then
echo 'RUN dnf -y update && dnf -y install @development-tools' >> $filename
echo 'RUN dnf -y update && dnf -y install @development-tools cmake' >> $filename
fi
if [ $(echo $full_tgtname | cut -d ':' -f 1) = "debian" ]; then
echo 'RUN apt update && apt -y install build-essential curl gcc make' >> $filename
echo 'RUN apt update && apt -y install build-essential curl gcc make cmake' >> $filename
fi
if [ $(echo $full_tgtname | cut -d ':' -f 1) = "almalinux" ]; then
if [ $(echo $full_tgtname | cut -d ':' -f 2 | cut -d '.' -f 1) = '8' ]; then
echo 'RUN rpm --import https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux' >> $filename
fi
echo 'RUN dnf -y update && dnf -y group install "Development Tools"' >> $filename
echo 'RUN dnf -y update && dnf -y group install "Development Tools" && (dnf -y install cmake || dnf -y install cmake3)' >> $filename
echo 'RUN [ -x /usr/bin/cmake ] || ln -s /usr/bin/cmake3 /usr/bin/cmake' >> $filename
fi
if [[ $(echo $full_tgtname | cut -d ':' -f 1) == "redhat"* ]]; then
echo 'RUN dnf -y install gcc' >> $filename
echo 'RUN dnf -y install gcc cmake' >> $filename
fi
echo >> $filename
echo 'ENV RUSTUP_HOME=/usr/local/rustup CARGO_HOME=/usr/local/cargo' >> $filename
Expand All @@ -55,4 +57,3 @@ echo ' curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stabl
echo ' chmod -R a=rwX $CARGO_HOME' >> $filename
echo >> $filename
echo 'WORKDIR /source' >> $filename

53 changes: 39 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,56 +20,81 @@ 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
- 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
- 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
- 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
Expand All @@ -80,7 +105,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 -- --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
Loading