In this popush development process, I am responsible for adding the Haskell file option in popush and ensuring that it can run normally. When I received this task, I felt a bit like a fantasy, far exceeding my personal abilities. Later in the development process, with the help of Li yinghui, we could also communicate with other groups of students, which provided positive and favorable factors for the completion of our tasks.
The first difficulty in this optimized development is how to correctly configure popush. One afternoon, Liu Borg started to configure popush, which was very efficient after three or four hours. Peng You has configured popush in Linux. Their smooth configuration laid the foundation for our work.
After logging on to the popush website, we found that it supports multiple languages. After connecting the external compiler, we can put the code in popush into the external compiler for compilation and running. At the beginning, we found that as long as the compiler of the corresponding language is installed and the path strength of the compiler is put into the system's environment variables, the code can be run on the popush platform. This inspired me and my companions. At the beginning, I tried to read some pictures or analyze some corresponding pictures on the front end, but I had no clue at all. The above revelation shows that different languages must be processed in the same way on the backend, and are described in arrays or case statements to a large extent. With this idea, we start searching files one by one until we find the runner under the models folder. in the JS file, find the long-awaited large case statement, and add the Haskell statement block to it.
However, this does not completely solve the problem, and the Haskell program still cannot run normally. And add the HS to app. runableext in the Data. js file. After linking the local compiler, You can compile the Haskell program in popush. However, we found that the original program can only be compiled and cannot be input in popush. This is almost useless for functional languages such as Haskell, this is because you need to enter the function name and parameters for the function to take effect. We will reflect this bug to the TA, and then the TA will reply to the original bug of popush. Yeah, this bug was first discovered by our team, which is inseparable from our meticulous and rigorous attitude.
Later, Ying Hui added the HS file's profile picture to make the interface more beautiful. This is the module we completed beyond the task. In terms of function testing, we tested the debugging and running of C and C ++, Ruby, Haskell, Python, Java, and file creation and deletion. Through these practices, we have roughly figured out the compilation principles in popush. First, identify whether the file is executable based on the document suffix. If yes, connect to the corresponding compiler during running and display the result on the delivered console. After eliminating the bug in popush, you can also enter it on the console.
In general, the optimization development was smooth and did not encounter too many difficulties, but also encountered some minor problems. Roar, popush optimization is over !!!
Haskell deployment for popush development optimization