Changelog#
4.13.2 (Nov 14, 2024)#
Fixes:
- fixed coverage collection in multiprocess testing [testing framework]
4.13.1 (Nov 4, 2024)#
Fixes:
- fixed non-deterministic pytypes generation for source files under multiple different source unit names [testing & deployment framework]
- fixed pytypes generation for source units with dots in their names [testing & deployment framework]
- fixed
tx
not assigned on error that could not be resolved [testing & deployment framework] - fixed latest supported tx type not properly detected with Anvil caused by breaking change in Anvil [testing framework]
- fixed base fee parsing with Anvil caused by breaking change in Anvil [testing framework]
4.13.0 (Oct 14, 2024)#
Features & improvements:
- added support for Solidity 0.8.28 [core]
- Github is now used as a secondary source of solc binaries [core]
- added support for compilation metadata settings [core]
- optimized compilation with
solc
>= 0.8.28 on CLI [core]
Fixes:
- fixed language server crash on editing files removed on disk but still opened in IDE [language server]
- fixed compilation of Etherscan contracts [testing framework]
4.12.1 (Oct 7, 2024)#
Fixes & improvements:
- fixed removal of errored files from compilation build [core]
- fixed AST node indexing of multiple structurally different ASTs [core]
- fixed crashes on non-utf8 files present in workspace on compilation [core]
- increased timeouts for solc binary installation [core]
- fixed LSP features not available for files without workspace [language server]
- improved error logging of LSP subprocesses [language server]
- Anvil is now also being searched in standard
~/.foundry/bin
directory [testing framework]
4.12.0 (Oct 2, 2024)#
Features & improvements:
- added support for Solidity 0.8.27 [core]
- implemented
wake compile
andwake detect
JSON export [core] - introduced support for subprojects compilation [core]
- added initial support for LSP 3.18 specification [language server]
- injected
wake_random_seed
variable into debugger instances [testing framework] - transaction revert and EVM halt errors are now properly distinguished with Anvil [testing framework]
Fixes:
- fixed
wake detect
detection code snippets trailing blank lines [core] - fixed Deploy & Interact compilation of contracts without provided bytecode [language server]
KeyboardInterrupt
is now handled correctly in multiprocess testing [testing framework]breakpoint
is now supported in multiprocess testing [testing framework]
4.11.1 (Aug 26, 2024)#
Changes:
- Wake now does not scan for Solidity files in hidden directories both in CLI and LSP [core]
Fixes:
- fixed exception when accessing
Assignment.assigned_variables
for array access with base enclosed in parentheses [core] - fixed indexing of Solidity AST compiled with both >=0.8 and <0.8 versions with AST node represented by
IdentifierPath
in >=0.8 andIdentifier
in <0.8 [core] - fixed memory not always available in call traces in LSP contract deployment & interaction [language server]
- fixed
FileNotFoundError
when scanning for Solidity files in LSP [language server]
4.11.0 (Aug 13, 2024)#
Features & improvements:
- improved merging of compilation units in context of min. supported version and target version set in config [core]
- CLI does not raise exception on compilation of files with Solidity version lower than min. supported version [core]
- Wake IR now uses weak references to avoid cyclic references preventing garbage collection [core]
- improved error messages when Rosetta is not enabled on macOS [core]
- added optional
--incremental
CLI option towake up
commands [core] - introduced API for deployment & interaction with Solidity contracts through LSP [language server]
- language server now watches for external changes to Solidity files (e.g. through git branch switch) and recompiles automatically [language server]
- improved language server RAM usage [language server]
- improved language server responsiveness, especially when recompiling [language server]
- improved multiprocessing test status messages [testing framework]
Fixes:
- added
certifi
dependency on macOS - should resolve SSL certificates error when downloading solc binaries [core] - fixed imported source unit removed from build artifacts while importing source unit kept in build artifacts [core]
- fixed variable name location parsing when variable has empty name [core]
- fixed sending compilation build to detectors/printers subprocess causing crashes due to build size & cyclic references [language server]
- fixed multiple memory leaks in LSP [language server]
- fixed LSP
mcopy
definition - thanks to @madlabman [language server] - fixed language server crashes due to unexpected code action kinds [language server]
- fixed race conditions when creating language server context and initialising server [language server]
- fixed LSP watchdog URI format causing crashes in Neovim [language server]
- fixed multiple other LSP compilation bugs [language server]
- fixed max. supported tx type detection with DRPC node [deployment framework]
- fixed
.selector
types in pytypes (bytes4
andbytes32
instead ofbytes
) [testing & deployment framework]
4.10.1 (Jun 11, 2024)#
Fixes:
- fixed language server unicode decoding crash when trying to read from non-existent files [language server]
- fixed Yul definitions of
shl
,shr
andsar
instructions inlsp-yul-definitions
printer [language server] - fixed handling of language server subprocess crashes [language server]
4.10.0 (Jun 11, 2024)#
Features & improvements:
- implemented abi encoding & decoding of errors [testing framework]
- included standard Solidity interfaces, Create3 deployer and ERC-1967 factory into bundled-in contracts [testing framework]
- detectors & printers now run in subprocesses in LSP [language server]
- implemented LSP workspace symbols feature [language server]
- added support for Solidity 0.8.26 [core]
- implemented
exclude
andonly
config options for printers [core]
Changes:
- improved
random_int
documentation & incorrect value checking [testing framework] - changed
__str__
and__repr__
ofAccount
for easier debugging [testing framework] - code lens LSP features re-implemented as LSP printers + created docs [language server]
- dropped support for Python 3.7 [core]
- upgraded pydantic to 2.x [core]
Fixes:
- fixed pickling error when encoding dataclasses using new abi encoder [testing framework]
- fixed file descriptors leak in LSP [language server]
- fixed misbehavior of LSP configuration key removal [language server]
- fixed LSP connection crash due to incorrect content length with unicode characters [language server]
- fixed rare compilation pipeline crash with multiple solc versions [core]
- fixed
wake detect
&wake print
commands with latestrich-click
[cli]
4.9.0 (Apr 25, 2024)#
Features & improvements:
- new
deploy
method for contract deployment from creation code [testing framework] - introduced alias
chain = default_chain
[testing framework] chain.txs
can now be indexed with numbers [testing framework]chain.chain_id
is now cast touint256
[testing framework]
Fixes:
- fixed process count setting for collecting coverage [testing framework]
- fixed pytypes generator overloading + inheritance issue [testing framework]
- fixed LSP race conditions on files updated outside of IDE (VS Code) [language server]
- fixed
add_hover_from_offsets
LSP printers API function [language server] - fixed
is_reachable
is control flow graph [static analysis] - fixed recursion in
expression_is_only_owner
function [static analysis] - fixed regex parsing from source code containing comments [core]
4.8.0 (Apr 5, 2024)#
Features & improvements:
- implemented callback commands for LSP printers
- go to locations, peek locations, open URI, copy to clipboard
- Wake
console.log
is now tread as library (in respect to detectors) - Wake
console.log
is now auto-completed in Solidity imports through LSP - random seeds used in testing are now printed in pytest summary
- documented possible test reproducibility issues and their solutions
Fixes:
- fixed empty array encoding in new abi coder
- Python warning messages are suppressed in shell completions
- fixed LSP config loading race conditions
- newly excluded Solidity files in LSP are now treated as deleted (fixes LSP crashes)
- primitive types (e.g.
bytes32
) are now returned fromkeccak256
andread_storage_variable
- fixed
get_variable_declarations_from_expression
recursion bug
4.7.0 (Mar 16, 2024)#
Features:
- added support for Solidity 0.8.25
Fixes:
- fixed compilation crashes when using Solidity
log0
-log4
- fixed compilation crashes when using
bytes.pop()
- fixed
random
affected bylogging
- created customRandom
instance - fixed compilation crashes in AST validation with Solidity <= 0.7.2
4.6.0 (Mar 13, 2024)#
Features:
- added
visit_
functions for base classes to visitors - added
on_revert
handler example to the default test template - IR types (
wake.ir.types
) are now strictly comparable - improved printing of structs and errors in call traces
- updated
axelar-proxy-contract-id
detector mint_erc20
,burn_erc20
now works with constant total supply tokens (warning is printed that total supply cannot be updated)
Fixes:
- fixed multiple issues in call traces printing
- fixed Python linter firing when using pytypes with new version of primitives types (
uint256
, etc.) - fixed the type of
.min
.max
members of primitive integer types - fixed
is_reachable
helper function inControlFlowGraph
4.5.1 (Feb 17, 2024)#
Fixes:
ValueError
is no longer raised for experimentalabi.encode_with_signature
andabi.encode_call
with ambiguous integers- fixed
mint_erc20
/burn_erc20
for most tokens
4.5.0 (Feb 12, 2024)#
Features:
- Accounts / contracts can now be created without
default_chain
connected - added new
unsafe-erc20-call
detector - added support for named arguments in call traces
reprlib
is used again in call traces, full call traces can be enabled with-v
CLI option- added alias
-h
for--help
on command-line - added
.min
and.max
members to int/uint types - added new experimental
abi
coder
Fixes:
- fixed coverage collection with new Anvil
- fixed coverage collection on macOS/Windows
- fixed ambiguous errors resolving when reverting in contract constructor
- fixed ERC- slots detection using storage layout
- fixed debugger attachment when chain is not connected
4.4.1 (Jan 30, 2024)#
Fixes:
- changed detectors/printers preview interface causing
__init__
and click entry points being run even when not intended to be run on CLI / in LSP- fixes
OSError(30, 'Read-only file system')
error messages in LSP on macOS
- fixes
- fixed compiling projects from sources on Etherscan-like explorers in testing framework helper functions
4.4.0 (Jan 27, 2024)#
Features:
- Solidity 0.8.24 support
- LSP providers in detectors and printers (preview)
ErrorDefinition
andEventDefinition
are now supported inpair_function_call_arguments
helper function
Fixes:
- fixed
pair_function_call_arguments
- struct construction with (possibly nested) mapping in Solidity < 0.7 - fixed LSP crash on file opened but not saved on disk
4.3.2 (Jan 23, 2024)#
Fixes:
- fixed issue when generating pytypes for cyclically imported Solidity files with inheritance
- fixed
wake test
multiprocessing mode on macOS and Windows
4.3.1 (Jan 9, 2024)#
Fixes:
- fixed
wake test
multiprocessing mode when running more than one test - fixed global TOML config file not always loaded with local
wake.toml
in LSP - fixed counter example README
4.3.0 (Dec 24, 2023)#
Features:
- print warnings when a detector set in config options is not discovered (both on the CLI and in LSP)
- added new
complex-struct-getter
andstruct-mapping-deletion
detectors - added new
c3-linearization
printer - re-run detectors after modifying a loaded detector
Fixes:
- fixed Yul
return
ignored in the control flow graph - fixed
AssertionError
in call traces when running out of gas - fixed
abi-encode-with-signature
detector when processing signatures with nested brackets - fixed detectors were not re-run after changing a detector-specific setting
- bumped
abch-tree-sitter
minimal version, fixing the language server crashes caused bydistutils
not being available in Python 3.12
4.2.0 (Dec 11, 2023)#
Features:
wake open
command to open any Github or Etherscan-like projectwake up
alias forwake init
- new
unused-function
andunused-modifier
detectors - helper functions for working with storage variables now can handle whole arrays and structs
wake detect
andwake print
commands now accept--theme
options
Changes:
- changed
unused-import
detections impact from warning to info
Fixes:
- fixed compiler crashes when using SMTChecker
4.1.2 (Dec 3 , 2023)#
Fixes:
solc
binaries are automatically re-installed if corrupted- added
--silent
mode to fix LSP server crashes on Windows because of unicode
4.1.1 (Nov 28, 2023)#
- fixed script responsible for migration to XDG paths when the global config file already exists
- fixed assertion error in ownable pattern detection, manifested mainly by
reentrancy
detector crashes
4.1.0 (Nov 28, 2023)#
- added new printers:
control-flow-graph
imports-graph
inheritance-graph
inheritance-tree
modifiers
state-changes
lsp_range
and IR declarationname_location
are now used in SARIF export- implemented
SolidityName
Click parameter type for Solidity name shell completions - improved
wake detect
andwake print
help messages - added a new
Command-line interface
docs page under the static analysis section - state changes are now evaluated even for Yul blocks
- fixed crashes caused by
YulLiteral.value
being unset
4.0.1 (Nov 22, 2023)#
- fixed SARIF export crashing in Github action
- fixed
wake detect
incorrect exit codes - fixed exporting ignored detections in SARIF format
- minor changes to the documentation
4.0.0 (Nov 20, 2023)#
-
reviewed, updated and documented IR model
- all IR nodes are now documented, generated docs available in API reference section
- added link to SourceUnit from all IR nodes
- added link to nearest StatementAbc from all expressions
- added link to declaration (FunctionDefinition/ModifierDefinition) from all statements
- added link to InlineAssembly from all Yul nodes
-
updated control flow graph
- Yul is now fully supported; InlineAssembly blocks are now decomposed into Yul statemenets
- successful execution and reverting execution is now distinguished in control flow graph
- assert/require/revert function calls are now handled (including these calls in conditionals)
- fixed missing edge for in try/catch statement
-
development & testing framework
- all default accounts (
default_tx_account
,default_call_account
,default_estimate_account
,default_access_list_account
) are now set by default may_revert
andmust_revert
context managers now re-raise original exception when it does not match one of arguments- significantly improved performance when accessing
tx.events
- improved event resolving algorithm
- added
origin
field to all events, describing contract Account that emitted event - improved forked chain ID detection
fuzz
command was integrated intotest
command- both single-process and multi-process tests now use pytest
- running tests without pytest is still supported with
--no-pytest
flag
- running tests without pytest is still supported with
- all default accounts (
-
added support for Solidity 0.8.21, 0.8.22 and 0.8.23
- added experimental support for Python 3.12
- rebranded from Woke to Wake
- implemented automatic migration script for migrating project-specific and global files
- all CLI commands now accept
--config
option for setting local config path - implemented
svm install --all
to install all matching solc versions - renamed
ignore_paths
config options toexclude_paths
- automatic migration script performs automatic renaming
- all solc optimizer settings may now be configured
-
implemented new
wake init config
command for initializing only config file -
new detectors & printers API
- printers are similar to detectors but allow printing (or exporting in other ways) any useful information
- users may create custom detectors & printers using documented API
- may be project-specific, global and loaded from plugin packages
- project-specific detectors/printers must be first confirmed as verified to protect users downloading others (potentially malicious) projects
- both detectors and printers may accept any number of Click options and arguments that can be set in CLI, ENV variables and TOML files
- detector results and compiler warnings may be ignored using
// wake-disable-*
comments - loading priorities may be specified for multiple detectors/printers with the same name loaded from multiple plugin packages
wake.analysis
,wake.ir
andnetworkx
are now imported as lazy modules to improve auto-completions speed in CLI- detectors cannot crash LSP server or prevent other detectors from executing, errors are reported to LSP clients
logging
module logger attached to each detector/printer; logging messages are redirected to LSP client when running LSP server- detectors are live-reloaded after modifications when running LSP server, no need to restart LSP server to trigger changes
- added helper CLI and LSP commands for creating new detector/printer from template
- added more export formats to detectors and printers
- both detectors and printers may be launched in
--watch
mode - implemented export to SARIF format for detectors
- detectors may now assign dynamic impact & confidence per-detection
-
implemented ready-to-use printers
abi
for exporting contract ABIstorage-layout
for printing contract storage layouttokens
for finding all ERC-20/ERC-721/ERC-1155 tokens in project
- improved existing detectors
- implemented new detectors
abi-encode-with-signature
for detecting invalid ABI signaturesincorrect-interface
for detecting incorrectly implemented ERC-20/ERC-721/ERC-1155 interfaceunused-import
for finding unused imports