Changelog
Page to follow the updates on Glider engine
V1.0
API
Added functions:
Add
with_globals
function inCallables
Add
with_operators
function inInstructions
Add
with_globals
function inInstructions
Add
with_function_signature
function inContracts
Add
with_function_name_regex
function inContracts
Add
with_function_name_suffix
function inContracts
Add
with_function_name_prefix
function inContracts
Add
with_all_function_signatures
function inContracts
Add
with_one_of_the_function_signatures
function inContracts
Add
without_function_signature
function inContracts
Add
without_function_signatures
function inContracts
Add
backward_df
to allValue
(Call
,IndexAccess
,Literal
,Operator
,Value
,ValueExpression
,VarValue
) classesAdd
forward_df
to allValue
(Call
,IndexAccess
,Literal
,Operator
,Value
,ValueExpression
,VarValue
) classesAdd
backward_df_recursive
to allValue
(Call
,IndexAccess
,Literal
,Operator
,Value
,ValueExpression
,VarValue
) classesAdd
forward_df_recursive
to allValue
(Call
,IndexAccess
,Literal
,Operator
,Value
,ValueExpression
,VarValue
) classesAdd
is_in_loop_recursive
function inInstruction
Add
is_tainted
function inValue
Add
is_tainted
function inPoint
Add
loops
function inFunction
Refactoring:
Renamed all instances of
extended
torecursive
Example:
extended_backward_df
→backward_df_recursive
Improvements:
Optimized all
recursive
(formerlyextended
) functions, achieving approximately 4× performance improvement.
V0.9(28.08.2024):
API
Added functions:
Add
filter
function inAPIIterable
Refactoring:
Make some functions deprecated:
Functions::with_all_properties
Functions::with_one_property
Functions::without_properties
Bug fixes:
Add
source_code
for all entities
V0.8(23.08.2024):
API
Added functions:
Added
Modifier::properties()
Added
StateVariable::is_accessible
Refactoring:
Changed return types of some functions from
APIList
toAPISet
next_instructions
previous_instruction
previous_instructions
forward_df
backward_df
extended_forward_df
extended_backward_df
Update
APIIterable
implementation:Now any function, that retunrs any
APIIterable
, that called onAPIIterable
be flattenedExlude
NoneObjects
form theAPIIterable
Bug fixes:
extended_backward_df
/has_extended_global_df
does not returnstate_vars
(when the state var is declared in base contracts) Nowextended_backward_df
/has_extended_global_df
will work for inherited private variables too.Fixed TypeError:
NoneObject
object is not iterable
V0.7(01.08.2024):
API
Added functions:
Added
Point::has_extended_global_df
Refactoring:
Added types for
Values
Bug fixes:
Take into account the functions called when calling
Instruction::extended_backward_df
.Take into account the functions called when calling
Instruction::extended_backward_df
.Fixed
extended_forward_df
. It couldn’t go through the multiple chain of calls
Optimizations:
Optimized (about 10%)
extended_next_instructions
function
V0.6(09.07.2024):
API
Added functions:
Added
Functions::with_properties_considering_modifiers
Added
ArgumentPoint
classAdded
StatePoint
classAdded
GlobalPoint
classesAdded custom iterables. Now there are,
APIList
,APISet
andAPITuple
.
Refactoring:
Rename class
Var
toVarValue
Rename a function
Vars::get_definig_nodes
->Vars::get_definig_points
. Also, the return type has changed. Now it is possible to use it as an API function.Changed the return type of
Contract::errors()
fromList["api.Error"]
to"api.Errors"
Bug fixes:
Take into account called functions when calling
Instruction::extended_previous_instructions
. The algorithm includes the instructions of called functions too.
V0.5(21.06.2024):
API
Added functions:
Added
AssemblyInstruction::get_block_instructions
Added global taint sources -
MSG_SENDER
,MSG_VALUE
,BLOCK_TIMESTAMP
,NOW
,TX_ORIGIN
Added API functions to filter
functions
/modifiers
with custom property expressionFunctions::with_properties()
Functions::with_modifier_properties()
Modifiers::with_properties()
Added
HAS_GLOBAL_VARIABLES_READ
forfunctions
/modifiers
propetry expressionExample:
Functions::with_modifier_properties(HAS_ARGS & (~HAS_CALLEES | IS_PRIVATE))
Added
Callable::new_contract_instructions
andInstructions::new_contract_instructions
functions to getinstructions
that create a new contract. Also addedInstruction::is_new_contract
functionAdded
Callables::extended_callee_functions
Added
Functions::extended_caller_functions
Added
Functions::extended_caller_modifiers
Refactoring
Removed
Instrucitons::asm_instructions()
Made Instruction's operands single
Value
Function::return_tuple
returnsValue
Bug fixes:
Added missing return data types
Fixed bug in the data flow graph
V0.4(16.05.2024):
API
Added functions:
Callable.extended_callee_functions()
Callable.extended_instructions()
Function.extended_caller_functions()
Functions.with_declarer_contract_name()
Value.get_state_vars()
Value.get_local_vars()
Value.get_global_vars()
Value.get_arg_vars()
Value.get_vars()
Refactorings:
Introduced a common base class Variable
function name refactorings
entity names and type and similar fields became properties (methods before)
ConditionalExpression is removed, and the ValueExpression-s will express that instead.
Bug fixes:
modifier property filter bug fix
different fixes with Value/Call functionality
fixes in extended* functions
Optimizations:
Implemented query caching; this works only for the DB query part. Whenever a user runs a query, the DB query (declarative) part will get cached for some time, and the next run will return the DB output instantly. This hugely improves the process of writing queries as usually the most debugging is done after the DB results are fetched, e.g. on dataflow checks. The cache is global, so in case one user has already queried the exact same thing, other users will not wait for the result as well
Query translation optimizations
Query execution optimization.
Last updated