All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Add new
crates/bender-slangcrate that integrates the vendored Slang parser via a Rust/C++ bridge. - Add new
picklecommand (behind featureslang) to parse and re-emit SystemVerilog sources.
- Fix panic for untracked dependencies on update (#269).
- Fix scripts for unknown file types in manifest (#270).
- Fix upper bound for caret version requirements (#273).
- Fix dependency fetching on update for unfetched versions/revisions (#274).
- Fix
vendor initpatch application (#284).
- Add warning for untracked revision used for a dependency (#274).
- Add
--new-onlyflag toupdateto only update dependencies which are not yet fetched (#275). - Add ability to override files with same name (#267).
- Add target filtering for include directories (#281).
- Adjust script template json to support per-file comments (#267).
- Only fetch needed dependencies (#276).
script: Invert source-annotations polarity, disabling by default (#280).
- Add warnings for nonexistent include directory and errors for missing path dependency (#229).
- Add vlog-arg for synopsys scripts (#227).
- Add flag for
rtltarget to files without target in script and sources (#186). - Add support for verilog/vhdl files with custom file endings in manifest (#207).
- Add CI check for unused crates, cleanup (#242).
- Add information for git version tags (#243).
- Add
pass_targetsto dependencies to allow passing targets for hierarchical file filtering (not only global) (#235). - Add
auditcommand to check for possible dependency updates (#236). - Add CLI script output regression tests (#245).
- Add metadata to script output to assist with traceability (#244).
- Add application of targets to only specific packages with a
<PKG>:<TARGET>model for the target flag (#247). - Add target filtering for dependencies (#250).
- Fixed symlink removal for windows (#252).
- Add LFS support for dependencies (#259).
- Add progress bars for git actions (#239, #262).
- Fix suppression of all warnings along with an error (#234).
- Ensure sources output files are validated (#234).
- Properly fail cloning for path dependencies (#225).
- Fix symlink handling in windows (#252, #255).
- Fix git authentification hangs (#261).
- Change order of choice selection for conflicts on update (#237).
- Refactor CLI, group flags, add aliases and support for env variables (#240).
- Consolidate warnings, suppression and deduplication (#246).
- Add default
remotesto manifest to allow specifying multiple (default) remotes for dependencies, without having to write out the full git url every time (#260).
- Ensure informative print is not in stdout (e.g. fix for scripts) (#231)
- Use write to stdout instead of print to enable piping bender output into another command (#231)
- Remove compile warnings for release (#231)
- Add
snapshotcommand to relink git version after working on a dependency withbender clone(#230).
script: Fix genus template.- Fix
updatefailing pull of inexistent commit when multiple repositories are indicated. - Fix checkout for commit not yet fetched.
script: Fix flist-plus incdir template.- Throttle git commands to avoid git request failures.
- Add ARM64 binaries for releases
update: Update repositories in checkout dir if conditions match:- Folder is a git repository
- Git state is clean
--ignore-checkout-dirflag to update IPs ignoring the state inside the checkout directory.
update: Tell user the lockfile version when solving a conflict.- Print dependency updates executed.
- Enable updating of individual dependencies (and recursive dependencies if desired).
vendor: Add path error information.- Add support for glob in manifest source files.
parents: Print currently selected version.packages: Add--versionflag to print currently used versions.packages: Add--targetsflag to print targets used in the corresponding manifest.- Add
cleancommand to clean all bender related dependencies. script: Allow flist formats to useonly-sources/only-includes/only-definesflags.- Add check to ensure files referenced in all manifests exist.
- Add warnings for unknown fields in manifest.
sources: Add defines for passed targets to output (similar toscript).- Add support to indicate and read in external file lists in manifest.
- Enumerate warnings and add
--suppressflag to hide warnings.
update: Clean up alignment of manual resolution output.checkout: When usingcheckout_dir, overwrite existing dependencies if not changed, warning if not checked out, flag to force checkout.update: Updatecheckout_dirif no internal changes.- Execute checkout instead of clone to checkout correct dependency versions when reasonable.
packages --graph: Clean up alignment of output.script: No longer enforce all caps defines.
- Put
vcs,vsim, andrivieradefines in quotes. - Fix
genusscript initialization. - Update Readme with for script formats.
- Fix vendor file mappings when combining into a single directory.
- Make panic an error when lockfile is not up to date with dependencies.
- Fix Readme dependency version indication for exact match.
- Fix vendor file copying for symbolic links.
- Fix synopsys script include paths.
- Fix checkout when system forces git signatures.
- Add
completioncommand to generate shell autocomplete integration. - Add abort on error for
vcsscript type. - Add warning to update command when using overrides.
- Add support for branchless commits in dependency repositories.
- Bump dependencies.
- Add
flist-plusscript format for file list with plusargs.
- Ensure defines/includes/sources are included in script when specifying multiple
--only-*.
- For
bender clone: Add a relative path to the lockfile to align to change in v0.27.0.
- Add macOS binary for releases
- Add
initcommand to initialize a Bender.yml file of an IP. - Allow environment variables in dependency and sources paths.
- Add windows binary and compatibility for release.
- Documentation and Error Message fixes.
- Complete revamp of script generation, now using templates. Script formats are homogenized and custom templates are enabled.
- Add clearer error message when commits are no longer available upstream.
- Improve Readme git explanation
- Fix CI GNU release.
- Add
--checkoutflag topathcommand to force checkout if needed. - Add
--no-checkoutflag toupdatecommand to prevent checkout after update if not needed.
pathand local links: Skip checkout if package path already exists (can be overruled by--checkoutflag)update: Default to automatically perform checkout after update (can be overruled by--no-checkoutflag)
- Improve ReadMe and Warning information for
vendorupstream linking. - Ensure
workspace.package_linkssymlinks are properly updated when executing theclonecommand.
- Add information on expected location for manifest file not found.
- Use
IndexMapandIndexSetinstead of thestd Hash*equivalents to preserve ordering - Change GNU release to be built to a more compatible binary (manylinux container).
- Parse override dependencies in lowercase to align to change in 0.25.0
- Adjusted hash input for dependency checkout to ensure consistency within a project.
- Fixed accidental debug print in
sourcescommand
- Add
--no-default-targetflag toscriptcommand to remove default targets - Add
fusesoccommand to generate FuseSoC.corefiles. - Add rhel and almalinux releases
- Reworked
importcommand tovendor, refactor corresponding Manifest entry (vendor_packageinstead ofexternal_import) - Update
clapto v4, changes CLI - Use relative paths in Lockfile if path dependency is in a subdirectory
- Streamline
importcommand for initializing a repository
- Keep
export_incdirsfrom excluded dependencies in sources and scripts
- Add clippy to github CI and fix noted issues
- Add
importcommand to import files from non-bender repositories
- Update
tokiodependency, update tofutures=0.3, rewrite forasync/await. Bumps minimum rust to 1.57 - Update
serde_yamldependency to0.9. Bumps minimum rust to 1.58 - Partially checkout path dependencies in git dependencies
- Add warnings if manifest file is not found for a dependency
- Added
formalityscript.
- Update dependencies, with slight restructuring updating
clapto v3.1, bumps minimum rust to 1.54 - Removed
definesfrom VHDL insynopsysscript. - Updated CI release OSs to currently supported releases, added debian
- Add
checkoutcommand to fetch and checkout dependencies
- Ensure consistency when manually chosing a version if there are conflicts.
- Update
Bender.lockwhen runningbender clone. Runningbender updateis no longer required afterwards.
- For multiple compatible versions, select the highest compatible version, not the newest commit with a compatible version.
parentscommand outputs more detail:- source information in case multiple dependencies do not match
- information about an override if one is present
- Interpret all dependency names as lowercase to reduce ambiguity
- Fix panic of
parentscommand if a dependency does not have a manifest or if the manifest does not match theBender.lockfile. - Use correct manifest of checked out dependency in case folder already exists in
checkout_dir. - Fix vcs script argument to use
vhdlan-binfor vhdlan binary - Fix incomplete dependency version update when refetching from remote
- Fix panic when using
checkout_dirif the directory does not yet exist
- Add error if a cyclical dependency is detected to avoid infinite loop
- Add error on dependency mismatch between
Bender.ymlandBender.lock - Add hint to work around the "too many open files" error (issue #52).
- Add warning for mismatch of dependency name and name in package
- Add dependency information to
sourcescommand - Add
--fetch/-fargument tobender updateto force re-fetch of git dependencies from their remotes - Add global
--localargument to disable remote accesses of git commands, e.g. for air-gapped computers - Add
precisionformat to the script command. - Extend the
sourcesandscriptscommands with three flags to work with a subset of packages (-p/--package,-e/--exclude, and-n/--no-deps; see ReadMe or command help for the description).
- Reduce the number of open files in large repositories by changing the method to get the Git commit hash from a tag (from individual calls to
git rev-parse --verify HASH^{commit}togit show-ref --dereference). - Change behavior of
export_include_dirsinBender.ymlfile to not include these directories globally, but only include the directories exported within the package and direct dependencies (this may break unclean implementations).
- Fix absolute path of path dependencies inside git dependencies.
- Wrap defines in quotes for the VCS's shell script
- CI -> changed from travis to github actions
- Change
parentscommand, now displays version requirement of each package - updated resolver to use a single Core and SessionIo object for performance
- Add HashMap to git_versions in SessionIo to avoid multiple identical git calls, significantly improves performance
- Add
clonecommand to checkout individual ips to a directory and create a path reference in Bender.local - Add
parentscommand to get list of packages requiring the queried package
- Fix plugins to work for scripts in root repository
- Force git fetch on unsatisfied requirements to check for newly added tags in server repository
- Add option to pass additional defines through the command line (#34)
- Switch to Rust 2018 edition
- Update dependency
serde_yaml,tokio-timer,semver,blake2,typed-arena,dirs,pathdiff, anditertools - Extended documentation in the README
- Add
rivieraformat to the script command. (#29)
- Add
flistscripts target emitting a plain file list.
scriptnow inserts Tclcatchstatements forsynopsysandvsimto abort elaboration on the first error. This can be disabled with the new--no-abort-on-errorflag.
- Add
verilatorandgenusformats to the script command. (#27)
- Add
vivado-simformat to the script command. This format differs from thevivadoformat in that it targets simulation, not synthesis; other than that, it is equivalent to thevivadoformat.
script vivadonow emits paths relative to the project root with theROOTvariable.
script vcs: Fix shell syntax to defineROOTvariable.
- Add
vcsformat to thescriptcommand.
script:vcom-argorvlog-argcan be used with formatvsimorvcs.
script vivado: Add options to restrict output to defines, includes, or sources.
script: Raise error ifvcom-argorvlog-argare used with format other thanvsim.script vivado:- Add
-norecursetoadd_filesto prevent warnings. - Set
include_dirsandverilog_defineproperties also forsimsetto prevent critical warnings. This can be disabled with the new--no-simsetoption.
- Add
script vivado: Fix name ofinclude_dirsproperty.
- Add
vivadoformat to thescriptcommand.
- Bump rustc minimum version to 1.36
- Fix rustc 1.36
as_refregression - Emit format-specific target defines even if no target is specified.
- Fix capitalization of target defines such as
TARGET_SYNTHESIS.
- Omit unsupported
-2008flag for VHDL analysis commands in Synopsys scripts.
- Add the
frozenoption to prevent any dependency updates for a package. - Add the
workspacesection to carry workspace configuration. - Add the
workspace.checkout_diroption to keep local working copies of each dependency.
- Make order of packages and defines deterministic.
- Move the
package_linksoption toworkspace.package_links.
- Add
-fflag tosourcesfor printing a flattend source listing.
- Make JSON output human readable.
- Fix target defines to be all uppercase.
- Fix emission of target defines for source files which have no other defines.
- Add
scriptsubcommand. - Add
vsimandsynopsysscript output formats.
- Add
attydependency. - Add
itertoolsdependency.
- Ask the user to resolve dependency conflicts if stdin/stdout are attached to an interactive console.
- Update
semverdependency to v0.9.
- Create relative package links if possible.
- Add the
udpatesubcommand that explicitly updates dependencies. - Add dependency on the
dirscrate.
- No longer automatically update dependencies when the manifest changes.
- Add
export_include_dirssection to manifest, allowing packages to expose a subdirectory as include file search path.
- Rename
package-linksmanifest section topackage_links.
- Fix an issue where path dependencies would not properly resolve transitively.
- Submodules are now checked out as well.
- Locally symlinked packages via the
package-linkslist in the manifest.
- By default, the
.benderworking directory is now a subdirectory of the root working directory.
- Show checkout message only when actually checking out.
- Don't show the
--debugoption in release builds.
- Show message when checking out a repository.
- Show message when fetching from a git remote.
--debugoption for debug builds.
- Improved error messages when constraints cannot be met.
- Limit the number of concurrent git network activity to 8.
- Plugin packages can now be declared in the
pluginssection of the config. - Add the
packagefield to source groups. - Add the
bender configcommand to dump the tool configuration.
- Add plugin support. The manifest may now have a
pluginssection. - Add include directories and preprocessor defines support. These can now be specified for source groups.
- Add
overridessection to config. - Add target specifications for source files.
- Output of
bender sourcesis now JSON formatted. - Items in lock files have deterministic order.
- Add
sourcessection to manifest. - Add
bender sourcescommand to access the source file manifest of the root package and its dependencies.
- Dependency resolution only runs if lock file is older than manifest.
- Manifests of path dependencies are now read properly.
- Relative paths in config files are now treated as relative to the config file, not the current working directory.
- Only update git databases when manifest file changes.
- Only load manifests once per session.
- Only update checkouts once per session.
- Fix crash when dependencies have no manifest.
- Initial implementation of recursive dependency resolution.
- The
bender packagescommand to access the package dependency graph.
- Lockfile now contains the dependency names for each package.
- Help page now shows proper program name, version, and authors.
- Use
git archive | tar xf -to create checkouts.
- Fix creating a checkout of a branch.
- Fail gracefully if a dependency repository is empty.
- Initial support for checkouts.
- Resolution of the root package's dependencies.
- The
bender pathcommand to get a path to the checked out dependencies.