| description | Page to follow the updates on Glider engine |
|---|---|
| icon | list-check |
Added functions:
- Add
with_globalsfunction inCallables - Add
with_operatorsfunction inInstructions - Add
with_globalsfunction inInstructions - Add
with_function_signaturefunction inContracts - Add
with_function_name_regexfunction inContracts - Add
with_function_name_suffixfunction inContracts - Add
with_function_name_prefixfunction inContracts - Add
with_all_function_signaturesfunction inContracts - Add
with_one_of_the_function_signaturesfunction inContracts - Add
without_function_signaturefunction inContracts - Add
without_function_signaturesfunction inContracts - Add
backward_dfto allValue(Call,IndexAccess,Literal,Operator,Value,ValueExpression,VarValue) classes - Add
forward_dfto allValue(Call,IndexAccess,Literal,Operator,Value,ValueExpression,VarValue) classes - Add
backward_df_recursiveto allValue(Call,IndexAccess,Literal,Operator,Value,ValueExpression,VarValue) classes - Add
forward_df_recursiveto allValue(Call,IndexAccess,Literal,Operator,Value,ValueExpression,VarValue) classes - Add
is_in_loop_recursivefunction inInstruction - Add
is_taintedfunction inValue - Add
is_taintedfunction inPoint - Add
loopsfunction inFunction
Refactoring:
- Renamed all instances of
extendedtorecursive- Example:
extended_backward_df→backward_df_recursive
- Example:
Improvements:
- Optimized all
recursive(formerlyextended) functions, achieving approximately 4× performance improvement.
Added functions:
- Add
filterfunction inAPIIterable
Refactoring:
- Make some functions deprecated:
Functions::with_all_propertiesFunctions::with_one_propertyFunctions::without_properties
Bug fixes:
- Add
source_codefor all entities
Added functions:
- Added
Modifier::properties() - Added
StateVariable::is_accessible
Refactoring:
- Changed return types of some functions from
APIListtoAPISetnext_instructionsprevious_instructionprevious_instructionsforward_dfbackward_dfextended_forward_dfextended_backward_df
- Update
APIIterableimplementation:- Now any function, that retunrs any
APIIterable, that called onAPIIterablebe flattened - Exlude
NoneObjectsform theAPIIterable
- Now any function, that retunrs any
Bug fixes:
extended_backward_df/has_extended_global_dfdoes not returnstate_vars(when the state var is declared in base contracts) Nowextended_backward_df/has_extended_global_dfwill work for inherited private variables too.- Fixed TypeError:
NoneObjectobject is not iterable
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_instructionsfunction
Added functions:
- Added
Functions::with_properties_considering_modifiers - Added
ArgumentPointclass - Added
StatePointclass - Added
GlobalPointclasses - Added custom iterables. Now there are,
APIList,APISetandAPITuple.
Refactoring:
- Rename class
VartoVarValue - 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.
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/modifierswith custom property expressionFunctions::with_properties()Functions::with_modifier_properties()Modifiers::with_properties()- Added
HAS_GLOBAL_VARIABLES_READforfunctions/modifierspropetry expression - Example:
Functions::with_modifier_properties(HAS_ARGS & (~HAS_CALLEES | IS_PRIVATE))
- Added
Callable::new_contract_instructionsandInstructions::new_contract_instructionsfunctions to getinstructionsthat create a new contract. Also addedInstruction::is_new_contractfunction - Added
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_tuplereturnsValue
Bug fixes:
- Added missing return data types
- Fixed bug in the data flow graph
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.