Closed bdeneux closed 1 month ago
The recent changes enhance the functionality and configurability of a Go project, particularly within the Prolog interpreter and its associated components. Key updates include the introduction of a maximum variable limit, improvements in error handling, and the adoption of ordered maps for better predicate management. These enhancements streamline resource management and improve testing capabilities, thereby refining overall performance and robustness.
Files | Change Summary |
---|---|
go.mod |
Added new dependencies and replaced a Prolog interpreter library. |
proto/.../params.proto |
Introduced max_variables field in Limits message to set a limit on variable creation. |
x/logic/interpreter/interpreter.go |
Added WithMaxVariables function and modified interpreter initialization for better configurability. |
x/logic/interpreter/registry.go |
Switched from a standard map to an ordered map for preserving predicate order. |
x/logic/keeper/features/*.feature |
Updated gas_used values in multiple feature tests to reflect adjusted performance metrics. |
x/logic/keeper/grpc_query_ask_test.go |
Added maxVariables to tests and updated expected error messages for resource limits. |
x/logic/keeper/grpc_query_params_test.go |
Invoked WithMaxVariables in test case for parameter validation. |
x/logic/keeper/interpreter.go |
Updated newInterpreter to accept max variable limit for improved resource management. |
x/logic/prolog/tuple.go |
Changed tuple representation from engine.Atom(0) to engine.Atom("") . |
x/logic/types/params.go |
Introduced DefaultMaxVariables and a new function WithMaxVariables for limit management. |
x/logic/types/params_test.go |
Added WithMaxVariables in TestValidateParams to enforce stricter validation. |
x/logic/util/prolog.go |
Enhanced error handling in QueryInterpreter for more precise error reporting. |
sequenceDiagram
participant User
participant Interpreter
participant ErrorHandler
User->>Interpreter: Execute query with variables
Interpreter->>ErrorHandler: Check for variable limits
ErrorHandler-->>Interpreter: Return error if limit exceeded
Interpreter-->>User: Return results or error
π° "In the garden where ideas bloom,
New variables dance, dispelling gloom.
With ordered maps and limits set,
Our Prolog tales are not done yet!
Letβs hop along, with joy we cheer,
For every change brings us near!" β¨
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
@amimart This PR is now ready until we release axone-protocol/prolog π
Attention: Patch coverage is 54.54545%
with 5 lines
in your changes missing coverage. Please review.
@@ Coverage Diff @@
## main #703 +/- ##
==========================================
+ Coverage 54.37% 54.42% +0.05%
==========================================
Files 73 73
Lines 2893 2901 +8
==========================================
+ Hits 1573 1579 +6
- Misses 1226 1228 +2
Partials 94 94
Files | Coverage Ξ | |
---|---|---|
x/logic/keeper/interpreter.go | 94.80% <100.00%> (+0.06%) |
:arrow_up: |
x/logic/types/params.go | 94.73% <100.00%> (+0.37%) |
:arrow_up: |
x/logic/prolog/tuple.go | 0.00% <0.00%> (ΓΈ) |
|
x/logic/util/prolog.go | 0.00% <0.00%> (ΓΈ) |
π Description
This PR replace ichiban/prolog module with our own fork axone-protocol/prolog. By doing this, since it's contains breaking changes, we need to align current implementation with this new module.
π¨π»βπ§ Fixes
This fork contains fixes for those issues :
π©βπ» Related development
MaxVariables
parameter in logic module limits params. By default,MaxVariables
limits has been set to100 000
. The related commit message include the breaking changes marker (https://github.com/axone-protocol/axoned/pull/703/commits/ab8f734cf349165ba7780cb498d6221bbeaa7346).Summary by CodeRabbit
New Features
Bug Fixes
Tests
Chores