Finally I have done with the backtracking removal. Now doing semantic predicate is much easier. With this change, I successfully supported here document, which was the biggest blocker before I started this work. In addition, the performance is better. I used valgrind to get performance comparison. Here is the output of ms_print (post-processing tool for Massif) before and after backtracking removal: before, after. I reduced about 38% memory usage and got the library run 20% faster.
What I have done in the past week:
- Completed the work on the new parser and incorporated it to our project
- Improved parameter expansion parsing and its runtime
- Improved built-in and keyword test
- Improved the runtime for case statement
- Improved arithmetic expansion
- Improved the local built-in
- Fixed some minor problems in compound statement and parameter expansion
- Reimplemented the export built-in
- Removed several tokens to avoid conflicts
- Improved here document and here string
- Fixed single quoted string in command substitution
In the following week, I will:
- Get backtracking removal pushed
- Fix our instruo implementation (now it crashes with the new grammar)
- Improve process substitution
- Support redirection without any command
- Reimplement the local built-in
- Fix some minor problems in variable expansion and bash test
- Remove some composite tokens
I started working on this project early and I will start seeking a job soon (I’ll soon graduate from my university). So Petteri and I agreed to end the GSoC on 08.06. As a result, this is the last iteration of this year’s GSoC. I’ll write one more regular report and a final report before the end. I’ll continue my work on this project as soon as I get a job :).