Replies: 4 comments 22 replies
-
User changes:
Dev changes:
The above points come mainly from having moved to tree-sitter and a proper grammar (which is still not perfect, but it can be easily improved and there are tests even at the grammar level, see When we talk about "newshell" though, we talk also about the new way commands are registered to the system. In oldshell the input is parsed char-by-char with nested switch-case nested in other switch-cases until the proper code is reached. That code usually has to handle itself the arguments, split them, escape/unescape, check if there are the right number of arguments, etc. Moreover, you could never really know, in the code, whether a command exists or not. User changes:
Developer changes:
This is what I can think about right now. |
Beta Was this translation helpful? Give feedback.
-
Ah, as a side effect we also have the possibility for RzCorePlugins to actually register new commands when they are loaded, which allows us to list those commands in the same way as all the other commands, provide autocompletion for them easily and all the benefits of the more rigid parser (e.g. quoting, etc.). Before, a core plugin had a For example, see the |
Beta Was this translation helpful? Give feedback.
-
Actually... my bad I did not notice you just mentioned changes for 0.1.1 :( :( I haven't checked yet but I don't think there are major changes compared to 0.1.0 |
Beta Was this translation helpful? Give feedback.
-
Note, that 0.1.1 has been released: https://github.com/rizinorg/rizin/releases/tag/v0.1.1 |
Beta Was this translation helpful? Give feedback.
-
@ret2libc mentioned in Mattermost that the following wizardry works thanks to the newshell changes:
(_;?en Function: ;fd.;pi 1 @@b;?e)() @@F:fcn.000182*
(command chaining works).While that seems like what every console hacker would dream of, I'm curious to learn what other magic can be performed with the new changes (and vs oldshell).
This said, I think this could be the place to start recording the new functionality so that the 0.1.1 newshell release notes (and later the Rizin's book newshell chapter) won't be so boring to write 🙂
Beta Was this translation helpful? Give feedback.
All reactions